- [Skip to the next point for GSoC] Initially learn programming, and a programming language. You should focus on developing the computational thinking while learning a language for expression and implementation of solutions. Focus on WHYs and try to build small prototypes of libraries, technologies, beginning from hello world programs emphasizing on syntax and pretty formatting. You gradually develop both top-down and bottom-up approaches to the problems while practising and building things. Thinking, questioning and building things from scratch in early days will prepare a solid foundation for the future. A Balance is necessary to not to get lost. Learn from others code too.
- Having an aptitude is not necessary. If you have an interest in learning, exploring and building or just coding itself, then it’s sufficient. If not, that means you want a tag named “GSoC Student” and I have seen selections in that case but don’t know about their being during the GSoC period and how did they manage every single day replying their mentor ;=)
Learn your first programming language from a standard book so that you can learn anything newer later easily just by googling and reading tutorials or books. Not all projects need DSA and other advanced-level programming concepts but you need an intermediate level – till OOP is fine. And without coding and experimenting on the way, you can’t learn it. If you ask which is the first choice – a language that is considered hard like C/C++ or Java. It will prepare you to learn almost any other language of related paradigm later without much efforts.
- The notion of open source: Learn about open source and its etiquette online and make an account on Github, learn git and push your previous projects. Open some issues, hunt for other issues that interest you and start contributing to get the feel. Repeat by learning and exploring new areas and technologies and contributing at the same time.
- I think by now you know the type of projects that intrigue you to code without food! Hunt for those projects and the related org online on the previous year GSoC page and message on their communication channel, build the project first on your system, then pick a junior bug, ask for help.
- If you are not in a position to select an org, then just use the products of a couple of org and use them for months. Whatever issue irritates you (well it’s open-source), file a bug report and work on it. Hurray! You have just begun to contribute to your future org.
- Submit at least 4 patch reports; 2 or 3 of them must be merged. Never think about the number of patches but the quality of the reports i.e. what feature/bug do they solve and how much it matters to the community by what amount! This implies that you should start early (and others advise the same). Start by November or December. I would advice you to analyze where do you stand and then start accordingly.
- I was a little bit late in drafting the proposal (5 days before the deadline) and you should send your first draft 7–10 days before to get others feedback. In my case, one of the developers on the mailing list (later my mentor) read my draft proposal and told me that the project idea on the idea page was a bit misleading. Instead of that, it should be that. I got startled and needed to alter a lot of details and implementation ideas in those remaining 3 days. That’s why try to submit your draft asap and make sure to post the link in your mailing list or any other communication channel too.
- Only one proposal is all you need if you really want to get in. I have seen other aspirants sending 2-3 of them and getting into multiple ones but you must know beforehand that doing this solely for increasing your selection probability is a very bad idea. It would be the best if you can put your soul in one. Luckily, many org get a lot of student slots every year. In that case, if you are choosing a newbie GSoC org or an org with a lot of student slots, then your only proposal will do the wonder, who knows!
- Post-selection time is entirely different. Never take it lightly only to fail the evaluations later.
You can also look for SDE internships (algorithmic background is strongly required) or the research one.
The later is different from your undergraduate studies and requires an interest in exploring, reading and writing. Curiosity is a must with or without a scientific thinking at the beginning.
I hope this post will help someone at some point.