How to get into Google Summer of Code
In this blog post, I try to put down the perfect pathway for you to get selected for Google summer of code. An ideal plan is one that is made by the intersection of small bits from various distinct pathways that have led people to their goals.
Hence feel free to take a reference of it, and proceed your own way.
Because in the end, all that matters is to enjoy the journey to your goal.
About Google Summer of Code
Google Summer of Code is a global, online mentoring program focused on introducing new contributors to open-source software development. GSoC contributors work on a 12+ week programming project with the guidance of mentors from their open-source organization.
The reason GSoC is so unique is that one gets to work on the project one likes, and make desired improvements that thousands/lakhs of people will use, isn't that amazing. This gives me an adrenalin rush to contribute to Open Source.
I will be dividing this blog post into 2 parts -
Perfect pathway to get selected in GSoC
My Journey to getting selected in GSoC'22 @ CircuitVerse
(Ⅰ) Perfect pathway to get selected in GSoC
Different time periods to start preparing for GSoC
Getting Started with Open Source -
Open Source Software is computer software whose source code is made publicly available for modification and enhancements. It is released under various licenses like BSD, MIT, etc. To know more about it and how to contribute, refer to freeCodeCamp/how-to-contribute-to-open-source For me, I had always been excited to know how real-world software work & to make improvements that would affect thousands/lacks of users using it gives an adrenalin rush. After having some basic knowledge of Programming.
Also having a basic knowledge of Git is very useful.
Two ways to get started:-
You find a project that interests you and try to learn the technologies it requires.
You know some technologies and try to find projects around them to contribute.
Selecting an Organization -
Now it's time to select the organization you desire to contribute to.
To get the list of organizations go through the previous year's organization in the GSoC portal
Some points to keep in mind while selecting an organization.
Filter the organizations wrt the technologies you know.
Check out the type of projects selected by the organization in the previous years. With this, you can give an estimate of the skill level the organization is looking for.
Number of years the organization has participated before.
Avoid selecting very new organizations
Every accepted organization is allocated at least one slot. First-year organizations rarely get more than two slots.
If you are new to Open Source, avoid selecting organizations with a large community. (Though it would be a great learning experience, if your aim is GSoC as a newbie your chances will be low)
Try looking into the nationality of the previous year's mentors & selected students. This is because during GSoC you might be having frequent meetings, and different time zones can cause problems.
Start by making a list of organizations and shorten it till you finally have 2 organizations selected, this is to be on the safe side if one of the organizations doesn't apply or gets selected.
I would like to add, that never hesitate to select an organization that excites you.
Pre GSoC Period
The earlier you start the better
Once you have selected your organizations. Join their discussion channels, introduce yourself and feel free to ask all your queries.
Here comes your first challenge.
Set up the project in your local system
Make sure you have all the prerequisites before going on to install.
Follow the instructions in the READme file feel free to ask in the discussion channel if you get stuck.
Hurray !!! finally, you are ready to contribute.
Understanding The Code-base ( Pre GSoC Period )
The best way to start understanding is by picking up small issues and trying to solve them.
Trying to understand the entire codebase at once is a big NO.
Instead try picking up small parts, go through them and looking for improvements.
Making Contributions ( Pre GSoC Period )
Select some good-first issues and make PRs. You can filter the issue too.
To avoid conflicts with others also working on the issue, comment on it and say you're working on that issue.
Write your code and submit your pull request. Be sure to read and follow the pull request guidelines!
Wait for code review and address any issues raised as soon as you can.
You can also even propose a new issue if find bugs or want to bring some improvement to the project. Once approves work on it.
It's also a good practice to review other contributors' codes and give a constructive opinion.
Documentation Contribution - are one of the most important contributions
The more you contribute, The more you learn about the project. So contribute as much as you can.
If u have got a strong grip on the codebase - try looking at the previous year's unselected projects for that organization and make small contributions to it.
It's very likely that project might get repeated, this might give you a head start.
Selected Organization Announced
Around the first week of March th,e selected Organizations are announced.
Earlier I said select at least 2 organizations in the pre-GSoC period.
If both of your Organizations get selected, its time for you to choose one among them depending upon -
More excited to contribute.
Count and quality of previous contributions
Interaction In community
One strong proposal is way better than two average. So give your best to it.
If one of your organizations gets selected you are set to give your best in making the proposal.
Very very unlikely that none of your organizations get selected, no need to worry, get to the list and select one (this time i would prefer to select a new organization with a small community) and try to build up some meaningful contributions.
The selected Organization will release a list of Project Ideas.
Read and understand each and every line very carefully, and feel free to discuss it with the mentors.
A proper understanding of the project and save you hours and might be the deciding factor of you getting selected.
You are free to come up with a completely new project idea for yourself, but it's a risky move, make sure you discuss with the mentors about your idea before moving forward with the proposal.
Having selected the desired project from the idea list, you are good to go.
Start by researching the project.
Make sure you are completely familiar with the area of codebase related to your project.
Don't deviate much from the core idea, but at the same time feel free to mention some innovative ideas.
What is a Good Proposal vs a Great Proposal
Shortly after releasing project ideas, the organization will release a task list for each project. According to me these tasks is the most part of your proposal. Give your best in doing all the tasks and feel free to discuss with the mentors if you have any doubts regarding them.
A great proposal is one in which each and every point is mentioned only after thorough research on it.
With the opening of the submission window, submit a draft as early as possible for the mentors to review it.
Do make sure the core structure of your proposal is complete before submitting a draft. Your mentors might be busy so reviewing, again and again, might not be possible. Don't wait till the end to ask for a review else your proposal might end up not getting reviewed due to time constraints.
Having your proposal reviewed atleast once is a must.
Also its a good practice to keep contributing in the organization after the proposal submission.
If you are called for an interview it means, the mentors are having difficulty in selecting one of possible two to three candidates. It's more of an informal interview where they want to look into your insights into the proposal. Congratulations if you get selected, you have done it.
But if you don't get selected, don't be disheartened, it doesn't mean your proposal wasn't great, your hard work never goes in vain, keep contributing, and feel free to ask your mentors about what you could have done better and apply again next year.
(Ⅱ) My journey to getting selected in GSoC'22 @ CircuitVerse
Why I choose CircuitVerse
I came across CircuitVerse during one of my college courses. While searching for a circuit drawing platform on the web.
I was absolutely amazed by the power of the circuitverse simulator, From simple gates to complex sequential circuits, plot timing diagrams, automatic circuit generation, exploring standard ICs, and much more.
It was later I found out it was open-source software and it had participated in GSoC.
I dived deep into its simulator codebase, luckily to find out it was written in JavaScipt which I was very comfortable with.
I joined the community around January and started understanding more and more codebase by making small UI contributions, and made a few PR before making my proposal.
I spend the first 3 weeks researching the project and then the next 1 month making the proposal.
Just 7 days before the result I was called for an Interview about my proposal.
Hence came the result day and unfortunately, I got the rejection mail.
I was heartbroken at first since I had given my best to the proposal, and took a little break from open source but soon my love for contributing got me back.
Failures are a path to success, so took it as a motivation for next year.
I decided to apply the next year stronger than before.
Learnings from my mistakes -
I asked my mentors about the mistake I had done in the proposals & interview.
I found out my biggest mistake was to focus the major part of my proposal on using some unrequired library which made my proposal risky.
They also told me how close I was to getting selected which cheered me up.
Coming Back Stronger
I started making some bigger contributions to the organization, became more active, and applied all my learnings from last year.
You can find my contribution list below -
Finally the day came when I recieved the mail i was waiting for 2 years.
Yaaayy !!! I got selected in GSoC.
From searching for articles about getting selected in GSoC to writing my first blog post, it's been an amazing journey, but it's just the starting.
I love the learning and knowledge which I gain by contributing, and makes me fall deeper in love with Open every day.
Wishing you the best of luck with your GSoC journey, with the hope of reading your blog post of getting selected in near future.