Life is a journey... and the experiences it showers along the way make this life-journey interesting and satisfying (well, at-times). If you are feeling that I philosophize a lot, I am not. No. I don't generally think so intensely enough about the bygones to philosophize. Today, I seem to be in the mood. Maybe, it is this platform. I came to know about this platform by sheer coincidence. And it led to me to try out writing. It was sometime in Oct-Nov 2019 that I began with writing on the PyCon 2019 experience. It is not even a year since that conference and now as I think of the travel we undertook from Jammu to Chennai to attend the conference, I feel like that was a different era altogether. Read the article on PyCon 2019 and you may also feel the same.
I am moving on ahead now with a sense of accomplishment that I have successfully concluded my summer of coding in the backdrop of disruption caused due to the the Covid-19 pandemic. It turned out to be a learning packed GSoC’20 journey with International Neuroinformatics Coordinating Facility (INCF). I wanted to share my experience for the benefit of other aspiring coders & GSoC enthusiasts.
</ So, about me... [tad bit of dramatization ahead]/>
I completed my 3rd year of B.Tech. in computer science from SMVDU, Jammu, India. When I got into the college, I literally didn’t have any knowledge about programming. But I was so curious to learn anything and everything about technology. I began with C language like the thousands and lakhs of students of the Indian tech-education curriculum. And, why not! It is a good starting point for any would-be programmer. I took to the field and began learning web development. Quite unsurprisingly, I got to cross paths with the open souce world... At this point, I feel it is justified to dramatize it a bit: I got to deep dive into the Open Source universe... a whole different universe of Open Source that has got an ideology, frameworks, tools, forums, dedicated leaders & compatriots, a Code... and what not!
</ GSoC... check-in & my first step, a success />
Google is a big part of every student's life. So, anything associated with Google interests especially coding enthusiasts. In my college, Google Summer of Code (GSoC) is a very popular term and hard to miss. So, after some research and with advise from my seniors, I got to know about this and then I decided to give it a try too without thinking much about the end results. I applied in my second year for the first time in GSoC but unfortunately didn’t get in.
Then after a year and working a bit towards improving my credentials, I started looking out for organisations in January for projects in my field of interest. I searched a lot and found a project idea in INCF organisation which matched my field of interest. From that point onwards, an awesome journey ensued with INCF organisation. I understood the project idea and discussed it with my mentor Lia Domide and submitted my proposal only in the INCF organisation.
On the same day, in the night I emailed my mentors and then we planned about our first intro meeting and other initial details. Getting into the GSoC is just one step and it's definitely not the end because in the course of the summer, there were to be three evaluations.
Trivia: The day of results was eventful - so much so that I haven't slept for the whole night. While it may not seem (in itself) very eventful, for someone like me who strictly adheres to the sleep time.... it is a big thing. Let me just say, that I just cannot compromise with my sleep time... It is not something that is easily negotiable.
My Primary mentor was Paula Popa and Lia Domide was also my mentor. Both are from Codemart, Romania and I will be ever so thankful for the opportunity to have them mentor me. I have learned much more than just coding or web technologies from both of them. I was able to learn about how to work efficiently. Thank You, Paula & Lia.
</ Vision that led my project />
The idea was to make a WebGUI for TVB reconstruction pipeline and integrate it with pegasus WMS. The reconstruction pipeline takes RMN images as input and processes them, then produces files that are compatible with TVB. Pegasus WMS provides the job status and job execution statistics.
</ Getting started with the work... together as a team />
Following the Intros and ice-breaking, I got to interact with my mentors and we discussed the workflow of the project. Soon after that, the main project's workflow was further classified under three phases with an outline of tasks in each of the three phases. We discussed all the various tools, plugins and other utilities that we would put to use in the near future. I started the coding in this period with the initial setup of my project from scratch.
</ First Work Phase />
- Completed the initial setup of the project.
- Implemented the Landing page, Input page and Configuration Page.
- Connected all these components and refactored some part of the code.
It's now obvious that one's has got to get blockers when implementing the good things. While I as setting up the blockers, I encountered issue with saving the configuration data in .properties file. When the user edits and updates the data eachtime, it should overwrite dynamically in the file.
It was the first experience of dealing with an issue... after trying out a few workarounds, I solved all the issues. Here, the mentorship of Paula helped me tide over this issue. She always helped me in finding the detailed approach to solve the error. We covered all the milestones as discussed in this phase.
</ Second Work Phase />
- Ran the changes in run_sequentially file accordingly.
- Worked with Docker image of Tvb-recon and Tvb-recon software and changed it in such a way that we can use in centos and start condor inside it.
- Solved some minor issues.
- Explored ways of integrating the Pegasus WMS and studied how this api works as well as refactored the useful part.
Basically this was the most challenging phase and also contributed to most learning I gained in the course of GSoC. I have learned the ABC of docker. My mentor Paula Popa helped me a lot in this phase especially in the docker errors debugging and in the process taught me many more as almost everything in this phase was anew for me.
I had my share of the most dangerous blockers - the black screen of death. Because Docker is a DevOps tool, maintaining and using daemon processes is little difficult in the initial stage. This is so because it uses a lot of resources. So clearing up volumes, cached container, large image running container among others demand our attention.
So, I installed ubuntu again and all data was lost. I got an extra round of practice when I had to install the software all over again, almost redoing everything from the start and pulled the code. A full day's efforts later, I got back to the latest version. I began to consciously feel grateful to my laptop that served as my window and medium to the world outside. This project and so many learnings in this process happened due to my laptop.
</ Final Work Phase />
Then Final month of my time at GSoC started with a fast approaching conclusion phase.. what an awesome awesome journey!! It was sobering a bit. As part of this final phase of the project, I got around to closing all that I started working on, specifically:
- Completed some changes for the manual part of the project.
- Implemented the workflow list and job list component.
- Completed the detailed readme for the project.
- Done the initial work for the DAX graph.
Completed all the final changes of the project.
In this period, I faced a number of tests - for instance, how to fetch data from api if it is unsecure and uses basic auth and on connecting the workflow labels with jobs component? Similar tests kept me active and working to find solutions.
If this write up in anyway suggests that the blockers are the only hindrances I faced - not at all. Those are just a memorable among the hindrances and consumed more time to debug. I would be collating the common issues faced as in a technical write up focusing on just those! That said, the blockers can make a person more experienced. As a rule of thumb, you could consider that if you don't end up facing blockers, then may be you are on the wrong path and it merits revisiting and a relook.
As I now consider this awesome GSoC journey conclude, I am certain that I am only getting started with the open source.
</ A note on my mentors - Lia and Paula />
If ever I get an opportunity to mentor or guide anyone, I have much to take from how my mentors Lia and Paula helped and mentored me. It not only gave me the experience of working with professionals located in a faraway continent, it also helped me in feeling confident. It led me to appreciate that knowledge and skills actually unite people than differentiate. I have never felt discouraged while working on the project because I was learning new things everytime and that is because of my mentors who always encouraged and motivated me. Thanks again to my mentors for inspiring me to be a better developer as well as a better person.
</ Onward to the next mission... />
I am rearing to go onward to the next mission among which is also to attend classes and perhaps take up another internship to be able to get real life work experience and exposure. I know one thing for sure - that I will be in touch with open-source and hope to regularly update and contribute to the open source universe to the best of my abilities.
</ Perks of the GSoC />
- Work with experienced developers and organisations on real-time projects.
- Scope to personally develop communication skills, time management, professional work skills, etc.
- Looks great on the cv / resume
- Scope to network
- Goodies from Google (that due to Covid-19 pandemic the 2020 Batch didn't get)
- Certificate (on successful completion)
- Stipend (or I should be saying really good stipend?)
- One life time referal too for jobs and events at google.
- ...and everything extra that comes with such an experience.
</ Piece of advise...that matters />
There is a myth about GSoC that it requires the applicant to be a pro coder. Anybody can approach GSoC and most important is that you have the zeal in yourself. Make some cool projects, work on your skills always and you are good to go.
Search for organisations and projects that match your field of interest and start solving initial issues, connect with community and interact and it's done. :)
No organisation is small or big in Goggle summer of code. No matter where, I am sure, you will gain new learning. Just work with the organisation which interests you.
Every college student who is interested in open source must at least apply for GSoC. Obviously getting selected in GSoC is uncertain because there is lot of competition. But even to apply is something that would add value to you. Be consistent, be nice, be respectful to the community. Whether you will get in or not is another matter altogether. But surely you will get something amazing through this journey. Open source contributions matters always.
</ Signing off.... (until we cross paths again) />
If you want to do anything in your life the only thing which matters the most is punctuality, consistency and the determination. Always do the hard work first and then with time, you'd get a chance to heartily work.
Thanks for reading and giving your valuable time. May the FOSS be with you.
Any suggestion for improvements are always welcome. I am on Twitter and LinkedIn