How I got selected for Google Summer of Code'24 and Summer of Bitcoin' 24

Aarav MehtaAarav Mehta
8 min read

Introduction

Open source means participating in the development and improvement of software whose source code is freely available to the public. This involves collaborating with other developers, submitting code changes, fixing bugs, adding new features, and reviewing code contributions from others.

What is GSoC?

Google Summer of Code is a global program focused on bringing more student developers into open source software development. Students work with an open-source organization on a 12-week programming project during their break from school.

What is SoB?

A global summer internship program focused on introducing university students to bitcoin and open-source development.

Students get involved in and become familiar with the bitcoin open source community and put their summer break to good use.

What is this blog about?

This post highlights my journey of getting selected into the program from the very beginning. I believe that there is no defined path for getting selected in such open-source fellowships. Everyone has a unique journey, and you can take a few things from other journeys to write yours :) because the essence of each one is similar.

My Journey getting selected for GSoC ‘24

I first heard about GSoC in my first year, but didn’t seriously think of doing it till the second year. In December ‘23, I participated in a hackathon with my senior, Ankur Patil, who had done a lot of open source in his second year. He is a big advocate of open source, and encouraged me a lot to try out for GSoC in the summer of 2024, as it could introduce me to the development world, and give me a lot of knowledge.

Finalizing Organizations

So, I started looking for organizations which had come in the past years, which have been repeating for some years and which take a lot of students every years for https://www.gsocorganizations.dev/ (great site btw)

Initially, in December, I couldn’t finalize an organization, and was just bouncing around from one organization to the next. I looked at a lot of organizations like VideoLan, Julia, Fortran, CCExtractor and Catrobat, but couldn’t move forward..

I didn’t really try too much during January and February (I had gotten busy with midsems as well, and was doing some CP then). It wasn’t looking like I would be doing any summer internship at that point. Then, the organizations were officially released by GSoC in February end. I thought maybe I can choose some first time organization, and keep my hopes up, but didn’t really start seriously.

Then, I saw that Shishir (who btw also got selected in GSoC), my batchmate had started applying for GSoC, and had 2 or 3 PR’s merged. He suggested I talk to Ishaan, who gave me tips on how to get selected for GSoC, and later on SoB, and really motivated me.

I sat down finally, and with renewed vigor decided I will try for GSoC in these 2 organisations: GA4GH and NumFocus

I chose them as:

  • I wanted to avoid Web Dev, as there is already a lot of people already trying for it, and I was too late. Instead, I wanted to choose something not very common, so i was on level ground with others

  • I wanted to choose some orgs, which were proposal based and not PR based, since I was too late to catch up to others who have been merging PRs from much before

Choosing Projects and my First PR

I chose Optuna, an organization in NumFocus, with the project I will target. I contacted the mentor, and got started with a good-first-issue. The issue I chose was very easy, as I just had to add a function, whose details were given in the issue itself.

However it wasn’t as easy as it seemed, as I first had to pass all the tests which were not getting solved by myself, even though I only added one line. I had to ask for help multiple times in the github discussion (looking at now makes me embarrassed 😂)

Eventually it took me 15(!) commits to finally get the PR to merge..

I soon merged a second PR in optuna, and shifted my focus to GA4GH. I spotted a project, which piqued my interest, and I saw had relatively less competition: Extensible GA4GH Client Library/SDK and Command Line Interface implemented in Rust. I have written more about the project at https://aaravmehta.hashnode.dev/my-experience-in-ga4gh-gsoc-24.

Making the Proposal

Here, when I contacted the assigned mentor for this project, Pavel (this was in early March), he responded instantly, and really guided me as to what he wanted. Since it was an only proposal org, I started making my proposal, by first understanding the project, and then trying to solve the problem by ChatGPT, google and most importantly, asking my mentor a lot of doubts.

He also assigned me an issue regarding making docker images private in TESK, and I did some work on the assignment, however I wasn’t able to complete the task within the proposal period time, and continued on it after GSoC selection.

After completing the proposal in March end, I also quickly made a proposal for Optuna in a few days.

I had taken the basic format from the propsals submitted by seniors at IIT BHU. They are stored at https://github.com/COPS-IITBHU/GSoC-Accepted-Proposals

Selection

Final Thoughts

  • My GA4GH mentor was very active, and I eventually had one of my best experiences at GA4GH. In optuna, the assigned mentor was very inactive. In the end, no proposal from Optuna was even selected. I think, one can only properly do GSoC if the mentors are active, and are willing to help out.

  • I worked day and night in March, and didn’t even go to classes in order to get selected for GSoC. I think that probably starting earlier is very beneficial, and might save a lot of workload in March

My Journey getting selected for SoB ‘24

I had heard about Summer of Bitcoin in my 2nd year from my senior Ankur Patil, who had also cleared it 2 years back. To be honest, I had very little hope for this considering only 50 people get selected across the world. But I had still applied for this, thinking that I can atleast get started with bitcoin even if I am not selected.

The entire process for this was very long and hard, and I am very lucky I got selected :)

Round 1: Screening Round

This was a basic round, where we had to write an essay as to our experience till now and why are we interested in participating in Summer of Bitcoin.

Anyone who has either done CP, contributed on github, or made some cool projects passed this stage into the bootcamp.

Round 2: Bitcoin Bootcamp

This was something very new and interesting, where over the course of one month, we had to read the Grokking Bitcoin book and every week we had a discussion, where everyone was divided into breakout rooms and we discussed about the chapters we had read the past week, and all the questions we had regarding them, and then rated each other on the basis of the quality of the discussions in a poll.

This happened in the month of Feb and March, ending in mid- march

Round 3: The insanely difficult assignment

Originally, this round was supposed to start from 15th March, and as I had mentioned in GSoC, I had started properly doing it in the first week of March, I would have had almost no time for Summer of Bitcoin. However luckily, this got postponed to April start, just when GSoC proposal period ended, so I was able to completely focus on this at that time.

Here is the assignment and my Solution.

The challenge was the simulation of mining process of a block, which includes validating and including transactions from a given set of transactions.

I have done this project, mainly by taking of learnmeabitcoin.com. I was able to grasp the basics from there, like what is a raw transaction, the different types of transactions like legacy, segwit and taproot.

There are a lot of different fields, and I figured out that to create a valid block, I will first need to verify the transactions using elleptic curve cryptography, and if valid, create a txid out of it and add it to the block.

I learned a lot of Bitcoin technicalities for this project, and this has been one of the most difficult projects I have undertaken. I had some help from Abhinav, who also did Summer of Bitcoin under Floresta this year.

Round 4: Proposal Round

Here, I looked at Robosats and the project to build a super-private p2p onchain pipeline that will look just like a basic P2TR if the trade goes well (no disputes), using BDK library, looked very interesting.

So, I contacted the mentor at Robosats, and he gave me a very basic issue, which I merged quickly. I made my proposal in less than 24 hours, due to clash with end semester exams in my college.

Here is the proposal I submitted: https://docs.google.com/document/d/1DpQHClsOv2vhl5cQ2TXlcN2UhSJpmqdzRv1z2M4PUwI/edit?usp=sharing

Selection

  • I got selected in Robosats, with f321x, in the same project

  • Here are the blogs I wrote about my work in Summer of Bitcoin: mid evaluation, end evaluation.

  • Here is a demo video I made during my mid evaluation.

Final Thoughts

  • Over the course of GSoC and SoB, I have learned a lot of how to build and use software, what are the proper standards in any project, how to communicate with other developers, how to present your work and how to code collaboratively.

  • I whole heartedly enjoyed working here, and would suggest anyone interested to contribute in GA4GH and Robosats, as they are very interesting projects that deserve a look

  • If you want to get into open source, learn to communicate, and talk with people in the particular community. The communities, in general, are very helpful and are always looking for new contributors.

  • Overall, this summer changed me from someone who had just done a few hackathons and knew some tech stacks to someone who can write any code in a professional manner, and has some real life experience. I am very grateful to open source for providing this opportunity.

0
Subscribe to my newsletter

Read articles from Aarav Mehta directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Aarav Mehta
Aarav Mehta