The plan to apply for GSoC ’17 actually came in December 2016, just after the end of my 3rd Semester. There was nothing much to do in the long break, except read editorials, blogs, Reddit, Quora , etc. After the first 3 days I was bored to death. Suddenly one night I realised that the summer vacations would last much longer and I would definitely get bored of the idleness that had engulfed my existence. Something productive had to be done apart from watching movies and TV shows.
First thought which came to my mind was to apply for an internship of some sort. After scouring through various online portals like Internshala, I came to a horrifying conclusion. I knew nothing! I couldn’t even understand what half the stuff the companies expected the interns to know, let alone do! This got me thinking that it is better to improve my current skill set rather than venture into the unknown.
Now I was clear about one thing, there will be no internships until I upgrade myself. I looked through my 4th Semester courses and realised that they contained advance algorithms, databases, etc but no new technology. Hence I knew it was my responsibility to learn stuff on my own. For this purpose, I scoured the various Internship openings. Most of them were Android app development. Now as a rookie, I had no prior experience in Android. After some research I found out that Java is used to code the apps. The APIs just need some basic research and it is really simple to develop an app. So first I had to pick up my Java game to a respectable level. For this I started preparing for OCJAP and gave the exam after 2 weeks preparation. It gave me some fluency in Java and I felt confident. Passing the exam was a cakewalk after that.
However, after talking to a few friends who were doing Internships, I realised thy were not learning as much as I expected they would. Most of them had interned in big companies like IBM, Oracle, Bell Labs, etc. However I was told that the main learning happens not in big firms but with startups and projects. This seemed logical to me and hence I started looking at projects. Obviously the first step was to contact college professors. Projects were not only scarce at this time but also were reserved for the “elite students” (CGPA > 9). I was disappointed by the result and considered leaving the issue here. I knew I had firm grip over the things I did know.
At this time I started looking at GSoC. At first it excited me that such a colossal effort by Google helps young software enthusiasts to work with professional Open-Source organisations. However looking at the archive, I was completely lost at sea. The stuff looked highly advanced, much much higher level than what I had ever seen. After scouring, I came across an organisation (name left out). One of their projects was- designing an app and chrome extension. Seemed easy to understand but I had no idea how to start with an extension or an app. I even cloned their repository to get some idea, but nothing came around my head. I let it rest here because it said organisations for the 2017 program were to be announced in February.
I left at this point because, without knowing the list of projects I could do nothing. However, I got familiar with some of the communication channels the organisations used. I even looked at a few sample proposals which have to be submitted to an organisation while applying. Hence, I was a little prepared as to what I had to do once they were announced.
27th February: Announcement date of organisations and their projects. When I first saw the list, I was overwhelmed. There were so many organisations and each had so many projects. I figured it is impossible to filter them without making a few decisions.
1st: What language I am best at? C and Java were the obvious choice. I knew Python but there was not enough time nor will to go very deep.
2nd: What would I like to do? I know I don’t want to design webpages or develop an app. What really interested me was doing something at the back-end, learning something new in terms of technology which would actually interest me.
Making these 2 decisions eliminated almost 3/4th of the organisations.
3rd: What topic is of interest? Somehow I came across FFmpeg due to my long term interest in music.
To be honest, it was near the top alphabetically, used C and looked very interesting. I looked at the projects it was mentoring. I could not understand a single one of them. I joined the IRC channel, and turned out someone was doing the first project. I asked on the public chat about all of them and shortlisted it to Ambisonic Decoder. Wikipedia link was well written and I honestly thought I would be making something new from the scratch. The qualification task was to “design a simple square decoder”. After grilling my mentor to some extent, I finally understood a little of what to do.
All Ambisonic technology related stuff is in my next post.