Google Summer of Code in 10 Minutes: A Crash Course
Every year since its inception in 2005, Google organizes an annual program called the Google Summer of Code (GSoC), wherein students work on open source projects of various organizations during the summer. The GSoC is for students over 18, and its counterpart for high school kids is Google Code-In.
After the program is announced for each year, open source organizations first submit their applications to Google to be selected as mentoring organizations. Once mentoring organizations are announced, students submit detailed proposals to work on the projects of the selected organizations. The selected students then code during the summer, working with their respective mentors to complete their projects. On successful competition of the project, Google pays each student developer a stipend of US DOLLAR 5500, and US DOLLAR 500 for each successful project goes to the mentoring organizations. Did I just get your attention?
Understanding the GSoC 2015 Timeline
Before we go on to the general guidelines of getting selected for a project, let’s look at the timeline of the GSoC 2015 program. I’ll be discussing the events that are relevant to students, and the detailed timeline can be found on the Melange site.
- 2 March: List of accepted mentoring organizations published on the Google Summer of Code 2015 site.
- 16 March: Student application period opens.
- 27 March: Student application deadline.
The period of 2nd March to 27th March is of utmost importance to students who wish to get through. This is the time when you decide which organizations to work on, connect with the mentors of the project and prepare your proposals to be reviewed by your mentors. By 27th March, you must have submitted your proposal on the Melange site, after which your proposal is locked. If, however, you find mistakes in your proposal, you may ask your mentoring organization to make it editable.
- 15 April: Slot allocations published to mentoring organizations.
Although the mentoring organizations are announced earlier, the number of projects for each organization is done later. By 15th April, your mentoring organization would know how many students it should accept for the summer. This information is not declared publicly, but you may ask your mentor about it to know your chances of selection.
- 21 April: First round of de-duplication checks happens; organizations work together to try to resolve as many duplicates as possible.
A student is allowed to submit at most five proposals to the program under various organizations. It is therefore possible that two or more proposals are selected. But a student can work on only one project during the summer as per the rules of the program. So the organizations try to resolve it first among themselves, or ask the student which project they would like to work on.
- 27 April: Accepted student proposals announced on the Google Summer of Code 2015 site.
- 25 May: Students begin coding for their Google Summer of Code projects;
Google begins issuing initial student payments provided tax forms are on file and students are in good standing with their communities.
The time between the announcement of selected students and the beginning of the coding period is called the ‘community bonding period’. Google recommends that you spend the time getting to know people on the mailing list or the IRC, read documentation and get up to speed with what is happening in the organization to begin your coding. However, you may also start the coding in the community bonding period if you and your mentor decide that’s the best thing to do. A welcome package is sent to you at this time.
- 3 July: Mid-term evaluations deadline; Google begins issuing mid-term student payments provided passing student survey is on file.
Your work is evaluated by your mentor after six weeks since the coding starts. If you have been meeting the goals you set in your proposal, you should be able to pass this fairly easily.
- 21 August: Firm ‘pencils down’ date. Mentors, students and organization administrators can begin submitting final evaluations to Google.
- 28 August: Final evaluation deadline
Your final work is judged by your mentoring organization to decide if you have passed the program. A certificate of completion and a Google Summer of Code t-shirt would be mailed to you on successful completion of the project.
How can I get selected?
I have successfully completed the program in the last two years and people often ask me for the secret recipe for getting accepted. There is obviously no such secret. However, there are definitely certain guidelines you can follow, but they are not applicable to every individual.
Secondly, all open source organizations use version control software to manage changes in code from a globally distributed team. Be it git, svn or mercurial, you should know the basics of version control and be comfortable using it.
Another important pre-requisite in my opinion is the use of unit tests. Most organizations need you to write unit tests for the code that you submit and therefore, you need to know how to write them well.
Although prior contribution to open source projects is an advantage, it is not necessary as long as you can prove you can contribute to the codebase by submitting a patch.
Although it’s already late to consider this, but if you plan to apply for GSoC 2016, start now. The earlier you start, the better your chances are for selection. But how exactly do you “start”?
You could check the organizations that have been selected, go through their “ideas page” and see if you are interested in their projects. You could suggest your own ideas, but the ideas listed on their respective pages have already been debated and organizations are most probably going to go with those ideas — unless yours is really innovative!
If an organization interests you, join their developers’ mailing list and hang out in the IRC chat room. Open source people are generally very friendly and if you have any issues, they’re there to help you out! However, remember that mentors also have full time jobs and open source is only voluntary work, so you should be considerate too!
Also, make sure you’re polite when you communicate in the mailing list or IRC. In addition to that, be patient (and avoid being like this).
Prove you can contribute to the codebase
Getting introduced on the mailing list or IRC may not be enough. To be selected for a competitive program such as the GSoC, you need to prove you’re among the best. The easiest way to get noticed is to contribute to the codebase.
Read the documentation and clone the code on your local machine. If you have issues running it locally, you can always revert back to the mailing list or IRC (you will surely get your issues resolved!)
Every organization also maintains a bug list (or some list with some other name like a bug tracker). Find an easy bug to start off, or ask for one on the mailing list. At this point, you must know one important thing — many others are working on the organization, so never start working on a bug unless you have been assigned the bug. If you do and someone was already working on it, the organization is obliged to accept the solution that was provided by the one who got it assigned first.
Once you solve a bug, submit a patch (or a pull request, if it’s on GitHub, GitLab or BitBucket). Then work on a second bug. Then a third and fourth and so on. Most organizations require you to submit a patch as a pre-requisite to be accepted in the program.
Making the proposal
The proposal is a detailed document that you submit to the organization before getting selected for the program. It roughly contains information on what you plan to do over the summer, which requires good understanding of the project that you are working on.
The outline for proposals are usually supplied to you by the mentoring organizations. They usually don’t have a word limit — so it’s a good idea to make it as long as possible, explaining every small detail.
“I’m a final year student and I would graduate before the program ends. Am I eligible?”
“How much time is required to participate as a student in Google Summer of Code?”
“Is Google Summer of Code considered a job or any form of employment?”
If you have these kind of questions, head over the FAQ section of the Melange site. If you still have questions, feel free to ask below!