Command Palette

Search for a command to run...

Google Summer of Code
Triyan Mukherjee

Landing GSoC 2025

Triyan Mukherjee 12 min read

May 14, 2025

#gemini#documentation#google-summer-of-code

Landing GSoC 2025 under Google DeepMind

Table of Contents

What is GSoC?

Let's start with the basics. Contrary to popular belief and misconceptions, GSoC is not a coding bootcamp or an internship. It is a program that aims to encourage students (18+) to participate in open-source software development. The program is organized by Google and provides stipends to students who successfully complete a project during the summer. The main goal of GSoC is to promote open-source software development and help students gain real-world experience in software engineering. Here is a list of frequently asked questions about GSoC, FAQ.

Ok, so now that we know what GSoC aims to promote open-source software development, let's try to understand what is open source software development and how one can get their foot in the door.

important

I have seen a lot of people asking "How to crack GSoC?". I would like to clarify that GSoC is not a competition. The selection process is not about "cracking", but rather about finding the right fit between the student and the organization. There is no one rule fits all, and each organization has its own selection criteria. The best way to approach GSoC is to focus on the project you are interested in and write a proposal that showcases your skills and passion for the project.

What is open source software development?

Open source software is a collaborative effort, where developers from all over the world contribute to a project. This means that anyone can contribute to an open-source project, regardless of their background or experience level.

Quoting the Open Source Initiative:
Open source software is software with source code that anyone can inspect, modify, and enhance.

"Source code" is the part of software that most computer users don't ever see; it's the code computer programmers can manipulate to change how a piece of software—a "program" or "application"—works. Programmers who have access to a computer program's source code can improve that program by adding features to it or fixing parts that don't always work correctly.

A huge amount of the world's software is open source. Some of the most popular open source software include the following:

One of the best things about open source software is that it is free to use and distribute. This means that anyone can use open source software without having to pay for it. This has led to a huge community of developers who contribute to open source projects, and many of the world's most popular software applications are now open source.

Where to find open source projects?

There are many places to find open source projects to contribute to. Some of the most popular platforms include:

There are also quite a few websites that curate lists of open source projects that are looking for contributors or have issues that are suitable for beginners. Some of the most popular ones include:

How to get started with open source software development?

All of the above sounds great, but contributing to open source software can be intimidating, especially if you are new to programming or have never contributed to a project before. So we are going to break it down into a few simple steps that you can follow to get atleast develop a basic understanding or overview of how a usual contribution process looks like.

Find a project you are interested in

The first step is to find a project that you are interested in. This can be anything from a small library to a large framework. The important thing is to find something that you are passionate about and want to contribute to. So for example it can be any framework that you are using in your day to day life, or a library that you are using for your projects. This will make it easier for you to understand the code and contribute to the project.

In our case, we are going to be looking for projects that are participating in GSoC. You can find a list of all organizations that have participated in GSoC here. You can use the filters to narrow down the list to find projects that you are interested in, based on your domain of interest, skills, and technologies you are familiar with.

For example I have some experience with python, javascript and web development, and I use the django framework for my projects. So I would look for projects with my above mentioned skills. So this could be my final filter url.

tip

Picking an organization is a very important step. You should pick an organization that you are interested in and that you can see yourself working with for the next 3 months. Take into account factors like no. of past proposals, no. of accepted and completed projects, and the overall community vibe and activity.

Make sure to join the organization mailing list, IRC channel, or Discord server. This will help you get a feel for the community and how they interact with each other. Don't just lurk around, introduce yourself and ask questions. This will help you get to know the community and make it easier for you to contribute.

Understand the project

Once you have found a project that you are interested in, the next step is to understand the project. This means reading the documentation, understanding the codebase, and getting a feel for how the project works. This can be a daunting task, especially if the project is large or complex. But don't worry, large open source projects are usually well documented and have a lot of resources available. Let's take a look at some of the resources that are available to help you get started with a project.

  • README: Most open source projects have a README file that provides an overview of the project, how to install it, and how to use it. This is usually the first place you should look when trying to understand a project.
  • CONTRIBUTING: Similar to the README file, open source projects have a CONTRIBUTING file that provides guidelines on how to contribute to the project. This usually includes information on how to set up the development environment, how to run tests, and how to submit a pull request.
  • Documentation: Open source projects usually have documentation that provides detailed information on how to use the project. This can be in the form of a docs/ folder, a wiki, or a website. This is usually the best place to look for information on how to use the project and how to contribute to it.

While I was considering organizations for GSoC, one of those organizations was django-stubs which provides type stubs for Django. So taking that as an example, I found the following resources:

tip

When trying to figure out how a project or a piece of code works, it's always a good idea to setup the project locally and run it. This will help you understand how the project works and how the different pieces fit together. To setup and contribute to any open source project, knowledge of some version control system is a must. Most open source projects use git as their version control system, so it's a good idea to learn the basics of git and how to use it. You can find a lot of resources online to learn git, but I would recommend starting with the official documentation.

If you are new to git, I would recommend using a GUI client like GitHub Desktop or a TUI client like LazyGit. Here is a good in depth read on principles behind git: Git from the bottom up

Start contributing

Once you have a good understanding of the project, the next step is to start contributing. This can be anything from fixing a bug, adding a new feature, or improving the documentation. The important thing is to start small and gradually work your way up to larger contributions. Contributions need not be code related, you can also contribute by writing documentation, testing the project, or helping out with community support. Here are a few ways to start contributing to a project:

  • Fix a bug/Add a new feature: This is usually the most common way to start contributing to a project. Most open source projects have a list of issues that need to be fixed. You can find these issues in the issues tab on GitHub or GitLab. Look for issues that are labeled as good first issue, beginner friendly, or help wanted. These issues are usually small and easy to fix, and they are a great way to get started with the project.
  • Improve documentation: Good documentation is essential for any open source project. If you find any areas of the documentation that are unclear or incomplete, consider submitting a pull request to improve it. This is a great way to get familiar with the project and its codebase while making a valuable contribution.

  • Participate in discussions: Open source projects usually have a mailing list, IRC channel, or Discord server where developers discuss the project. Participating in these discussions, answering questions, and providing feedback is a great way to get involved in the community and learn more about the project.

  • Review pull requests: If you are comfortable with the codebase, consider reviewing pull requests from other contributors. This showcases your understanding of the codebase and helps you learn from others' contributions. It also helps the maintainers and makes the review process faster.

note

Don't be afraid to ask questions or seek help. The open source community is usually very welcoming and helpful. Just make sure to do your research before asking a question, and try to be as specific as possible. Make sure you have attempted to solve the problem prior to asking for help. This will show that you are genuinely interested in the project and willing to put in the effort to learn.

Do try to embrace and accept feedback, maintainers might often ask you to change your code or approach in a PR or attempt to address some issues. This is a good thing, it means they are taking the time to review your code and help you improve. Don't take it personally, and try to learn from the feedback. If you don't understand the feedback, ask for clarification. This will help you learn and improve as a developer.

How to write a good GSoC proposal?

A good GSoC proposal will get you 60-70% of the way to getting selected. The proposal is equally important as any other contribution you make to the project. Quite often, students with a respectable amount of PR's and contributions are rejected because they neglected to write a good proposal. A good proposal should be well structured, clear, and concise.

note

Quite a few organizations have a template for the proposal, make sure to follow the template and guidelines provided by the organization if they do provide one. If they don't, you can have your own structure instead.

Structure of a GSoC proposal

A good GSoC proposal should look something like this:

  • Abstract: A brief overview of the project and what you plan to accomplish during the summer. This should be a high-level overview of the project and should not go into too much detail.
    • Overview
    • Literature review/survey
    • Goals
    • Benefits
  • Methodology: A detailed description of how you plan to implement the project, your approach to solving the problem, and reasoning behind any design decisions you make.
    • Implementation
    • Technologies
    • Pseudo code & diagrams
  • Timeline: A timeline of the project, including milestones and deadlines. This should be a detailed timeline that includes specific dates and deliverables.
    • Milestones
    • Deliverables
  • About me: A brief introduction about yourself, your background, and your experience. This should include any relevant experience you have, such as previous contributions to open source projects, internships, or coursework.
    • Experience
    • Skills
    • Interests

Here are a few past GSoC proposals that you can use as a reference:

tip

You can post initial prototypes of your proposals on the respective organization forums or communication channels. This will help you get feedback from the community and the mentors, based on which you can refine your proposal.

Conclusion

GSoC is a great opportunity to get involved in open source software development and gain real-world experience. Your driving motivation or mindset to contribute to open source should not be to get selected for GSoC, but rather to learn and grow as a developer. The skills you learn and the experience you gain from contributing to open source projects will be invaluable in your career.

Here are a few other resources that you might find helpful: