I got selected by Conversations.im for Google Summer of Code 2018 for the project XMPP Compliance Tester. From knowing absolutely nothing about Conversations.im or XMPP before the organizations were announced to being selected as one of the three students for GSoC from that organization, it has been a great journey. I can’t stress my gratitude towards Daniel Gultsch, my mentor for being so helpful. So, let’s begin.

Background

I first came to know about Google Summer of Code last year through Quora. Like most things with Google in its name, I just assumed it was some extremely prestigious program which was out of reach for someone like me. Browsing through the list of projects didn’t help either. I knew a bit of Android, so I desperately looked up all the android projects. But all of them had some tech jargon that threw me off. I finally discovered a project that had none of such jargon. But trying to understand how it worked turned out to be a nightmare. I opened random source files and tried to understand where they fit with the rest of the project. This naïve approach was doomed to fail. I gave up eventually and this experience re-enforced my belief that GSoC indeed required a “genius”.

That's where you are wrong kiddo
Opening random files to understand the whole code

Fast forward a year, now I had some very basic experience in making web apps using Node.js and at least I knew the jargon associated with web apps. But, I wasted all my time during winter holidays and I had nothing to show for a complete year. I had no work experience, no open source contributions, poor competitive coding performance and bad grades. I was full of guilt and I was desperate for finding a way to redeem myself.

Preparation

I made up my mind to give GSoC my best shot. I knew that Android was my forté. So, I searched “android” in the list of organizations and quickly scanned all the organizations using Android. I liked a couple of projects because they sounded quite simple and I had previously done some similar things in my past projects. I joined the group chat for those organizations. But, sadly, it was already flooded with other students experienced in Android development. I quickly realized that for getting an Android project, I had to compete against hundreds of other students who had been contributing to the organizations weeks before the projects were even announced. I knew that if I were to get selected I had to choose a project which was a bit more complicated or at the very least did not involve Android. I stumbled upon an organization that had exactly that kind of projects, Conversations.im. I saw all the project ideas for Conversations.im and became overwhelmed with the incomprehensible jargon. The very first idea was “Turn Compliance Tester into Webservice”. At first glance, I thought “This sounds way too complicated”. Then I realized that the project wasn’t as difficult as it sounded. It just consisted of creating a web app for an existing command line tool. I confirmed if I had understood the project correctly with the mentor. Then I sent an e-mail which looks extremely embarrassing to me now. I basically asked him very stupid noob questions about the project. After sending the questions, I realized I had made a blunder and quickly started researching on the project and making notes. I had to make a pull request that same day to make up for the e-mail. I found guilt to be an extremely strong motivator. By the end of the day, I was actually able to create a pull request for an issue which was marked as gsoc-teaser. The next day, I was able to make another pull request. Now, it was clear to me that the project’s scope was very small and I needed to add something more to it. I discussed with the mentor on ways to expand the project. He gave me some great ideas which I incorporated into my project proposal. I started researching more into XMPP, watched some talks and tweaked my project’s deliverables accordingly. In the end, I was sold on my project. I also made a contribution to another related project. In total, I made 3 pull requests to the organization. (Few students had made more than 10 PRs, but ended up not getting selected)

Key takeaways:

  • You can understand it. Just give it some time.
  • First impression is not the last impression. You will be asking stupid questions and it’s fine. Mentors don’t necessarily judge you on that (show that you want to learn)
  • Communicating about your project and making sure you are on the same page as your mentor is extremely crucial.
  • You don’t need a dozen of PRs to make it to GSoC. Making contributions is important, but your actual project matters a lot more

Writing proposal

This was the most difficult (and also crucial) part of the whole process. I had spent hardly a week’s worth of time on actual research and contributions to the org but writing the proposal took ages. It took me 12 days to finally get to a stage where I liked my proposal. It involved countless iterations of correcting grammar, adding details, removing clutter, adding additional points, removing redundant points… It was the most mentally exhausting experience I have ever had in my life. Sometimes, I felt like the grammar part of my brain would stop working, and all of the words started looking like absolute gibberish. All of it stopped making sense anymore. During those phases, I would make changes which would break grammatically correct sentences. I can’t stress how grateful I’m to Google Docs for rescuing me out of such ugly situations. I had no idea about the quality of the proposal I had written. But at the end, all of this effort was worth it. My mentor was impressed with the first draft of my proposal. He suggested a few changes. I made those changes and submitted my final draft a few days into the student application period. Now, it was going to be a really long wait for the GSoC results.

Key takeaways:

  • Writing is HARD, especially if you are like me, who has never actually written a long document. At least keep 10 days for writing a good proposal.
  • Use Google Docs for writing your proposal. Its templates look great and version history is awesome.

And on 23rd April, I received this

GSoC '18 selection e-mail
GSoC ‘18 selection e-mail

Conclusion

  • Follow the guides provided by Google, especially read how to ask the question and interact with people involved with open source (which I read much later than I should have)
  • Those who say getting into GSoC is easy are not geniuses
  • Just look up the term in the project title before assuming it is something impossible to learn
  • Search and read on how to approach large/unfamiliar codebases. Don’t dwell on minor details at first.
  • Writing proposal is very hard. Use Google Docs to reduce some of the burden.
  • You should have good communication with mentors.
  • Success is not guaranteed despite doing all of the above if you run out of luck. It wasn’t your fault if you didn’t succeed. Keep on trying.

In the next blog post, I will be writing about my project and its specifics. Stay tuned!