How to get selected for GSoC: Sharing my experience

How to get selected for GSoC: Sharing my experience

Providing insights into the entire selection process for newcomers

Since the next iteration of GSoC has recently been announced, I have been approached by so many people showing interest in applying for the said program and ask for tips and guidance for the same.

What I have realized talking to a lot of them is that most newcomers don't have proper information or knowledge regarding what GSoC actually is and how to approach it in order to improve their chances of getting selected. Hence have decided to write this blog based on my own personal views regarding the entire journey along with tips for others.

Though this blog is aimed at beginners but since we deal with development and opensource a lot here, basic knowledge of Git and GitHub would be highly appreciated, though I will still try to explain things as simply as possible from the ground up.

So lets dive right into it!

Why consider my opinion?

As someone claiming to know about GSoC, I suppose I should first prove my own credibility on this topic. I had gotten selected for GSoC in 2022 under the umbrella organization of Python Software Foundation (PSF) under which I had applied for the sub-organization of CVE-Binary-Tool which is a project of Intel.

image.png

You can find my project here.

Beware of misinformation

A common problem I have seen among newcomers is that they take advice regarding this topic from people that themselves have never experienced opensource and have never been a part of this program either.

I suggest all readers to only take advice from people that themselves have gone through the same journey (I'm not even talking about myself, it could be someone other than me as well) with proof of the same instead of taking advice from random people who claim to have knowledge without actually having it, this will only increase false information and make you feel that GSoC is unachievable in most cases.

Opensource?

Since GSoC is a program that promotes opensource work, lets first look into what opensource actually is. What happens in opensource is that a developer or more often than not a community of developers are creating a project which they publicly put up on code development platforms such as GitHub and GitLab, GitHub being the more famous one of the two.

Now anyone in the world can view their codebase and work on it, now what does this "work" entail? Its pretty simple to be honest, you just go their project and help them with the project, this could mean changing or updating the code or the tests or the workflows or even the documentation!

You can even help with community management or help them identify issues in their current project and open issues that other developers can solve if you yourself are not interested or able to do so.

Doing one of any of the above counts as a "contribution" to the opensource project.

Now let me make one thing very very very clear, there is no such thing as an unimportant contribution! Doesn't matter how big or ground breaking your contribution is neither does it matter that you simply added a full stop in a README somewhere! A contribution is a CONTRIBUTION! No matter the scale!

As a matter of fact, my first ever opensource contribution was actually simply adding a full stop in a README for a very small project!

Most people feel that only code contributions count in opensource, this is the farthest thing from the truth I have ever heard, non code contributions are also welcomed and recommended in the community equally.

Non code contributions especially for newcomers are an exceptional way of getting started with opensource as it allows them to get hands on practice with Git and GitHub which are the entire basis of opensource work now a days.

Moreover the only thing you need to get started with contributions is basic knowledge of Git and GitHub.

What knowledge of Git and GitHub is required?

You should be able to:

  • Understand what a public and private repository is
  • Be able to create, delete and modify the settings of a repository that you have access to
  • Be able to fork a repository on GitHub
  • Be able to clone a repository using Git
  • Be able to add changes to your local Git and also commit them with proper commit messages
  • Be able to pull and push changes from your local to remote
  • Understand how resolving merge conflicts work
  • Know how to open a pull request
  • Know some other basic git commands

The above mentioned points are all that is required for non code contributions, for code contributions the added knowledge of the technology required for the specific problem, issue or feature that you are trying to fix would also be required, other than that everything else remains same between code and non code contributions.

Why opensource? Benefits?

Opensource allows you to learn a lot as a developer about new technologies, improve your networking which lead to various work opportunities such as remote work and my personal favourite reason for opensource, that is, just how COOL it is as a developer!

I mean lets say you are a contributor at Reactjs, doesn't it sound and feel cool that the software that millions of developers use and are dependent on for their work and their jobs is something that you have helped create? In my opinion that is a one in a million feeling.

I mean this is how a conversation could go:

Someone: "Hey I am a React developer, nice to meet you"

You (like a boss) : "Hi I created React!"

The feeling to have helped create something that the entire world uses and depends on is the high of working in opensource, I've tried my level best to put forth that feeling in words but am sure it wouldn't have been relayed in its true sense, that feeling is something that you have to experience on your own!

For those of you still not interested in opensource, I suggest you to look for pay of remote job workers in the world, the amount of money these people make is astounding and quite frankly, shocking. Opensource also plays a major if not the most important role in getting these offers by allowing you to expand your network and showcase your skills to the entire world and also to probable employers.

GSoC?

GSoC stands for Google Summer of Code, and is an opensource initiative program run by Google every year. It is mainly aimed at newcomers to opensource in an attempt to promote the spirit of opensource via the form of contributions which are mainly code based in nature and you also get paid for the work you do during the program.

Do keep in mind that the program is open to everyone, so there is no student or working professional criteria, the only criteria that you need to fulfil is given on the official GSoC page that is linked here.

Selection process?

What happens is that many organizations apply to be a participating organization in GSoC, this simply means that those organizations have projects that they want GSoC candidates to work on and implement, a very large number of organizations participate every year with projects.

Now Google selects organizations that they allow to participate in GSoC this is done by publishing a list of all participating organizations for that year on the official GSoC website, this is mostly in March of every year.

These organizations then put forth their list of project ideas that they are willing to select contributors for via GSoC. About a month is given to interested contributors to go through the ideas and decide which ideas they would like to work on and implement.

Another thing to note here is that there are two types of project ideas, medium sized project and large sized projects. Medium sized projects are expected to take around 175 hours to complete and pay about $1500 whereas the large projects are bigger in scale and take around 350 hours to complete and pay about $3000 instead, this is another thing to keep in mind when selecting a project if you're doing it for the pay. This pay is actually country dependent and I've quoted the pay for India, you can find the pay for other countries on the official GSoC site or here.

Then around in April contributor applications open, in this all interested GSoC contributor candidates register themselves on the official GSoC site as a contributor and are asked to apply in at most three project ideas, these three could be from the same organization or from different organizations as well, you can even apply to just one project idea if you want as well, or to two, or three as per your interests and choices.

For applying to a project idea of an organization you are required to write a proposal for that project idea which contains details about yourself, what idea you want to try and implement, how you would go ahead implementing it if you are selected along with a proper weekly timeline of the GSoC period which is about 12 weeks generally.

Now each organization has multiple project ideas that are open for contributors but Google does not select all of those ideas for GSoC. What happens is that lets say an organization has 10 project ideas, but Google will only allot the organization with say 3 slots, so each organization puts forward the ideas on a priority order, based on most desired first and least desired last, then Google will allocate the slots to the organization that is 3 in our example select the top 3 most important or desired project as per the organizations listing. This means that their is a chance that the project idea that you had written a proposal for is lower on your organizations priority list and hence you do not get the slot even if the organization liked your proposal and wanted to select you. So keep this in mind while selecting a project idea for GSoC.

In case your project ideas is allotted a slot then as many people would have applied their proposals for that specific idea, the organization then goes through each proposal and selects a single candidate out of all the applicants and that contributor is the one who is selected by the organization to complete that specific project and the rest of the proposals for that idea are rejected. Hence the proposal plays an important part in getting selected.

Moreover if you had applied for more than one idea that is either two or three and you get selected in multiple then you need to specify which organization you would be working for as you cannot work on more than one project idea during your GSoC period.

Then after contributor applications close, a month later Google will release the list of all selected GSoC contributors on their official site and also inform the contributors individually by mail like setting up your payment account, rules and regulations etc. After this the GSoC team will be in constant touch with you and inform you about all the formalities and steps that you need to do and your two week community bonding period starts where you start preparing for all the code work that you would be doing in the coming weeks as per your proposal and discuss ideas and improvements that you can add.

There are two evaluations, one is the mid evaluation and the other is the final evaluation, which checks if you are keeping up with your project proposal or not, you are only paid if you pass the evaluations, you get paid half after the mid evaluation and the other half after the final evaluation, for the final evaluation you are also required to create a writeup of all the work you had done during your GSoC period and submit it as proof of work done.

What other things do I need to know?

I have linked the informative page of GSoC here for those interested.

I would suggest all readers to go through the GSoC FAQ on their official site which I have also linked here.

I would also suggest to go through the official timeline of the program which too is on the official site also linked here.

Samples?

For GSoC I was required to write a proposal for my project and along with it I was also asked to maintain a weekly blog of my progress by the Python Software Foundation umbrella organization of which my organization was a part of.

I have linked, my accepted proposal here and my weekly blog posts here and my final work report here for anyone that wants to get inspiration as to how they should go about creating these for themselves.

What is an umbrella organization?

An umbrella organization is an organization which consists of various much smaller organizations, as an example Python Software Foundation (PSF) appears in GSoC as a participating organization but PSF itself is made up of 8 - 10 different mini organizations.

Suggestions?

So now that you understand what the process of applying for and working during GSoC is, lets go ahead and look into ways to significantly improve your chances of getting selected.

The first and most important point I would like to get across is that a lot of the times, people that are going to be selected by the organization are already visible in the community and have been a regular contributor to the project or to the organization and is an active member of the community and has a basic idea about the codebase and has interacted with the community members, mentors and maintainers. Your networking skills are extremely important in opensource, sometimes even more important than your technical skills.

Start early?

It is generally suggested to start contributing to the organization of your interest a bit earlier than the projects are announced, this is because once the projects are announced a very large number of people will start contributing and it would be difficult to stand out and interact with the mentors as their time would be divided between numerous candidates.

Why is standing out important?

I'll give you a simple example, assume you are a team leader in a project, you need to select a new team member, who would you pick? Someone that has worked on the project a bit before, that you have talked to and interact with whom you have also seen the technical and programming ability of as well as how punctual, friendly, helpful and willing to learn they are? Or would you pick someone that just showed up one day that you have no prior idea about? Exactly the same way, contributing to the project before hand allows your mentors to gauge your abilities and build a reputation in the community hence making them prefer selecting you over someone else.

So now that you understand that, you want to start contributing to the projects but a problem that arises then is that since the list of participating organizations has not been announced yet how do you even select the organizations that you want to contribute in? What if the organization that you select does not get selected in GSoC?

How to select an organization?

What you need to do is to look at the common organizations that have been appearing continually for the last few years (maybe 2 - 3, there are multiple sites that already do this for you but you can manually do this as well if you want) and pick one from them, as organizations that have been regularly participating have an extremely high chance of participating again the following year. Still there is a very small bit of uncertainty with these organizations as well, that they might just abruptly decide that they do not wanna participate in that year, well if that happens to you then don't get tensed, just pick a new organization from the accepted organization list and start contributing there and built your reputation in that community as well, let them know about your prior opensource organization and they will consider your prior work in opensource as well! So your work done in opensource carries over across organizations!

So now comes the biggest and important part of getting selected, choosing your organization.

After you filter the organizations that have appeared in the previous years, how do you even decide which organization would be suitable for you? The way to do this is to now filter the organizations based on technologies that they use, these are mentioned on their repository as well as on the GSoC page for each accepted organization.

Filter the organizations based on technologies that you either know, or that you are willing to learn.

That's it. As simple as that.

At this point you have filtered the organizations on basis of technologies that you are interested in even still there would be still quite a lot of them to choose from, so now comes the hard part.

You need to go to each of these projects and checkout their documentation and issues, what you are looking for is that you find a repository that you are able to understand conceptually as to what problem are they trying to solve and how, no need to care about understanding the code, you will automatically learn that as you invest your time, for now filter projects based on how much of an understanding you have, how relatable the project is, do you personally want to work on it and then on the basis of issues, filter all issues on the repository on the basis of good first issue label and go through them, if you are able to understand the issues even on a very basic level then that is a great sign and that you most probably would be able to actively work on the issues while trying to build your reputation in the community.

Just iterate over this process for all the filtered organization projects and I'm sure you'll be able to select a handful of projects that have a high chance of appearing in GSoC, have a tech stack you are interested in, are able to understand the concept as well as have a basic understanding of the issues that you will be trying to solve!

If you have made it this far in the filtering process than good job! Well done! Your chances of getting selected have already skyrocketed in comparison to others that are just applying without any knowledge or are randomly applying without thinking.

How to finalize organizations out of filtered ones?

Now out of these organizations pick the organizations that you would like to work on for GSoC, you probably won't have a lot of projects left at this point after so much exhaustive filtering but its best to focus on a single project for GSoC instead of working on multiple as then your time would be divided amongst various projects, its better to put in your efforts in a single place instead. Though you can work on two organizations if you wish, I would not recommend any more than that in any case.

Another thing that I would suggest is to look at how many candidates get selected for GSoC in that specific organization in previous years and if those many people are already actively working on the project then more often than not they would be the ones that would be selected for GSoC and that you were a tad bit late to join there. Though you are still welcome to try and contribute in hopes on getting selected as there is always a chance that you are able to perform better as a contributor and in your proposal!

What to do after selecting an organization?

After this join the community channels of the organizations that you have selected, these could be on Slack, Discord, Gitter, Rocketchat etc.

Send a brief introduction about yourself in the community channel to let everyone know about you, that you are a beginner in the project, list out your skills, show interest in contributing and ask for newcomer guidance regarding what would be a good place to start contributing.

They will more often than not ask you to go through the README.md and CONTRIBUTING.md and ask you to setup the project locally and try running it, just go with the flow from here on and interact with the community and start solving issues for them until the contributor application period starts and you put in your proposal.

Now once you write your proposal make sure that before submitting it to the GSoC team you get feedback on your proposal from your projects mentors regarding improvements and suggestions and keep iterating over your proposal until both you and your mentors are satisfied.

Any tips?

Also a general suggestion for opensource is that there is a proper way to ask for help, lets say you get stuck on an issue and don't know how to resolve it, you don't simply go to the community channel and say that "I'm stuck I need help", what you should do instead is to list out your exact problem along with all the solutions you have already tried and what the results for those were, show them that though you are asking for help it is only because you have already tried everything that you could think of, otherwise it just makes you look lazy.

Trust me when I say this, during your opensource or your GSoC journey you would be asking for help a LOT, way more than you think to be honest and its perfectly fine, you're actually expected to get stuck as a newcomer so don't feel bad or shy about asking for help from others, that's what opensource is all about to be honest!

Another thing that I would like to point out is to not be overwhelmed by the size of the codebase, you're not supposed to understand the entire codebase either way, you would only be working with a single file at a time for each issue a majority of the time, so you'll understand the entire codebase over time as you continue working on the codebase.

Moreover don't stress out that you'll have to contribute a lot in order to stand out, just chill out, if you're working on one issue a week that is perfectly okay, just make sure to keep the community and your mentors updated regarding your progress on that issue and ask for help when needed.

That's about it for suggestions from my side I suppose! My last piece of advice is the FACT that GSoC is completely overhyped in the world, getting selected is extremely easy in the program and you just need to follow a proper plan, be active, put in enough time, have basic technical skills that you can even learn while contributing (no need to be an expert neither intermediate, basic skills are more than enough), have a desire and willingness to learn and most importantly be genuinely interested in opensource and in contributing to the community!

My own experience

I had my first encounter during Hacktoberfest in 2021, where I had gotten familiar with the Git workflow and made extremely simple contributions to opensource projects and had realized that I actually had a lot of fun doing that.

Then in December of that year I was suggested by a friend of mine who himself was a GSoCer in 2021 to try and aim for GSoC as a means to explore opensource further as I had found it interesting during Hacktober.

I had filtered the organizations that had appeared in the past two years and filtered them further on the basis of Python as I was extremely comfortable in that, there were so many organizations after this that it took me a week to go through all of them to filter them on the basis of understandability and solvable issues, finally I found one that I then started to work on, introduced myself to the community and requested help for beginner issues which they helped me with, I faced a problem though, even though I was able to contribute to the project in terms of code and had built quite a reputation as well in that community, I didn't feel the desire or the enthusiasm to work on that project, it was as if I was only contributing because I HAD to for GSoC, most people told me that if I just put up with the lack of interest in the project I would be selected in GSoC, as a matter of fact I too for a fact knew this to be true.

Still I couldn't put up with this as it had ruined my experience of opensource just because the project was not interesting for me, so I left the project in December end.

I was completely dejected after this as I had started to feel that this was what opensource was all about and accepted that I would never be a good contributor and that opensource was not for me.

I would still scroll through other repositories but couldn't muster the courage to contribute to any of them as I felt that I was not good enough.

Then I came across a project that I had missed in my filtering process while scrolling through their documentation found this: image.png

You can find this linked here as well.

The project was CVE-Binary-Tool which is a cybersecurity based project written in Python and is run by Intel.

After reading this I felt that I should at least give opensource another shot and try again, that paragraph had really motivated me and down the rabbit hole I went!

I joined their community channel on Gitter and put in my introductory message.

They pointed me to some good first issues and helped me resolve them, I used to contribute regularly there and felt the enthusiastic feeling that I had been missing in my earlier organization, I continued contributing to the organization and solved various issues for them and when the contributor applications opened, I put in a single proposal for a project idea in CVE-Binary-Tool and well, the rest is history I suppose.

Me and my fellow GSoC contributors worked together for about 12 to 14 weeks during the GSoC period and held weekly meets with our mentors to discuss our progress for that week.

I had become really passionate about opensource and GSoC played a very major role in helping me realized that, even after the GSoC period ended various events were held for us contributors such as lightning talks, meetups, networking meets (where I met some amazing people and became friends with). GSoC also directly and indirectly helped me a lot in my career by providing me with amazing work opportunities.

Any end notes?

I would suggest all people interested in opensource to try out GSoC, if you get selected, well that's amazing! Congrats to you! In case you are not selected, you would still experience opensource at its truest form and moreover the connections you build during this time in your respective communities are invaluable and would surely help you later for future opportunities!

I whole heartedly wish all interested people and candidates good luck from my side!

May the source be with you!

Also, I will be appearing in GSoC 2023 as a mentor for CVE-Binary-Tool so hoping to see some new faces and mentees in the project!