A Complete Guide for GSoC

Ayush Agarwal
MDG Space
Published in
15 min readDec 22, 2019

After facing so many questions and providing answers to so many open source enthusiasts about Google Summer of Code, shortly said GSoC, I decided to write a blog answering almost all the questions that a guy considers while he/she is planning for GSoC.

So, if you are a lad who is wondering about getting into GSoC, hang on tight, because this blog will be a long one. This blog contains experiences of members of Mobile Development Group, also know as MDG, and their opinions related to each question that is present in this blog. I can totally assure you that this blog will be helpful for your future journey.

So let’s start with some basics:

What is Google Summer of Code, and what it is not?

GSoC is a non-competitive(after getting selected, of course 😏) program for students to get some experience in open source development. It is an initiative by Google that helps organizations connect with students and get them started with their open-source projects. It is a great platform to explore new areas, maybe discover a new career path!

GSoC is not an internship and should not be looked at as a way to earn money. It is definitely not something you should pursue half-heartedly or just for the sake of it, because the world depends on open-source software more than one might think!

We will not be discussing timelines and dates related to GSoC in this blog 😶. If you want to know about schedules, then check the official GSoC website.

What are the perks of GSoC?

Before discussing any further, let’s know about perks that GSoC offers so that you can get more motivation during your preparation.

  1. The first and most apparent 😐 perk is getting to learn new stuff. You will have a chance to interact and be a part of an astonishing community. Mentors and community members are experts in their fields, and getting an opportunity to connect with them is incredible. You might be able to get recommendations or referrals from them, which might help forge your career path.
  2. You get to work with the freshest technologies on a large codebase. Knowing the fact that your code will be merged into the main codebase and will be used by thousands of other developers is itself a considerable motivation. GSoC will significantly increase your skillset and surely will give a sense of accomplishment!
  3. The tag of GSoC on your resume will give you an edge over other applicants while applying for jobs. It shows that you have some real experience in developing software.
  4. Google pays you a very decent amount of stipend, which the students of IITR calls Andha Paisa 🤑, for your work during GSoC. If you want to get exact info about the stipend, check the link. You will also get a sweet t-shirt and some stickers for your laptop.
  5. Lastly, you can get a chance to work with Google. Every person who completes GSoC has provided a one-time referral for a possible job opportunity at Google.

How can you start into open-source? Why is it essential for GSoC?

It’s never been easy to learn to program. But despite several ways to learn how to code, trust me 😅, the best way to improve your skills and abilities is by contributing to open-source projects. For those who do not have any idea about open-source, at the simplest level, open-source is merely a writing code that other people can freely use, modify, and enhance.

For someone with no open-source experience, one of the best ways to get started is GSoC, irrespective of if you are a GSoC aspirant. First and foremost, you should select a programing language of your choice. Once you choose a programming language, explore for a project that matches along with your interests and passion. GitHub is the most popular platform for open source collaboration; therefore, you will probably use it while exploring the world of Open Source. First, you need to create an account on GitHub and read the guide that helps you get started.

There are many organizations where people work together on their favorite piece of technology in their free time, and some of them as a daily job! I think the GSoC archives are one of the best-curated lists of excellent open-source organizations. The most straightforward path would be to see all the organizations and choose one purely based on what kind of end product excites you. Forget about the tech stack for the moment. Once you’ve selected an organization, try diving a little deeper into it. Most organizations have some instructions on getting started. Follow those instructions. For detailed knowledge about how something works, you can always find resources from a simple web search. Read up on the necessary concepts. You’re good to go. Try fixing a simple bug or implement a simple feature. These first few steps are the most challenging and require nothing more than a firm resolve and persistence.

Developers strictly stick to the general rules and coding practices of their organizations. Therefore, while contributing to an Open Source project, one learns about what a “clean code” is, and how to write quickly readable and maintainable code 😲. The main reasons why a developer opts for contributing to an Open Source project are to get recognition, to improve their programming skills, and to become a part of this vast community.

What skillset or prerequisites require for GSoC?

You require almost no skills for GSoC, just a lot of enthusiasm and dedication to reach your goal. Every project requires very different skills, and often, these are things you learn when you start working on a project rather than learn beforehand. Look out for projects that interest you first. Some organizations are very supportive and might entertain candidates with missing skills and help them gain expertise along with GSoC, and some organizations have a strict no spoon-feeding policy. Take “appleseed” for example, and they require their candidates to have a basic knowledge of what they’ll be working on and can work independently during GSoC. Still, their community is very supportive and ready to clear doubts.

Apart from all this, I will recommend you to have some basic knowledge about a version control system; git is the most popular one. Having experience with git will decrease the friction and learning about the programming language, and the technology stack of your dream project will do wonders for you.

At last, don’t forget 😑 to check the eligibility criteria of GSoC before you start working on a project. To get more info about the eligibility criteria, check GSoC rules.

How can you get into GSoC?

There is no straightforward or correct answer to this question, but let’s discuss some key areas where you should take charge.

  • Finding the right project: You will be working on the project for a lot of time, so it is very crucial that you find a project that interests you 🤗. When you shortlist the projects you like (from organizations GSoC pages), look at how much competition you have in that project. I wouldn’t recommend a project if two or more people have already started working on your project.
  • Contact the mentors: Read the code of conduct, if any, and contact the mentors accordingly. This may be through email or their chat medium (Slack, Gitter, etc.). One thing that you should always keep in mind that DO NOT directly ask your mentors or the community for guidance without any legwork on your side. Even if the community doesn’t seem to provide getting started directions do some Googling, try to dive into the code on your own. After doing all this, when you get stuck and ask them any question, DO NOT FORGET to state all the legwork you did. This will show them that you are ready to put in the effort.
  • Make a good impression: You need to make the community feel your constant presence. Complete some tasks before the proposal date and make sure to keep looking out for new bugs/features. If you want to start contributing and don’t know where to begin, try searching beginner-friendly 🤩 issues. Such issues generally have a “beginner” or “good first” label attached. Ask the organization admins if it’s still open and if you can work on it. You can also create a new issue if you find a bug in the application. Submit a Pull Request suggesting your code that solves the particular problem and ask the admins to review it. In this way, you can start making others perceive your presence.
  • Have a decent proposal: The proposal should be ambitious, while also being achievable. It wouldn’t do if you just did something trivial, while overcommitting will lead to failure later on.
  • Enjoy Coding: It’s primarily the joy of coding that helps open source development. Make sure that you are communicating with others and helping out on things you can. GSoC is a pretty amazing thing!😉

How to make a good proposal for GSoC?

Start as early as possible! The earlier you start working on your proposal, the higher are the chances of getting your proposal selected.

You can take a look at previous accepted GSoC proposals, get in touch with former GSoCers, and ask them to share their proposals. That should give you a decent idea of what’s expected in a good proposal. Make sure to be clear and concise in explaining what’s in your mind regarding the project. Try using images and flow charts where necessary. Use a good template (not too decorative, but sober and straightforward) instead of typing in a simple word document. Discuss your education, work, and previous open-source contributions. List your skills that are relevant to the project along with the evidence of your work in that field. Describe your idea in as much detail as possible, along with a complete timeline. List your previous work (if any) in the organization you are targetting. Give the reasons why are you a perfect candidate for that project.

Always get your draft verified by someone you know and has a decent grasp over English. Your mentors might be from English speaking countries or people who do not have English as their first language. You shouldn’t take the risk of using grammatically incorrect language here as your sentence might mean something different altogether. Use simple language. Don’t try to make your proposal flashy by using complicated words, and try not to be repetitive 🤨.

Finally, submit the draft and ask for suggestions from your mentor. Make sure to discuss your project with your mentor. Change your proposal according to the opinions of your mentor.

Now we had enough talk, read through the experiences of the fantastic people involved in making this blog and me.

My Experience

👋Howdy Guys! I’m Ayush, a developer @MDG and @Checker Framework. Currently, Android uses its annotations that are similar to some in the Checker Framework. Examples include the @NonNull, @IntRange, @IntDef, and others annotations. The goal of my GSoC project was to create Android Resource and Thread type checkers using the Checker Framework. Then, do a case study to show the utility (or not) of pluggable type-checking, by comparison with how Android Studio currently checks the annotations.

The three months of my GSoC journey have been a lovely period in my early software engineering career. Before searching for organizations and I had some knowledge about Android. I started contributing and looking for organizations in early March. At that time, most of the Android-related organizations were almost adequate with the contributors. Then I started looking for some organizations that had JAVA as their primary programming language because I’d done a lot of work in JAVA before and was pretty confident that I could work in any JAVA-related projects. Then I found the Checker Framework, went through its idealist and found that it has some Android related projects. Therefore, by that time, I had finalized my organization in which I would have to spend my next three to four months 🤪. I was really excited.

My proposal was selected, and I started reading the manual and understanding the humongous codebase of the Checker Framework. It took me nearly one-third of the GSoC period to get some idea about how type-systems and Checker Framework works I did get stuck in between, but my mentors were really helpful, and I was able to fulfill all my tasks successfully.

One key takeaway for prospective students - if you can’t figure out an answer to your doubts after a while of digging, ask your questions, understand that coming from a user’s point of view, your perspective is valuable. However, also keep in mind that if you can’t express your questions clearly, it’s useless, so learn how to write an excellent report to help the mentors help you.

So my overall experience was terrific, and I have learned many new things. I will recommend 😁 all of you to at least try once for GSoC in your college life.

You can connect me via Facebook, LinkedIn, and Twitter.

Karthik’s Experience

Hey! I’m Karthik, and I did my GSoC with TensorFlow. My complete GSoC story is a long one, and I could rant on about it for an hour. So, I’ll try to keep it short and focus only on the critical points of my experience (mainly pre-GSoC. You’ll find the rest on my blog, which I’ll link below). Here goes…

I came to know about GSoC in my first year of college. I wanted to attempt after my first year itself. I began looking for organizations and found one that caught my eye, Blender. It was an org working on a piece of software by the same name that was used for 3D rendering, modeling, and VFX. I soon found out that I needed a lot more knowledge about the field before I could get started. I decided to learn more about it and attempt a year later. I started learning and in the next year tried contributing to appleseed, an org that worked on something similar, but I found it easier to get started there. Although I had made my presence felt there, after some time, I hit some snags and couldn’t continue contributing.

GSoC applications begin sometime in April or May if I remember correctly, but people start working with their org of choice right from December. I was clueless about what I would do. So I went with something conventional and started working on an Android app for openfoodfacts. But I wasn’t motivated enough, so I dropped the idea of GSoC altogether. I wasn’t able to select an org even after the official org list was released in February. One day a senior pointed me towards a Data Visualization library project under TensorFlow, an org I had neglected altogether thinking that it would have only ML related projects. I checked out TensorFlow’s public mailing lists and couldn’t find any candidate who had expressed interest working on the DataViz project. I, on the other hand, had worked on a similar library as a project in college. So I presented my thoughts about it on the mailing list and got replies and suggestions from the community on how things should be implemented. I won’t go into details, but I had to learn Swift (a language I hadn’t used before) and started working on a prototype. I kept the community aware of updates on my prototype throughout. As soon as the applications opened, I made a draft proposal and got it polished with the help of my mentor and colleagues at college.

After getting selected, all participants get the first two weeks as a community bonding period where you aren’t required to work. But I started working on my project and got almost half of it done before the first evaluation (there are a total of three evaluations to clear GSoC). Apart from a few common hurdles, the rest of the program went smoothly as I had worked on the prototype before GSoC and had got a solid foundation established by the end of the first evaluation.

The best part of my experience was getting in touch with TensorFlow developers at Google Brain! They are really knowledgeable people. I was also able to get a reference from my mentors and TensorFlow’s product manager. All of this was amazing, but the highlight of GSoC was post-GSoC when the participant with the Swift for TensorFlow team was asked to give a presentation about their projects in Swift for TensorFlow’s weekly Open Design meeting. Chris Lattner, the founder of LLVM, the one who created Swift and works at Google Brain now, was present during the meeting. He praised my project at the end of my presentation and also asked about what other thought of including my library in a default package for ML!

So my overall experience was great fun and stress-free. I had a blast!

If you’re seriously considering contributing to TensorFlow, you should definitely go ahead. It feels gratifying. I still try to continue working on my project whenever possible and am even mentoring for the same in Google Code-In! You needn’t do anything much different for TensorFlow from what’s written in this blog. Choose a project you like, contribute beforehand if possible, or make a prototype. Communicate with the community and make a concise, well-thought-out proposal. That’s all from my side! Good luck!

You can connect with him via Facebook, LinkedIn, and Twitter.

Saurabh’s Experience

Hola guys! I’m Saurabh, a developer at @MDG and @CGAL. My GSoC project was with the computational geometry algorithms library, where I worked primarily on improving the Arrangements-2D package demo while adding new features.

For the most part, I had been a mobile developer before I began working for this project. This meant that I had almost no experience in the programming paradigm used, and had nearly no idea how to implement the project itself.

I contacted the mentor in early February, and he was really helpful. He helped me set up the project and the build environment on my machine, which took around two weeks, during which I learned a bit about generic programming, and how to use it in the project.

My mentor had a book written on the package I was working with, and I read it for a couple of weeks and asked him lots of questions. Some about the hows and some about why something was implemented the way it was. The learning period was really awesome for me.

Once my project had been accepted, I worked for a couple of hours every week (since I was also interning at @Bolo), but I managed to complete the tasks that were planned. The project was successful, and I had a lot of fun extracting the power of C++.

You can connect with him via Facebook, LinkedIn, and Twitter.

Suyash’s Experience

Hi everyone, I’m Suyash, a student developer at Aimcode. As far as my journey of GSoC with Aimacode is concerned, it was indeed challenging. The topics I’d covered throughout my GSoC period were the topics I’d never studied before. Hence, it was really exhaustive at times, but yeah, I got to learn a lot throughout the summers. It was like, every day, I was exploring something new, it may be a new algorithm or a new library, and this was the part I loved the most out of my GSoC experience. The AIMA project is indeed a great project to work on, and the community has got great mentors. I had some great discussions with my mentor, and he guided a lot throughout this project. I hope that this project appears again in the GSoC next year as it literally has a vast opportunity to learn a variety of exciting concepts in the field of Artificial Intelligence.

Here are the links to my GSoC project and code:

You can connect with him via Facebook and LinkedIn.

Finally, we reach the end of this blog 🥳🥳, and I would like to appreciate Karthik, Saurabh, Vishwas, Kaustubh, and Suyash to make this blog a full-fledged study. We all wish you BEST OF LUCK for your marvelous GSoC journey ahead!! 😎😎

--

--