My Experience with Open Source (GSoC)

Why Open Source?

Open Source Software is gradually becoming a norm, either as applications nurtured by dedicated users and enterprises or as built-in digital platforms used by millions of people, with Linux leading the pack for a long time. The importance of open-source technology is not only limited to being a low-cost alternative. It also offers benefits that were traditionally available by using proprietary software, along with community support. Contributing to open-source software offers many advantages that can open doors to new opportunities that extend well beyond any commercial aspiration. While open source contribution provides ample opportunity to progress one’s coding skills, it also helps software engineers gain exposure to new programming languages, SDKs, libraries, and more. It can also help individuals hone in on desirable soft skills, like learning to work in a collaborative, sometimes ambiguous, and unstructured environment. Beyond assisting a developer in achieving technical prowess, open source project participation can also expand personal networks, offering potential career and professional growth, as platforms like GitHub provide an easy way to both show potential employers what your interests and skills are and for them to verify if the expertise meets their requirements. Hence, active open-source contributions emphasize your expertise and knowledge more than certifications alone.

Here’s a list of some of the best open-source student programs.

About GSoC

Google Summer of Code is a global, online mentorship program focused on bringing new contributors into open-source software development. GSoC Contributors work with an open-source organization on a 12+ week programming project under the guidance of mentors. For 17 years, GSoC has focused on bringing new open-source contributors into OSS communities, big and small. GSoC has brought over 18,000 university students from 112 countries and over 17K mentors from 746 open-source organizations. About 7k+ applications are submitted by around 4.5k students annually during the application phase and about 1.2k contributors finally get accepted. With the expanding scope of eligibility criteria and flexibility in project size and timelines, it has become one of the most popular programs for open-source enthusiasts.

Google Summer of Code is an excellent opportunity for students to work on live projects that genuinely matter, exponentially increasing their developer skills and ability to work in a large team. As the name suggests, it takes place every summer, from April to August. During those months, selected students spend their summer coding for one of the several open-source organizations participating in the event. Students can browse the list of organizations taking part in the event, with most of them having an idea page indicating which part of their existing projects could use some more work. Students can then submit up to three proposals to these organizations. The proposal should precisely describe what you have planned to work on over the summer and why you should be the person to work on that.

My Experience

As a first year, I started contributing to the ROOT project and interacted with the org community. I was primarily interested in the ML and OS domain as I had prior coding experience in C++ and Python. An open-source talk organized by the Web Enthusiast’s Club during Software Freedom Week further encouraged me to look for projects aligned with my interests in relevant domains. After going through the previous year’s projects and reports, I decided to engage with the mentors at CERN and work on the ROOT project since it aligned with my interests. The mentors were very supportive, and as I tried to fix simple bugs and a couple of “good first issues”, I started to get the hang of the project and its codebase, the way various modules, and the PyROOT interface in ROOT work.

How to start Contributing?

  • Identify the specific domains that interest you and a basic understanding of the concepts or tools. Generally, good proficiency in programming languages or frameworks of your choice would help. Familiarize yourself with a VCS like Git and other platforms like GitHub (check out the GitHub student developer pack) or Bitbucket.
  • Go through the org requirements, community guidelines, and contributing guidelines, which are generally available on the org website or the documentation provided in the project repository.
  • Join the org mailing list and IRC of the communities or organizations with projects that interest you. Don’t spam the channels and engage or interact with the members in a proactive way.
  • Be patient while communicating with the mentors and the org community, and follow the community guidelines. If you feel stuck, try googling the issues/errors and dive into the code.
  • Search for the projects and interact with peers or mentors on forums, and feel free to ask questions on relevant channels. Going through the documentation provided in the project will help you better understand the project’s utility and codebase.
  • As an entry point, you can try to search for labels or issues marked for new contributors to help them kickstart their journey with the project and enable familiarizing them initially.
  • Learning suitable coding styles and conventions and maintaining a clean commit history and PR can go a long way in your journey as an open-source contributor and enable better inputs during code reviews. Writing clear documentation and structuring your code to meet standards is also very important while creating a PR, as the code should be understandable to another developer who might work on it in the future.
  • Lastly, do not over or underestimate your abilities and skills. A bit of dedication and enthusiasm to keep learning as you go ahead is all you need. The org community and mentors are very supportive and helpful to new contributors.

Experience as a GSoC-er

During my first year as a newbie contributor, the org mentors assigned me an evaluation task to build ROOT from source and run Mesh, a memory management library, with ROOT tests to analyze its performance and benchmark the results of the preliminary assessment. The next task was integrating one of the C/C++ ROOT modules with the library. The overall project goal was to match the runtime performance of the scripts while reducing latency and memory fragmentation using the page replacement algorithm published in a research paper. Due to the reduction of the org slots in the event of COVID-19, the proposal could not be selected. But the initial contributions and the draft of the proposal that I submitted remain the most valuable learning experience I had as a fresher.

In my sophomore year, after the online mid-semester examinations, I started contributing again, and with the subsequent proposal reviews by my seniors and org mentors, I was selected for the GSoC ’21 program. My previous experience with the project and the community was instrumental and helped me avoid past mistakes. Over the summer, I worked on the Pythonization of a ROOT module, RooFit, primarily used for modelling and analyzing data/observables measured in high energy particle physics (HEP) experiments. The project aimed to simplify complex workflows and enhance the PyROOT python interface. The entire program, from the community bonding period to the final presentation, was truly transformative and memorable, along with the spirited discussions with my mentors and fellow contributors. As a result, I reapplied for the ’22 program when the application window opened.

My key takeaway as a student contributor has been that one should prioritize the learning process over getting selected or merely passing the evaluations. The essential part of getting selected for GSoC is getting a whole idea of the program. Every student should start by going through the GSoC website. After getting a clear picture of the program, one can list organizations that work with your skillset and about which you are passionate. Most organizations select students who have previously contributed to their code base since they would have an assurance on the quality of code these students could produce — rather than selecting solely based on their proposals. One can also be in touch with the org community and become an org mentor in the future after completing the program. I believe an organization you feel passionate about can be a life-long asset for learning new skills.

By Harshal Shende, Final Year Department of Electrical and Electronics Engineering

Leave a Reply

Your email address will not be published. Required fields are marked *