This post might be longer than others because it summarizes ~2 months of thoughts and the process of applying to GSoC.
Around 2 months before the GSoC opening for proposals submissions a friend of mine Paco told me about GSoC and encouraged me to apply. I’ve never heard about it before, but it sounded really interesting. I started looking for organizations and projects where I could fit, I thought about Llvm due to my interest in compilers sounded like a good fit, but I haven’t got into llvm as much as I’d like to and the projects weren’t something I felt a deep interest in.
Then I found Git, a few months before this I tried to start contributing to it, it is something I wanted because it is something I use everyday and contributing to it sounds so cool. But I didn’t because when I started looking into it, it felt massive and overwhelming, at that time I didn’t know what a mailing list was and the project felt intimidating.
Seeing Git as a GSoC organization was a click moment, I thought –This is it– Git has some requirements before sending a valid proposal, so I left choosing the project for later and focused on doing the requirements.
The coding itself in the microproject isn’t hard, the hard part was to know
how things work in Git, making a patch, committing with git commit -s expressing
correctly the git commit message and then sending it to the mailing list, which
looked like the hell of designers.
First time I sent the patch multiple times to myself to make sure it was correct, I thought –These guys must be so serious, one error and I’m out– Jokes on me, Junio Hamano replied to my patch very quickly and helped me with everything I had wrong. After that, I felt more confident, once I got the patch accepted after a few rounds of review, I searched for more small parts to contribute to. I wanted to show that I wanted this and I wasn’t just a guy who does the bare minimum and then applies hoping for the best, I wanted to show that I was really interested.
I made some more contributions that weren’t just updating tests and after I
felt confident I started looking at what the proposed projects for GSoC were.
I chose the last one
Complete and extend the remote-object-info command for git cat-file
because it involved networking, something I had just studied at university, and I
think it’s really cool.
This project was continuing work of two previous GSoC students, so I had a lot of things to read about before writing anything. I read all the cover letters for each version they sent noting what they’ve done in each one and for the last one I read what was left to do (bugs, features, style, etc). Once I knew what I was getting into, luckily, there were other proposals with feedback in the mailing list which helped me to know how I should write the proposal and what I should include in it. Writing the proposal took about a whole week having it as my main priority. I wrote it a few times before liking it. I could say that the hardest part was to write the timeline, at university you are given a deadline and that’s it, you don’t need to think what you will do in each week and how much time will it take. The second hardest part was the problem and solution, those parts are where you show that you’ve understood the problem, what’s already done and what I will do. For me, this being a continuation there was a lot of feedback about what was left to do, so I had to understand it for my proposed solution.
Sending the proposal v1 the day the application was open (16th March) was a mental checkpoint, I believe first impressions are important and I was proud of what I did, I got feedback for it and wrote a few versions during the application period 16th March - 30 March, while waiting for feedback about my proposal I kept contributing to Git to become more familiar with it and to have a stronger proposal. I didn’t just make patches, I also got involved in RFCs, made a few reviews and helped newcomers with their microproject for GSoC as Junio helped me.
After the application period, I was really proud of what my proposal was, I believe I was a strong candidate. I must say that the nervousness was real and even being more confident about what I can do I couldn’t get rid of the fear. I have no words to describe it but, this fear worked for me to be motivated to give the best of me until the results. After 30th March I had a whole month until the results, I kept contributing to Git, and I’m still doing it as there are still some weeks until the coding period starts. I kept up with my projects and studying for university.
30th April, The day had come. The results weren’t out until 20:00 (Spain is UTC+2 after the clocks change in spring). Once the results were out, and I received the email where it said that I was accepted, I was at the gym and I probably had the best workout of my life. I told my friends and family about it, I was really really happy, the next day I sent an email to my mentors Karthik who works at Gitlab and Chandra to thank them for selecting me and asking about the next steps which brings us here writing this blog post.
Summarizing, I believe that the process of applying to GSoC even if you are not selected still teaches you a lot and it’s worth all the time you spend on it. I think that applying to GSoC isn’t an excluding process where you need to be an expert or the best of your university, I think it’s doable by anyone who is interested and willing to put the effort to do it, and I’ll encourage more of my friends to apply next year.