GSOC Roadmap
Introduction
I am Khushal Agrawal, I have completed Google Summer of Code ‘24 under Inkscape. You can find my project’s link here. In this blog, I will explain how you can get into the upcoming Google Summer of Code, from explaining what is open source to preparing your project proposal to the coding period and evaluations.
What are Open Source Software?
Open Source Software (OSS) differs from proprietary software, such as Microsoft Word or Adobe Illustrator, where the creator or copyright holder sells the software to users who cannot modify it. OSS are developed and shared so anyone can use, modify, and distribute it. Some popular OSS are VLC Media Player, Blender, Godot, and Python!
These Open Source Software use a VCS (version control system) to manage multiple concurrent developers working on multiple versions of the software. A VCS is a software tool that helps in tracking changes to the source code over time. The most commonly used VCS is git.
What is Google Summer of Code?
Google Summer of Code is a global, online program focused on bringing new contributors into open-source software development. In this program, initially, mentoring organizations submit their applications to Google. Google program administration reviews these applications, and a list of accepted mentoring organizations is published on their official website. Next, potential GSOC contributors discuss application (project) ideas with mentoring organizations and submit their project proposals to Google. Finally, every mentoring organization ranks the received proposals according to their priorities and submits their list to Google. Now, Google decides how many projects to assign to each organization and has declared the results for selected GSOC contributors. This seems highly complex, but I will explain everything in detail. I have also added a flowchart below to help you understand it better.
Why to apply for Google Summer of Code?
Here are a few reasons GSOC is beneficial for you:
Stipend: Google provides varying amounts of money (based on your region), but if you are a college student, the stipend is decent.
Exposure: You will get to work with developers around the world on a codebase which is actually used by tons of people
Learning: You will learn countless new skills. In my GSOC, I learned Gitlab, used Fedora, set up a C++ debugger, and much more.
Looks good on the resume: You get the ‘Google’ tag to add to your resume.
Before GSOC
Once the list of accepted mentoring organizations is released, you will find an organization that suits your interests. Still, due to the popularity of GSOC, it is recommended that you see an organization of your choice before the list is released and start contributing to gain a competitive edge. At the end of the day, the mentoring organization decides whether they accept your project proposal or not. Suppose you have contributed to the organization before. In that case, the organization's members have some work of yours based on which they can judge you rather than just your proposal. In fact, some organizations have a rule that to apply, you need to have at least some issues solved or commits merged.
Selecting an Organization
You should find an organization that suits your interest early on and start making contributions. Finding the proper organization for you is vital because you will be working on the codebase with that organization's community for the next few months (hopefully).
How would you select an organization before the list of accepted mentoring organizations is released?
Most accepted mentoring organizations in GSOC repeat every year. You can search for organizations in previous years and look at their history. You can use this website for reference.
Criteria for selecting your organization
Finding your interest: First and most importantly, you must discover your interest. It may be some field you are good at, passionate about, or want to explore and learn. On the website mentioned above, you can categorize organizations based on their tech stack, the field in which they work (such as computer graphics), etc.
Organization history: Now that you know what field you would like to work on (Note: you could have several areas of interest that you then rank on priority), the next step is to look at the history of all organizations in your interest. Here are a few points you should check for in an organization:
How old the organization is: Look at how many times it has appeared before; if it has been appearing for a long time, it will reappear in the coming year. If the organization just started last year, it is hard to predict whether it will reappear.
The method of communication: Most organizations have community channels; they use Discord, IRC, etc. This is important because, generally, it is easier to communicate with people where there are public channels and much more challenging to convey in organizations that use mailing lists. You could go into the chats of these community channels and introduce yourself. The interval after which people respond to you would give you an idea of how active the community is, and the response would also show how friendly the developers are.
The version control system they use: Most organizations use Git, but there are some outliers. A separate VCS could be a bane or a boon; it introduces a barrier of entry for new developers, but at the same time, this would mean less competition for yourself if you do get comfortable with the VCS (same goes with the point above, mailing lists may be complicated to communicate with but that would be for everyone).
For the previous projects, you must determine how many were selected. You should look at a graph of the number of projects chosen yearly and predict how many will be selected this year. It would be best to see how many of the chosen projects were completed because some organizations are infamous for not approving the project proposals in the final evaluations.
The people selected: Look into how experienced the chosen people in an organization are; this usually does not give a pattern, but in some cases, it might. For example, when looking for an organization, I found some organizations that selected only M.Sc and PhD pursuing students.
In some organizations, it is frowned upon that contributions be made to get into GSOC. I recommend creating a spam account and asking in the public chat if that organization would be applying for GSOC that year.
Your first contribution
There are several contributions you could make to open-source software. You could report bugs, help with the documentation, help solve bugs, etc. Of all the contributions you can make, the most beneficial is solving bugs in the code base. In most cases, the codebases for the OSS are present on GitHub or GitLab or their own website.
The first step is to build the software locally; you have to clone the repository locally and follow the build instructions usually provided on the organization's website.
Once you have built successfully, you should look for issues you could help solve. I recommend looking for matters tagged with good-first-issue, easy-fix, or something similar. These issues are intended to be picked up by first-time contributors. ( I also recommend forking the repository).
The next step is to find what is causing the issue in the code base and fix it. After the bug is solved, you must create a new branch in your repository and submit a merge or pull request. Once you submit a request, the code is checked by the organization's developers for quality and merged if it is all right.
Congratulations! You have completed the biggest obstacle in open source contribution!
You need to continue contributing to the organization and join weekly meetings (if they occur) until the list of accepted organizations has been released.
Note: If you find the git terminologies daunting you can look into this website
Getting into GSOC
Ideally, assuming the organization you have worked for has been selected. The next step is to look for projects the mentoring organization wants to work on. You can ask the public channels for some guidelines on the same. Some organizations do not have a list of projects they want to work on and instead ask the user for recommendations; this is where your previous work is most helpful as being a contributor to the organization, you would have an idea of what would be beneficial for the software you are working on.
The projects are categorized into three types on the basis of time: Short, Medium, and Long. Their stipends also vary. Once you've selected a project, the next step is to create a proposal. You can start by researching and understanding the project requirements. Then, you can look up previously selected proposals from the same organization and use their format as a guide to create your own proposal.
A project proposal should include details about yourself (your experience in fields relevant to your proposed project), your past contributions, your understanding of the project, an overview of how you would implement it, and a timeline. It is essential that you thoroughly research the implementation and timeline because these are factors that make or break your proposal.
Community Bonding and Coding Phase
It is not recommended to start coding during the community bonding period; you should interact with other mentees of your organization and your mentors. Utilize the community bonding period to make new contacts.
In the coding phase, you follow the timeline you created in your project proposal. It is essential to communicate with your mentors so they are aware of your progress. Please note that mid and end-term evaluations depend entirely on your mentor only.
Post GSOC
The primary purpose of Google Summer of Code is to get more people excited about open-source contributions; for me, it certainly did. You should not stop contributing once the program is over; you should explore contributing to your organization and others and continue growing your communication and coding skills.
Subscribe to my newsletter
Read articles from Khushal Agrawal directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by