Google Summer of Code - I am sure every undergrad has the dream of being selected in it one day. And the good news is that anyone can do so with some effort. By anyone, I mean any person with some appetite for coding and a strong resolve.
Seriously, GSoC is not really tough. You just need to follow a good, organized strategy and you can get selected. Especially, Indians have performed exceptionally well this year. 11 of the 13 top schools are from India.
So, let's get to it. How does one go about cracking GSoC?
It is a very simple process. Let me explain. I will be starting this letter from the 0-level, meaning considering the audience as someone who hasn't done programming before. Feel free to skip ahead according to your level.
0: Learn basic programming
Obviously, the very first step to approach GSoC would be learning how to code.
If you are just starting out, I would recommend learning Python to write your "Hello World".
Python is simple and popular, and lots of GSoC projects use it. So go learn Python.
If you prefer learning via reading, I would recommend using the w3schools resource. But if you prefer a proper video course, take this course on Udemy. It should only cost you around $10.
1: Learn utility programming AKA development
What do I mean by "development"?
It means that you should be able to use code to develop a useful piece of software. It can be anything from a web page to a server, to Machine Learning models.
Here, it is very important to pick an area that you are interested in.
For example, if you are especially fond of how web apps like Twitter, Quora work, then frontend development should be the specialization for you.
If you are intrigued by the idea of code running on its own and doing things on a remote computer, maybe server-side development is the deal for you.
Same for ML, AI, GUI Development, and other fields.
You can also choose multiple fields that you are interested in.
For example, you might love everything about web apps. In that case, you can learn a few parts of both, frontend development and server-side (backend) development.
You may also be unsure of what you like in computer science. In that case, feel free to try out different fields and see what sticks.
How do I learn some kind of development, say frontend development?
You google it. You will find good guides on Medium and other websites. Most of them are free. Make use of it.
2: Create and contribute to open source projects
You can watch all the tutorials on backend development but you wouldn't know a thing unless you actually build something with it.
So once you have gone through an ample amount of content on a topic, consider making a project using what you have learned and what you will learn.
You can use the GitHub Search to find repositories (projects) that you can contribute to.
Or you can just create your own project.
The aim now is to get some hands-on experience so that you can have a basic idea of various things like coding conventions, directory structures, best practices, etc.
Feel free to consult the Internet. Find good projects in the technology that you are making the project in and go through their code.
Understand their code conventions, acknowledge their importance, and then try to use what you have learned to build your own project.
Making 2-3 projects in a particular specialization (say frontend) should help you feel pretty confident about it. Then you will be able to graduate to the next step.
3: Find target GSoC projects
You can use the GSoC organizations page to find organizations that you might be interested in.
Use the search feature to filter through programming languages and domains.
For example, here is the link for finding all Python-based organizations.
Similary here is the link for all organizations using ReactJS in their project.
Once you identify some organizations and their projects, go through them and find the ones you are most interested and comfortable with.
It would be great if you can find 3-5 such projects.
4: Contribute to target projects to build a reputation within the organization
Organizations will not accept you if you just show up on the final day of GSoC applications and ask them to select you.
You have to build a rapport within the organization, and you can only do so by contributing to them.
Send them PRs, participate in discussions and suggest new ideas.
Now that you have some "target projects" in the previous step, use them as a medium to build your network and credibility within the organization.
You might realize that you don't like certain organizations after you start contributing to them, and that's okay.
That's why you selected a few (not one) project to begin with. Keep focusing on the organizations that you are interested in.
5: Apply to the organizations
By now, the GSoC application period should be open and you should already have ideas on what you can propose to the organizations.
Keep being in touch with the org admins and submit your proposals to them.
It would be a good idea to get their feedback before final submission so that you don't miss anything important. And they will gladly help you since you have been helping them on the projects for some time.
So use this opportunity and make sure your proposal is the best it can be.
6: Keep on contributing
There is usually a 30-day period between the application closing and the results announcement. Don't slack off during this period.
Org admins will like to see if you are up to the task and that if you are the real deal. So keep contributing to their projects.
Be good in this interval and you will have a huge chance of being selected.
7: Well done
You are now selected for GSoC. Congrats 🎉!
If you want to learn what happens next, I have written another article documenting the whole journey. Here you go - My GSoC 2016 Story
Cheers, and best of luck!