An article on Google Summer of Code and how to approach as a student with almost zero experience.
What is GSoC?
The Google Summer of Code is an annual program organized by Google for encoraging students to contribute to open source softwares. As a student you will be given an opportunity to propose your own project and once selected you will be paired with mentors who will help you to execute and complete the project. The official GSoC website has well written documentions of all the necessary informations regarding the program.
GSoC with TensorFlow
TensorFlow has a lot of libraries to contribute to. Every year they publish an ideas list that mentions some of these libraries, contribution ideas and pre-requisites for students to take part in that project. You can also make a proposal on a new idea for a different library within the organization (which is what I have done) and this can make your proposal unique and stand out from the rest. This year my proposal involved contribution to a library called TensorFlow-GAN, check out the project repository for more details. TensorFlow usually selects students based on only their project proposal while some other organizations even post some “micro-tasks” for evaluating the students. By looking at the ideas list and the selected projects in the past years you can identify what kind of projects are appreciated within the organizations.
Once selected a mentor will be assigned to you who will help you to improve your project scope, introduce you to the community, clear all your doubts and keep your project on track. The competitive part of GSoC is now over and you just have to work on your project and communicate with your mentors on a regular basis. My GSoC experience was really good and my mentors @margaretmz and @joelshor were as interested in the project as I was, and recieved a lot of support from them. We are writing a more detailed blog on the TF-GAN library and the GSoC project and will be published soon!
General tips
How to prepare?
- Find an organization that matches your interest, explore their GitHub page.
- Go through the ideas list given out by the organization every year and the final work submitted by the students. Both are publicly available and this can give you an idea on what kind of projects are usually carried out in each organizations.
- Once you have decided on the organization look for blog posts and project proposals of the past GSoC students within that organization.
- Start contributing to the library, solve issue, participate in discussions and do relavent personal projects and make sure to document them.
How to write the proposal?
- Explore GSoC discussions happening within the organization.
- Think of a project idea that can actually help the organization, and having some past experience in working with similar projects defenitely helps. Both of these things should be clear for a person reading your proporal.
- Refer to project proposals accepted by the organization in the past years. Try to follow similar formats.
- Spend a lot of time writing the proposal. Some organizations provides feedback once you submit a draft possible and you can even ask people you know for a review.
Useful links
There are numerous resources available on the internet regarding GSoC and here are the links to some of them.
Desription | Link |
---|---|
All the necessary GSoC info | Official Page |
Past GSoC projects | GSoC Archive |
My project repository | Repo Link |
Margaret’s blog as a GSoC Mentor | Blog Link |
TensorFlow Hub’s GSoC project blog | Blog Link |
Vijay Tadikamalla’s TensorFlow proposal (2020) | Blog Link |
Guide to write a project proposal | Blog Link |
Other Interesting blogs by past GSoCers | GSoC Roadmap / How to Apply / One stop guide |
Repository containing numerous accepted GSoC proposals | Repo Link |
Get project ideas for TensorFlow | TensorFlow Forum |
Interesting TensorFlow projects | TF Community Spotlight |
Get started with open soruce | Up-For-Grabs.net/ goodfirstissue.net |
Google Open Source blogs | Link |
List of other opportunities for students | Repo Link / Repo Link |