How to become a GSoC Contributor (in 5 Steps)

How to became a GSoC contributor in 5 steps in under 60 days in ~8 minutes

gsoc open-source

It was during my JEE preparation (which I failed miserably) that I first got to know about Google Summer of Code a wildcard to Google is what they said and by "they" I obviously mean him (Aman Dhattarwal) his video was the first introduction for me to this thing called GSoC.

For someone like me, it was more than just GSoC, for me it was hope. Hope that even if I fuck up my college entrance examinations I still have a chance at life at large, I can still get a good job, and getting into an IIT or NIT is not the only way to make a good life.

So, I believed it was a wildcard to Google because that's how an optimist's mind works. Give him the tiniest amount of hope and he'll believe whatever it is that gives him hope.

And in December 2020, a 17-year-old I got into college with one ambition, making a good life for myself so I started coding. I wanted to apply for GSoC but couldn't because being 18+ is a requirement and I would become 18 3 months after the application period ends. So, I tried for MLH Fellowship which I was able to get into in my first year.

So, in my second year, I applied for the wildcard to google (It's a joke if you still don't get it) at the LibreHealth organization.

It was a pretty weird couple of weeks after I applied and the proposal was in review, I was not sure if I am going to get accepted or not so I started applying for internships and was able to get one at a startup named BlendED (I designed the landing page btw) and on May 22 it was there, my name on the accepted list of participants on the forum.

I honestly can't convey in words how happy I was. I called up all my friends, my parents, and even my ex. It was truly awesome.

So, in this blog, I am going to be laying out the things that you should focus on and analyze when you decide to get into open-source and apply for Google Summer of Code

If you don't even know what Google Summer of Code even is, then I will highly recommend reading some blogs because this blog is mainly focused on how to apply properly, and not what GSoC even is.

Before you move forward I will highly recommend you read through the whole Google Summer of Code website including all the links to other resources.

Analyze yourself

With more than 200 Organisations present in GSoC with so many technologies available in those organizations, it is hard to place yourself unless you have analyzed yourself.

So, what are the parameters on which you should analyze yourself?

  • Tech Stack
  • Organisation Preference (Your unfair advantage) and,
  • Your communication style

You'll have to start by first analyzing the tech you know, not only the programming languages that you know but also the framework and libraries, how proficient are you in those, and which ones you enjoy working with. And please don't count the language you know how to print "hello world" in 😂

Once you know what all tech you know and how well you know them, you can then start analyzing what type of organization you wanna work on. Do you wanna work on a developer tool or a product that general people use, maybe something really specific in which you have an unfair advantage, for example, a bio class that had to take in college can help you work with a particular organization. Maybe you had a summer job working on an LMS which can give you an unfair advantage over others if you plan to work with Oppia.

Find your unfair advantage and see where you can benefit from it the most.

But there's a catch, in the grand scheme of things your organization's preference based on this unfair advantage won't matter because you'll be working on a tiny piece of code that is going to be heavily implementation based and not all that architectural-based.

So what matters more than your unfair advantage is how well can you communicate with the organization and do you have good compatibility with the community providing you with feedback that will ultimately be responsible for the quality of your GSoC journey.

Pay special attention to the way you communicate with the communication.

The only way to analyze this is to be a part of multiple organizations as a community member and then finally shortlist the organization that you feel good being a part of.

Huh, this one seems interesting

But what organization to be a part of there are like 200, well for that I would recommend first filtering out some 7 - 8 organizations based on gut feeling and then by following the above advice filtering out the main 2 - 3 organizations.

Select one year from the past programs and then start scrolling through the organizations listed (add the language/technology you are proficient in on the search bar), don't scroll mindlessly, this is not TikTok. Read the name of the org and then read the description and ask yourself "does this seem interesting to me", and "will I see myself working on a part of this?"

If you find an organization interesting, you won't have to ask yourself these questions. The thought huh, this seems interesting will automatically come to your mind and that's how you'll know which organizations to add to the list. Don't shy away from adding every organization that seems interesting to you, it doesn't matter how long you want your list to be 7-8 is just a random number.

Once you have made this list, it's time to dig a little deeper into what organization you want to be a serious part of. My recommendation is to have at most 3 and this is not a random number, anything beyond 3 is a waste of your time as well as the organization's time.

Gotta "love" these

It's not easy to pick out these 3 organizations that you "love" you should take plenty of time and not rush into deciding on these organizations.

To filter out the list you made earlier, I think some parameters are a good enough sieve to filter out the three. These parameters are:

  • Whether the organization returns every year
  • Does it match your tech stack?
  • And are you genuinely interested in contributing to whatever they're building?

GSOC_ORGS

One thing that I touched on before is that you should try to focus on whether you like the way a particular organization handles communication and feedback is something that you should make a part of the criteria on which you'll decide whether you're genuinely interested in an organization or not. Other reasons for deciding whether you're interested in it are up to you.

The organization has to return this year for you to apply to it right? For that what you can do is see if it has been participating consistently for the past few years or not. If you can't decide on this, you can directly communicate with the organization about participating in the program.

And the last obvious criterion is if that organization matches the technologies that you are proficient in.

Setting up the project

Once you decided on the organization that you are going to be contributing to, the next step is to set up the project locally. Even though it sounds easy because all you have to do is run the development environment on your machine, in reality, it is pretty hard and will take some time.

The project is completely new to you and you don't understand any of it which makes it a lot harder than usual to set up the project locally and get started, this is why all of the organizations have Contribution Guidelines documented in which they lay out all of the steps that are required to set up the development environment.

Even with this guideline, there is a very high chance that you run into an issue that you don't understand, to solve it instead of asking the question directly on the forums or chat you should first try to find other similar questions that have been posted on the forum because there is a very high chance the issue that you are facing has already been faced by another contributor and has been solved.

In the rare case in which you are not able to find the solution to your issue, you should post your issue in the forum or the chat and try to get the answers from the community. Don't expect immediate answers. And when you finally do end up setting up the project, don't shy away from helping others set up the project on their local machine. This is not a competition.

For example, let's say you have shortlisted the organization Rocket.chat and you need to get started. Now to set up the project you have to find the Contribution Guidelines which in the case of Rocket.chat is present in the for developer section as Developer Guides

The very first link in this Developer Guides is about how to contribute to Rocket.chat, the only thing left to do now is follow this documentation and get the local server set up.

The feedback cycle

Okay, finally the project has been set up locally and is running perfectly. Now you can actually start contributing to the project and get feedback on your code.

Making the first pull request

Naturally, the first pull request is going to be the hardest to make because you know nothing about the project, you have to navigate the codebase, have a lot of back and forth with the community

To get started with code contributions you should go to the issues section of the project that you have chosen and try to find issues that are labeled as good-first-issues because the organizations want beginner contributors to get on with that project so they make these issues that someone new to the organization can contribute and get started.

Screenshot 2023-02-10 at 9 23 12 PM

If you're learning to code, learning a framework, learning how to use git and GitHub, and also trying to contribute to an open-source project then please don't. First get good at whatever interests you, learn how to use git and GitHub then think about contributing to a large-scale open-source project.

Once you have selected the issue that you are going to be working on, try to understand it properly and ask questions that you might have about the issue because it is possible that the issue description is not complete and you need more information.

You can ask a question on the issue thread just like any other forum post and get the issue assigned to yourself so that someone who is coming to the issue knows that you're working on it.

Screenshot 2023-02-10 at 9 37 56 PM

After getting the issue assigned, you can start working on it and explore the code base. The first step would be to replicate the issue on your local dev environment and then find where the code is breaking and then fix it.

Once you have replicated the issue and found where it is coming from I would recommend that you share this in the issue thread so that you can get some feedback, maybe even an edge case that you are missing.

If you're unsure how you're going to solve this issue, communicate. If you have already solved the issue and want to get some feedback on it, communicate. If you can't even replicate the issue solving it is a far cry, communicate.

Once you have done this you sort of have established a feedback cycle, in which you start by communicating then contributing, and then communicating again. And this feedback cycle is essential for your success as an open-source contributor.

All that's left now is to repeat the process and move from good-first-issues to critical issues. So, keep communicating and contributing.

The proposal

Once you have become a recurring contributor to the organization and the application for GSoC contributors is near, it's time to start writing the proposal. I really want to help you out with writing the proposal but I can't because every project's requirements are different and the only help I can give you is a very high-level overview of what a good proposal consists of.

Google has written about how to write a good proposal and I agree with all of the points, so I will recommend you read that blog. The general advice is to add as much detail as possible about the project in the proposal and lay out a week-wise plan on how you will complete all the tasks that you have set out to complete. If it is UI work, you should have all the designs already completed and include them in the proposal.

And the only way to get enough detail to make this proposal is to communicate with mentors and submit your proposal early to get feedback on it. This will help you improve your milestones, and if the solution that you are thinking of is good or not, and if you will be able to implement the solution in time.

I hope that this blog helped you in shortlisting the organization and getting you started with open source, best of luck for Google Summer of Code 2023 ✨