We are excited to participate in GCI again for our fourth year with pre-university students! We have tasks that are: fun, useful, educational… and for all levels and interests - coding, design, documentation, UI, research and much more!
Check out our page on the Code-in website!Visit us!
This is going to be another absolutely amazing GCI year! We have a long and proud history of taking part in the Google Summer of Code with university students, and are excited to participate in GCI again for the 4th year with pre-university students!
While it is completely optional, it is highly recommended that you join our Slack group. All the mentors, org admins, contributors and fellow GCI participants hang out in that group. That's the best place to get quick answers to any query or problem you might have.
*Current Page Updated for GCI 2019
How much wood could a woodchuck chuck if a woodchuck could chuck wood?
Request an invitation using this form:
We have tasks in all categories—coding, documentation, research, design and outreach. Some even
revolve around the intersection of those categories. We're experimenting with new, exciting stuff
this year along with our existing projects.
Read on to know more about what we have planned:
Rust is a relatively new language created by Mozilla (yes, the Firefox guys) to replace C. It's a super fast language that has the advantages of C but solves most of its problems. Rust is consistently chosen as the most loved language in the most popular developer platform, stackoverflow.
If you haven't heard about Rust - don't worry! Just know that it's one of the languages of the future, and if you want to get started on a new language, you may want to pick one that is sure to be really popular in the near future, but before everybody else starts on it.
We'll have many tasks that are about getting started, and we'll progress to interesting exercises as GCI advances.
Flutter is Google's new platform for multi platform development. Multi platform means that what you write on Flutter runs on Android, iOS (for iPhones) and Web.
We're going to get our feet wet, starting by following some great tutorials (of which there is no shortage of for Flutter) with small modifications, and then we'll start writing our own Flutter applications.
We have lots of ideas but we welcome suggestions - if as you learn Flutter you come up with a great project you'd like to work on, let us know. We'll be happy to add it tasks for it.
CCExtractor is our core tool and the one that started our community. It's the first (possibly still only) complete open source tool to provide subtitle files from TV recordings or broadcasts, DVDs, and more. It supports most of the subtitle standards around the TV, both digital and analog, and it's used by a lot of media companies around the world. If you've ever downloaded a subtitle file (typically, a .srt) to watch something with subtitles, almost certainly CCExtractor was involved in the process to produce that file.
While CCExtractor already works well and does what we need, we do have some feature requests and bugs to fix, and that's where you can come in. If you like puzzles, analysis, love getting into problems that you don't know in advance how complex they are, this is your area.
In general working on CCExtractor itself requires collaborating a lot with mentors and CCExtractor users. For the non-easy tasks we'll work together to come up with a plan and we'll help you "get there". But in the end, if you decide to do something we'll be there to help you but be ready to give your best!
We can't list tasks yet, but if you check out our GitHub issues you can get an idea of how they are going to look like: Many will be about fixing things or adding new features.
We use a lot of Python! From web applications in Flask to libraries and packages, there are so many cool things in store for you to work on. You can expect to learn about CI/CD platforms, unit testing, and other fun stuff. Don't worry if all of it feels new to you—we'll also have beginner tasks to help you get started!
FFmpeg is the swiss army knife tool for video manipulation. Do you need to cut a video? Resize it? Convert it to a different format? Make it black and white? Remove or add a language track? FFmpeg will do that.
FFmpeg has libraries that lets you use all its power in your own programs. And that's we are going to be working on: Not just learning the basics of FFmpeg as a program, but its internal as libraries we can use.
Video software engineers are on high demand and they all use FFmpeg, but not so many really know how it works internally. So let's do something that makes us better!
For tasks that require some resources in general we will provide them for you, including access to videos, system accounts, etc.
We can't stress this enough: Winners are those that do the hard tasks. Amount of tasks is not so important.
Collaboration is much better than competition. We prize community involvement highly and would love for you to be a part of it.
Mentors love it when a student comes up with a better idea than their own, really. Do not just do as told. If something doesn't feel right either argue against it (politely of course) or work on a different area.
If you want to do something that is 90% or so implemented in any other open source project just take it, complete it, send the maintainers of that project whatever changes you did so they can use them if they want, and integrate with our code. Always remember to leave all license and credits intact (you can add your own name).
Mentors are there to help but they're people too, not bots. So they sleep from time to time, may also have other things going on, can get sick, etc. They will reciprocate when they think of students.
Whatever you do, we want to integrate. This means that your work will be public and will be around for a long time. In a few years you will find your own code again (code tends to follow you). Try to leave it in a condition that the future you will be proud of.
Be mindful of your own privacy. Yes, we're a friendly bunch and you'll get to know us and we'll get to know you in our community. That's different from posting your real name publicly everywhere.
Remember that the absolute best way to get invited by an organization to participate in Google Summer of Code is by being part of the community before GSoC is even announced. If we, as an organization, are invited to GSoC 2020 the applications from successful Code-in students will go to the top of pile.
We also give back to our students in any way we can, including writing recommendation letters that can help to apply to universities, visas, jobs and so on.
In short - don't think that the reward for participating this year may be limited to a t-shirt 😉
Complete any 10 Rust tasks and we'll send you a book on Rust anywhere in the world (that Amazon ships to).
Complete any 10 Flutter tasks and we'll send you a book on Flutter anywhere in the world (that Amazon ships to).
Get 5 pull requests merged into the main CCExtractor repository and we will pay for any online course you want, up to $150.
We are doing this to prevent the design tasks being treated just as an easy way to complete beginner tasks. For example, you can create a T-Shirt design in 10 minutes, but that's very unlikely to be good and usable to well, actually make T-Shirts with it.
We did this in 2017 and 2018 and got some amazing results. One of our winners from 2017 did some major design tasks including the current organization logo and the site you are on right now
was designed last year.
Remember though that hard means hard. Don't expect us to approve the first design you come up with. We will give you feedback and work with you until you produce something that you can be proud of for years and that we can use.
Yes, we get this from time to time 🙂 We know there's lots of cool languages out there, many really easy to start with, and well, C is not one of them. But the thing is, the most performance critical tools are written in C, such as the Linux kernel, or FFmpeg, or… you get the idea. A tool that needs to process lots of data (such as video) just needs to be as efficient as possible.
We do have auxiliary tools written in different languages, for example the Windows GUI is written in C#, and we have lots of Python as well. But the core CCExtractor tool is in C. Should you learn C then? Well, depends on how serious you are with IT in general. By learning it you will learn a lot of how things really work - without using all the magic that higher level languages provide.
We think that the best way to let you know how cool Code-in is is to show you a video of previous winners. This was at Google's office in San Francisco in 2017, where Evgeny and Alexandru (which are of course now core developers at CCExtractor) presented what they did during GCI 2016!
And Aadi and Shiyuan (also core team members now as well as GCI mentors) in 2018:
And Matej and Ivan (also GCI mentors) in 2019: