The Beginners Guide to Google Summer of Code (GSoC)
This is the beginner's guide to Google Summer of Code (GSoC). The Google Summer of Code is an annual global program sponsored and managed by Google. The program focuses on bringing more student developers into open source project development. In this program, the students work with an Open source organization under the guidance of mentors (selected organization members) on a 3-month programming project in Summers.
Many students (including my college juniors) reach out to me on various social media platforms to ask queries regarding GSoC. So, I was writing a blog post that could provide them with the information and resources regarding GSoC in one place. Then I thought to create this repo so that other knowledgeable people can also contribute to the content and help students all around the world.
In this repo, I'll try to provide you with accurate information, resources and examples so that it helps you to get into GSoC.
The term Open Source means the source code of the software is freely available to its users, and anyone can modify it. Open Source software can also be redistributed after modifying the original software. The Open Source Software are usually available to the users for free, and this software has no licensing fee or other restrictions as they use open source licenses. To know the detailed definition of Open Source, you can visit this link - opensource.org.
A few examples of open-source software which you might be using daily are:
Why Should we care if the software is open source?
As the source code of open source software is freely available. Then there is a negligible chance that the software is not respecting the user privacy. This means that the software can't do something like this These 6 popular browser extensions are selling your data and this Uninstall These Eight Browser Extensions That Stole Data from Millions.
However, this does not mean that open source software is more secure than closed source software. As in the case of open-source, the code is freely available so the threat actor can easily find vulnerabilities in it when compared to it being a closed source. However, almost all of the popular open-source software is developed by the "best of the brains" on earth.
There is another reason we should care about this software, as most of these software's are created and maintained by developers who don't get paid for anything or organizations which rely on donations to keep their projects alive. This software is not created to earn money and make profits; instead, they are created to help/ease the lives of other people. To understand this better, you should have a look at the History of Firefox.
The Open source projects benefit users in the way that they are free, can be modified and redistributed (but to modify any software one should know it better, not everyone can modify a software), provide flexibility. These projects also benefit large corporations, eg. Microsoft edge is based on Chromium an open-source browser. These corporations can use the source code of open source software without any restrictions, license issues or copyright infringement.
Contributing to open source helps the contributor learn and gain experience about the language, product OR skill. However, before trying to contribute to open source, you have to learn a few elementary skills. E.g., git, GitHub, a programming language (not necessary for everyone, but essential for GSoC aspirants), basic knowledge of IRC(Internet Relay Chat), Basic knowledge of Bug tracking tools.
Reference to learn about git and github.
The best way to contribute to an open-source project is by getting to know the project and then finding a mentor (who may be an existing contributor to the project). The mentor helps you know the project better and guides you through it i.e., which bugs you should work on, how to fix a particular bug, how to submit your patch [1] (following the organization contribution guidelines). Working with a mentor helps you a lot. Moreover, if your mentor belongs to an organization that gets selected for GSoC, then you'll have the edge over other participants who are trying to get into GSoC.
If you are unable to find a mentor, then you have to join the project community which can be on IRC(Internet Relay Chat), Slack, Gitter, etc. For Example, the project community of The Libreswan Project is on IRC. Then you can ask a question related to the project or organization. However, don't ask the too obvious question. By Obvious question, I mean the question which can be quickly answered by reading about the project on the organization website or project README.md. E.g. "What does this project do?".
Once there, you could ask questions related to bugs for beginners, etc. Usually, the organization members take the time to respond to such questions. So, after asking the question, wait for 24-48 hours (Keeping in mind the timezone difference).
Once you reach there, start solving the easy bugs OR bugs for beginners and submit your patch (or pull request).
If you want to make your first contribution without getting involved with the organization members, then there is a way.
You can find various such repositories on GitHub or GitLab with a simple web search.
There is a guide on How to Contribute to Open Source where you can find a detailed description of everything.
Open Source Software - The source code of these software's is freely available to its users, and anyone can modify and redistribute it. This software use open source licenses which don't have any licensing fee. E.g., Mozilla Firefox web browser.
Freeware Softwares - These are the software that is free to use. However, their source code is not available and is protected with proprietary rights, licenses, and copyrights. E.g., WinRAR.
Proprietary software - These are the software's that are not free to use, and their source code is protected with proprietary rights, license, and copyright. The user needs to pay a specific amount to use the software. They often have limitations on their use; e.g., it can be installed only on one PC. This software is also called closed-source software. E.g., Microsoft Office.
Git is an open-source version control system. Its main aim is to handle various kinds of projects with speed and efficiency.
GitHub is a web-based hosting service for version control using git.
What are version control systems?
The version control system is a category of software tools that keeps track of changes done to a file/files over time.
The main benefit it provides is that at any time we can view/revert to any available versions of a file while other benefits are branching, merging, and traceability.
To read about version control systems in detail, visit Getting Started about version control or What is version control.
Google Summer of Code (GSoC) is an annual global program sponsored and managed by Google. The program focuses on bringing more student developers into open source project development. In this program, the students work with an Open source organization under the guidance of mentors (selected organization members) on a 3-month programming project in Summers. In this program, Google also awards stipends to students in 3 rounds or evaluations. The amount of Stipend depends on students geographical location.
The whole program is divided into 3 evaluations or coding stages. Students plan & code for 1st month and then mentors review their work and provide their evaluation feedback and status to Google. The evaluation feedback and status(Passed/Failed) is then provided to the student on her dashboard. The students also submit the evaluation of their mentor, but those are just a few questions related to the project and the mentor's performance. This whole process happens 3 times, and then the results are announced by Google.
UPDATE: Google recently announced that starting in 2023, GSoC is being opened to contributors new to open source software development (and not just to students anymore). Official blog post announcing the changes - Get ready for Google Summer of Code 2023!.
They are:
They are an employee (including intern), contractor, officer, or director of:
They are an immediate family member (including a parent, sibling, child, spouse, or life partner) of a Mentor or Organization Administrator with the same Organization or a member of the same household (whether related or not) as a Mentor or Organization Administrator with the same Organization.
They have previously participated as a GSoC Student or GSoC Contributor in Google Summer of Code two (2) or more times.
To know the complete rules visit the GSoC Rules Page.
If you are familiar with the technologies mentioned in the section - How to make a contribution, have experience contributing to open source and know how to program, then you are good to go.
There are various other skills required to plan for the project and complete the project. However, you'll learn them on the way.
There is more information available on the context at GSoC Guides.
There are various benefits of completing GSoC.
The recognition: GSoC is recognized worldwide, so when applying for jobs you'll get an advantage. However, GSoC students are more preferred by Startups than well-established organizations because, in startups like GSoC, you have to learn new skills and technologies very fast and become good at them.
The network: After completing GSoC you now have many connections which help you and can provide recommendations when needed.
The Stipend: They pay well.
The referral: After completing the program you are given a one-time referral which you can use within 6 years for any job at Google.
The Exposure: When working on the project with experienced developers, you get to learn a lot and get the industry's exposure.
The Swag: What do developers like more than swag or goodies. You'll get a GSoC T-shirt and a certificate.
Chance to Mentor: You can also be a mentor the next time or in GCI by Google.
A Few of the skills are mentioned in the section - How to make a contribution. E.g., git, GitHub, a programming language, basic knowledge of IRC(Internet Relay Chat), Basic knowledge of Bug tracking tools, git, and GitHub.
You should also be familiar with the basics of Software/System development life cycle (This will help you in drafting an impressive and detail-oriented project proposal), MS Word/Google Docs.
Also, the knowledge of the skills required for the project would be an added advantage.
E.g. An example from my project proposal.
The basic tasks required for this project involves creating python/shell scripts,
working with LetsEncrypt and OpenSSL, creating and modifying configuration files,
working with Libreswan. I’ve worked on all of the above-mentioned tasks, some in
my projects(including Libreswan Managing Interface) and on some while contributing
to other open-source projects.
The most challenging part of GSoC is Stage 1 - "The journey from the beginning to selecting the project of your interest". This is the most frustrating part where the students have to search for various projects and see if they are interested in them. Also, this is the stage where most of the aspiring GSoC students quit.
The most common mistake students make in this stage is that they limit their search to specific programming languages. They only search for projects in a specific programming language rather than searching for the project of their interest.
Why should you choose a project based on your interest?
There are two reasons for this:
How to select the project or organizations?
This stage of searching won't be easy, so you have to be patient.
First of all, you need to choose an organization (which might be doing work related to your interests) for that the best way is to visit GSoC Archive and see the completed projects and then visit the website of the organization and searching for GSoC projects. If you didn't find any of the projects listed, then you can contact the organization members and ask them about the projects. This process will take weeks, but it is a sure way you can find the projects of your interest.
Note -
I had written a blog post describing my experience when I was in the stage of searching for the project and organization. GSoC - Selecting the project and organization
Once you have completed Stage 1 (Selecting the Project and Organization), then the next thing is to understand the project, organization, and development technologies used by the organization.
To achieve this aim you can read about the organization and its projects on their website or repositories or the web. Once you've gathered all the necessary knowledge about the organization and its projects, then gather as much knowledge as possible about the project you want to contribute. You can do this by asking a sensible question about the project to the organization members/Admins, once you've done this start contributing to the project. To make your first contributions, you should fix easy bugs in the project.
If your project is new and hasn't been started yet, then it's better to learn about it as much as you can, the organization members can help you with it. This thing happened to me in GSoC 2018, my project wasn't started, and the GSoC task was to build it. I gather information about it as much as I can and then drafted the project proposal. During the process, I was continuously asking questions and clearing my doubts about the project by asking them to the organization Admin. You can also contribute to other organization projects if it helps in GSoC, ask the organization members about it.
I had written a blog post about the same. GSoC - Initial phase and getting selected
Drafting the Project Proposal is the most critical part of GSoC, as all your efforts and progress until now depend on the proposal. Everything you've learned from the mentors, community, peers about the project should reflect in the project proposal. If you've learned a lot about the project and that too in detail, but you fail to represent all that in the proposal, then it won't help you.
Usually, organizations have their project proposal formats, and it's good if you stick to them. But if your organization doesn't have a project proposal format, then below are a few things you can include in your project proposal:
I've attached a sample proposal for your reference.
If you get selected then you'll be able to see various details and options in the GSoC dashboard, and you'll get an email from Google open source regarding the next steps; you have to follow them. And the best thing is you'll get some time for community bonding with the organization and mentors, use that time to clear all your doubts (if any) regarding the project, organizations, etc. This is an excellent time to discuss your roadmap (Timeline) with your mentors and fix slots for weekly or bi-weekly meetings.
If you are not selected for the project, introspect and try to know the reasons for your failure and ask yourself a question "Why do you want to be a Google Summer of Code Student?". Learn from those failures and try again.
Remember one thing "Success consists of going from failure to failure without loss of enthusiasm." - Winston Churchill
Do you have something to share? Open an Issue or Create PR.
This project is licensed under MIT License