Google Summer of Code 101

Google Summer of Code 101

Google Summer of Code or famously known as "GSoC" is an initiative by Google to enhance the Open Source culture and projects. Open source softwares are at the core of every thing related to computer science. If you are a computer science student and are not using any open source tool/application/software/framework/platform/library and language then there’s something really wrong with you. Even though the importance of open source projects being gigantic, most of this projects are made out of hobby or fun by their respective project leads, and as there is no direct incentive of monetization of this projects they lack the pace of development like proprietry or enterprise softwares. To eradicate this, every year Google organizes the GSoC underwhich the potential(which have better impact and use-case) open source projects and students work for enhancing the projects.

As you can see, its a great initiative where you being a student contribute to some great project which actually enhances people’s lives, productivity, pace of invention and makes this world a better place. LOL !

- Classic Gavin Belson (Silicon Valley, HBO)

Note : Do yourself a favour and watch Silicon Valley and Mr.Robot if you havent already.

Every year thousands of student apply for GSoC from around the world and only nearly a thousad student(1,264 in 2018) get accepted. Lots of Competition. There was’nt any proper guide when last time I checked which elaborates on how to properly apply and maximize the chance of acceptance. As I have completed GSoC 2018 succesfully, I have some insights to share.
If you are planning to apply for GSoC or don’t have anything productive to do right now, Read along :)

Prerequisites

1.Proper knowledge of any VCS(Version Control System)

Mostly projects use git as their primary VCS and Github or Bitbucket as their VCS hosting service, so I would recommend learning Git and collaboration on Github.

2.Any one of the following language

C,C++,Python,Java and Javascript.
Projects which use other languages are also present but for a fresher this are the easy and manadatory ones to know. Also if you know more languages you will have more options to choose from.

3.Couple of relevant personal open sourced projects (not mandatory, but why not ?)
4.Hunger for knowledge ¯\(ツ)

Prereparation

Before even thinking about applying to GSoC you should be using atleast some open source software and must have interest in some sub-field (Machine/Deep learning, Artificial Intelligence, Algo-DS, Operating Systems, Database Systems, Networking, Security, Development etc.) of computer science. The below preparation must start before 2-3 months of official GSoC start date.

  1. Head over to previous year’s GSoC Archives (These projects are most likely to come again) and search for the project/organization you would like to contribute to according to your interest.
  2. Use the software as normal user is supposed to and enumerate each and every way of using it.
  3. Align your learnings of tech stack and knowledge as required for that project or preferabely choose the one that aligns with yours.
  4. Head over to that project’s source code repository, setup the Dev-environment, read the docs and other relevant material extensively.
  5. Get totally familiar with source code(will be initimidating at first but can get really easy if you do second step thoroughly).
  6. Contact the project lead/Community on given communication channel, ask them doubts, bugs to fix, feature enhancements etc.
  7. Ask them to assign any task to you.
  8. Start Contributing.

Application

After selected organizations get announced(mostly in month of February) and if your selected projects and organizations are there then no worries as at this point of time you would have contributed much to the project. If they aren’t then start the preparation for the selected ones again.
Applying to GSoC consists of writing a detailed proposal of your project which highlights the purpose of project, each and every enhancement you will add during coding phase of GSoC and reasons that make you fit for the project. This needs not to be in some formal format but also should not be very informal. Proposal writing can be daunting and hard if you have not done the proper preparation as mentioned above and will not reflect the experience. This will lead to project rejection very easily. In my case the application phase of GSoC was just a formality because I had contributed and had bonded with the community of my project in a very good way. Also there aren’t many successful proposal templates shared openly. If you are not able to decide the structure of your proposal, you can have a look at mine here.

Learnings

Learnings during GSoC can vary person to person depending on their prior experience. But for me the learning and experience gain curve was very steep. The software development concepts like Test writing, Collaborated developement, working with large code-bases, Maintainable coding etc. are not just concepts for me anymore as I had thorough hands-on. Also the computer science/technology concepts on which your project is based on will become your expertise. ;)

Perks

Mention of successful completion of Google Summer of Code on your resume depicts that you know how to work on codebases of softwares which have actual user bases unlike the personal projects. GSoC is much more prestigious than internship in any low tier startup/company. So I would recommend to students of freshmen and sophomore year to apply for GSoC. Its a win-win situation for everybody involved. Students get valuable experience and hepty stipend. Open Source projects get enhanced. Google’s incentive of making this world a better place LOL X) gets completed.

If you haven’t already read my GSoC project report, read it here.

Hope you picked up some tips ¯\(ツ)
Keep Contributing, Keep Hacking !
CaptainFreak