- Kumar Shivendu
Google Summer of Code is an annual program by Google, which provides an opportunity to Student Developers who are looking to get started with open-source software development. During GSoC 2021, I designed a search engine and a search query language that run across 170M+ software repositories! I learnt a lot of stuff in a very short period of time (2.5 months) - all thanks to my mentors and the team members at Software Heritage. This year I got a chance to be a GSoC as well as Outreachy Mentor for my organisation. In this small write-up, I'll be answering some of the most common questions asked by GSoC applicants.
Why should I contribute to open source?
The impact will be huge.
Open source is the heart of all the software applications that you see around yourself. Almost all the programming langauges, frameworks, and operating systems are open sourced. Without these, software engineering would be extremely difficult since everyone would be working with their own proprietary frameworks or languages. The best part is that even if you modify a just single line of code in any popular library, that will directly or indirectly impact millions (if not billions) of people.
Your skills and connections will improve multiple folds
The maintainers or mentors in open source projects are often highly skilled people. Everytime you interact with them, you'll get better at developing and maintaining software. Furthermore, often such people are experts in their fields and have really good connections. If they are really impressed with your work, you might get recommendations from them. Also, most of the GSoC students will be doing something good throughout their career. You will now have a common ground to start a conversation with them ;)
Your work will be public and will make your resume stand out
All of your open source work will be publically visible on your Github/Gitlab profile. This means whenever you are applying for a job, the recruiter can clearly see your past open source work, read your code, and probably get impressed with it! Open source can drastically increase your chances of getting interview calls at some of the best startups/companies. One of the big reasons why I got selected at FamPay (YC 19) was my GSoC project. Furthermore, there's a rise in startups that are based on open source. Such startups hire global talent, take good care of you, and pay really well.
How to pick an organisation or a project?
Find organisations whose impact deeply excites you and where you can imagine yourself as an contributor even after GSoC.
Reason: Everyone is different and knowing your unique inclinations is huge advantage. If you find the right project/organisation, you'll be intrinsically motivated throughout your journey, and will be able to consistently work hard with passion. (And it's is a powerful combination!) Also, remember that finding your unique inclinations is supposed to happen over time. So don't wait for the perfect answer, just go with whatever feels right at the moment.
Next important thing is a match of tech stack (or atleast having similar projects).
Reason: Don't unnecessarily make things harder for yourself by increasing the number of unknowns. Go for whatever tech stack you feel the most confident with. GSoC has projects with all kinds of langauges and frameworks. ;)
Example: While applying for GSoC 2021, I had a good understanding of python and web development. Plus, I had recently learnt Elasticsearch for doing Information Retrieval course assignments at my college and found it to be quite interesting.
The last thing to check is the community health and project difficulty.
Reason: Some communities are more active or welcoming than others. Ideally, you should seek the ones where the mentors are active on a daily basis. So join the discussions on slack/irc/discord/mailing lists and see if the communities are active enough.
In general, Avoid projects that are too easy. A lot of people apply for the same easy project. But more number of applicants could mean lesser chances of selection. Sometimes, the project itself can be given lower priority because of its easiness. This means none of the applicants for such project will get selected. Also, try to aim for orgs that had atleast 2 successful students in the recent years. You can the official GSoC website to find this information or you can use this project by Nishant to get more insights.
Example: The mentors at my organisation, Software Heritage, are quite active on our IRC channel and the mailing list. All of them are full-time employees at my organisation and you can expect a quick reply during their working hours. So the community is healthy for sure. Software Heritage has selected exactly 2 students so far (and I believe it can increase to 3-4 this year)
How to maximise chances of getting selected?
- Share your proposal as early as possible and start iterating on the feedback.
- Focus on maximising the number of merged PRs, and the number of meaningful interactions with the mentor. Some orgs don't have good first issues for the new contributors, in that case they provide some warm up task for the applicants. If they don't provide such task, you may try following the next point.
- Be proactive. Use the application (self-host if required), discover bugs, report them, and if possible, create PRs to fix them on your own.
- See yourself as someone who will contribute even when GSoC is over. Be genuienely good for the community. Be selfless and help others. By helping others, you are helping your mentors. And they will be happy with that for sure!
- Clearly mention your relevant past experiences towards the end of the proposal. Add links wherever possible.
- Being too ambitious and suggesting changes that are impossible/irrelevant for the project.
- Never talking to the mentor(s) and never getting feedback from them.
- Applying for projects that are too easy (and hence too many capable applicants).
How to contribute ?
- Setup the project as early as possible. Always look for files like
CONTRIBUTING.mdand follow them.
- Join organisation's chat - IRC (via Element), Slack, Discord, forums, mailing lists, etc
- Try finding good issues that you can pick up and mention that you'd like to try them. If you can't find any, try step 4 or 5.
- Use/run the project and try to find bugs in the application, write tests, or improve docs. Often, the project's setup guide is incomplete and needs more steps that what's mentioned in the README. Maybe try to do something that will make the setup easier for others. Be creative, try to improve stuff wherever possible.
- Note that you talk to the mentor(s) before writing the code asking if the change is actually required or not.
- If you still couldn't find anything, find out the active mentors and ask them if they have some
good first issue.
- No contribution is small. My first contribution to Software Heritage was adding a link in the API docs page :)
- Remember: You can contribute without even writing code by improving docs, writing tests, triaging issues, and reporting bugs.
All the best!