What gsoc taught me?
Published on Medium.com here
My summer of 2022 was filled with amazing adventures thanks to Google Summer of Code 2022. GSoC (or Google Summer of Code) has been a really great experience for me this year especially because I am a first-time GSoCer. Moreover, I applied to this program for the very first time in my life and fortunately got selected. I don’t believe that my initial proposal was really great but it did the task it was made for. The project I have worked on is as cool as ice cream and more exciting than a roller-coaster ride.
At the time of writing this blog, I am in the 12th week of my GSoC coding period. This means this is the last week of work and we need to gear up for the final submissions. It really hurts me to say that those cherished moments I lived through the whole summer are now part of the past, and I would like to pen down my every thought, emotion, learning, and experience in this blog post. My emotions have been all over the project board and I haven’t really wanted to do away with them. Especially after spending 11 weeks of my summer looking at it and jotting down what work to take up next. For this is going to be huge if not long, I’ll break it up into three parts, morning, noon and the evening (I won’t call it night because it just doesn’t sound good :)) each portion justifying the learnings I acquired for the whole length of the program.
The morning
I am not the person who likes to get straight into the business and this makes me a bit less interesting. Please excuse me for this and since I am not at all a creative person please bear with me and my boring blog.
I do remember I was having my pre-university entrance exams around early October of 2021, thanks to Mr COVID-19 our academic schedule was devastated entirely. Personally, I enjoy the whole exam process and it’s fun but the vacation that follows is more fun. Those vacations were crucial to me because I was planning out things I’ll do in my undergraduate as a student and decided to do GSoC at least once in my academic life. It all started back then! Being a first-time open source contributor was very intimidating and could make anybody nervous easily.
But taking the first step towards your goal is the most crucial one however intimidating it feels. – Lesson No. 1.
So I geared up for GSoC and started listing down organisations I would apply to around December 2021. As January came, I got admission into an undergraduate college (spoiler: taking undergraduate admissions to STEM programmes in India is really struggling) I listed the skills I would require in any project from those organisations. And I started learning them. I don’t know how quickly February passed and march came in.
By this time Google had announced the list of accepted organisations and I became happy to see IOOS in there. I went to their GitHub space and found projects potential projects listed for this year. I deeped dive into the list and found what interested me the most. It was the "pyobis revamp project". To be honest I preferred it over other project ideas because I had a passion for marine animals and ocean biodiversity conservation. Those tiny little creatures, flappy fishes, and happy dolphins are what interests me more than even computer science. Even though the project demanded python packaging skills which I clearly didn’t have at that time yet I got started working on it. Before starting with writing a proposal I started to look at the codebase so that I understand the project better. Starting early gave me enormous time to improve my understanding of the project and I could do many experiments with the package before even getting accepted.
Lesson 2 Start early because not only you get more time to look at the project, but it helps you do some experiments with it, challenge your understanding, tinker with the resources and iterate over your proposals and make it better each time.
As my understanding of the project grew more, I could create some fixes for the broken package. To be very clear, this package relied on OBIS API v1 and was created way back in the end of 2015 but un-updated since then. So, OBIS advanced to API v3 while pyobis was still designed for v1, and this is how pyobis just broke and stopped working. Working on a broken package was like struggling with broken pieces if not feeling like starting from scratch. But since I had invested a lot of tune understanding of the codebase and past documentation, I finally succeeded in fixing it and bringing it to a state where it could be used. I ended up writing two patches and getting them merged before Google announced the list of accepted applicants.
Lesson 3 Persistence is the key. Having talent, or being a genius can only help you a bit in the process but persistence is what converts efforts into results. Do not lose hope when things are not working as expected. Spend some time with it you will eventually find a solution.
During the application period itself, I got feedback from project mentors on my proposal and I iterated over their feedback and improved my proposal. So, getting feedback on your proposal from mentors is a crucial step before application. And I recommend everyone do it
Lesson 4 Respect everybody. We must accept the fact that the people who are doing Open Source are actually having 9-5 jobs and they are working on Open Source mostly due to their passion. They are really busy people, and it can take a lot of time, sometimes weeks for them to respond. So, stay calm and wait for their response. This is true in general too, you do not know what the situation is with the other person and so one must not form pre-conceptions about people when they are responding after a long delay.
So, 20th May was the date when accepted students would be announced. I was waiting for that day eagerly. Since I am situated in India by the time Google would announce the results the clock would already be pointing at 11:30 at night. So I waited for the whole day on the 20th trying to take my mind off that thought. I slept early that day to just get over the anxiety of the result. I woke up with a fresh mind for the day. It was the 21st on my calendar and a pleasant after-rain morning. I knew the results would have come but I was so anxious that I opened my inbox only after my breakfast (having something in your stomach actually helps you cope with rejections a bit easier, this has been my personal experience). At first, I thought I would be rejected but to my surprise, I read the subject line of one of my emails in the inbox. It read “Congratulations! Your proposal for IOOS has been accepted.” I was feeling like being in the seventh heaven. I couldn’t believe it. The very first thing I did next was thanking God and call my father. I was extremely delighted, and maybe for the first time in my life, I felt like I had achieved something. I was way happier and amazed than I was when I first saw my high school results (spoiler: I had got a national rank of 6 in my high school final year. We call it the class 12th in India)!
Lesson 5 Focus on your work and effort and don’t stress the result. Just leave the result and it will come out as what had dreamt of. PS. I hope I am counting the numbers right :).
The next month was the community bonding period. I will need to skip the details of it since I have crossed the self-assigned character limit of 5k characters (it’s some 7k characters now). You can read my community bonding period experience here
So, it was June 13 when the official coding period kicked off. I had an edge here because I really knew what the codebase was and what it demanded, but I was totally clueless about where to start. This is where my mentors stepped in. They scheduled a weekly meetup for the project, set up the agenda for the first meeting, and helped me familiarize myself with the GitHub workflow. The very first meeting would stay in my memories forever, it was really my first call on a project. We talked about the whole workflow, the “Test, Develop, Document” practice and got it all working - something I learned for the first time, and I am glad I am still following it. The fact that documenting at the end of development is terrible is really true. And to save us from the nightmare, we set up the practice to document each and everything be it weekly tasks, objectives, accomplishments and meet agendas. It’s truly helping me now. Thanks to my mentors!
The first week was good - it was amazing. Although, I wasn’t able to code a lot but I learned a lot about the whole design process. I got acquainted with the GitHub culture very closely and still throughout the program I am learning new things every day. The morning is over and this part of the blog too, the clock is now ticking towards the afternoon. Tap on this link to step into the afternoon.