In this post, I discuss my perspective on two primary questions pertaining to the Google Summer of Code (GSoC) program. Even though my work is centered around Machine Learning (ML), I believe these pointers are domain-agnostic. This is based on my experience of mentoring for TensorFlow at GSoC 2021. Please note that these thoughts are of my own and may not reflect what anyone else (including the program organizers and my employer) thinks.
First and foremost, it's important to acknowledge that GSoC requires some amount of open-source experience beforehand. That not only makes your application stronger but also sets you up for the program itself. But beyond everything else, having a genuine passion for contributing to open-source is important and is a key enabling factor. Open-source should be a fun engagement driven by your passion for helping a community. So, ensure you’re chasing the right things.
Understand what GSoC is, how it works, what are the rules, and study some projects from the previous years by going to GSoC’s official website: https://summerofcode.withgoogle.com/.
Here’s another resource that might be equally helpful. It’s important that you set your expectations right from the very beginning. Sometimes having conversations with the past GSoC contributors is really helpful in this regard.
- Take a look at the organizations taking part in GSoC. You'll notice that they have all their projects listed for which they are welcoming contributions.
- Study all the official resources that are out there for the project you want to contribute to. You may be interested in multiple projects but it helps to laser focus on one so that you can precisely figure out what components you'd want to work on, your timeline, etc.
Get started contributing. Here are some good examples that make it clear what a GSoC contributor should do first:
- Sometimes a project may not require having prior contribution experience but having it is almost always better. TensorFlow Hub (TF-Hub) is one such example where you’re generally asked to code a ML model, (optionally) train it, and host the model on TF-Hub thereby making it easier for the community to use the model.
- Lastly, if you haven’t worked with a version control system before definitely spend time doing that. Git is a good example of such a system and here’s a good course from Udacity that can be helpful.
Firstly, I’d like to acknowledge that the answers to this question should be subjective. That said, I think there are certain common aspects that are shared by all great GSoC proposals.
GSoC is about building things. So including your experience that reflects the same immediately catches the eye. You build that experience over a period of time, it’s not something built overnight. That way, your experience speaks about a few things: consistency, technical depth, punctuality, communication, etc. Let me provide some examples.
Say, you wanted to contribute to KerasCV by adding a new layer(s) to it. If you can show that you've already worked on something that reflects the experience relevant to the contribution, it puts you in a better position than someone without that experience.
Similarly, if you wanted to contribute a model to TF-Hub, it helps to show that you’ve experience implementing models and relevant things such as layers, blocks, etc.
- When you’re talking about an experience in your proposal be sure to back it with verifiable links. Without that, the mention becomes practically void.
- Don’t just mention the components of the project you’d like to work on. Include all the nitty-gritty of that – why you’d like to work on them and why it’s useful, what your approaches will be, etc. If you anticipate some edge cases or blockers include them too. This speaks volumes about your maturity.
- Keep your proposal grammatically correct and easily understandable. This helps you communicate your proposal better. Remember that it’s your responsibility to ensure that your proposal was communicated in an expected way.
- Sometimes, applications come with incomplete sentences, inconsistency in sentence casing, without punctuations, etc. This is an anti-pattern. Try hard to ensure your proposal doesn’t have those things. This may readily reduce the seriousness of your proposal and the work you put into it.
- Include a realistic timeline that covers the project deliverables and includes enough time for you and the mentors to communicate effectively. Unexpected things can happen all the time so, it helps to also include some extra time to dedicate to those situations.
Sometimes, a project may welcome ideas from the contributors. If you’d like to propose something that’s already not enlisted in a project, be sure to reach out to the project mentor to discuss the feasibility of your idea before working on the proposal.
During GSoC 2021, I had the opportunity to work with Aditya Kane and Vausdev Gupta as their mentor. Here are their GSoC proposals:
I'm fortunate to be mentoring for TensorFlow at GSoC 2022 as well. If you're curious, I have a presentation that discusses how open-source can enable different possibilities in the ML world. If you’re looking for an example of a non-ML proposal, then Anubhav Singh’s proposal is a great example.
Additionally, we penned down our mentorship experience in this blog post that may provide additional context.