Guest post originally published on Medium by Hemanth Krishna, LitmusChaos Mentee

Hey Folks! I am Hemanth Krishna 👋, a junior undergrad student pursuing Computer Science at the time of writing this article. I recently participated in Google Summer of Code 2021 where I worked on a project named LitmusChaos, which is an Open Source Chaos Engineering tool. Lots of new terms to take in 😅? Let’s break it down one by one!

What is Google Summer of Code?

Two words, Open-Source Software and Students. Google Summer of Code is a global programme by Google (duh) to bring these two terms together. It provides a great platform and exposure to encourage students to participate in Open Source Software development and inculcate the Open Source culture amongst young budding minds during their summer break.

Google Summer of Code

To give a gist, major open source projects and organisations (such as CNCF) participate in this programme and put up project ideas. The projects and mentors are selected and put up on the GSoC (Google Summer of Code) website.

Students have almost a month-long time to explore these projects and submit a proposal of a project idea, it may be a completely new idea or something that the organisation has put up (you will find mine below)

The Mentors of the organisation then review these proposals and select a mentee to mentor them and overlook the completion of the proposed idea in a specific duration, it was 10 week for the 2021 programme. That is it! It’s a straight forward simple process. You can find more about the timeline and previous year projects over here.

Now we know what GSoC is, I had submitted my project idea proposal to a project named LitmusChaos which is a sandbox project of CNCF. Does that sound confusing🤔? Don’t worry, let’s break it down one by one!

What is Cloud Native Compute Foundation (CNCF) ?

CNCF (Cloud Native Computing Foundation) is an organisation that houses the fastest-growing open-source projects that shape the future of cloud computing and the world of DevOps. Some famous projects used worldwide housed by CNCF are KubernetesPrometheusEnvoy, and, much more!

Cloud Native Computing Foundation

You probably guessed it right! LitmusChaos is also a project (sandbox) housed by CNCF similar to Kubernetes or Prometheus. Hence, my project idea proposal was on LitmusChaos, whose parent organisation is CNCF.

Google Summer of Code -> CNCF -> Litmus Chaos

What is LitmusChaos?

Litmus

Litmus is a Chaos Engineering Platform, which takes a cloud-native approach to create, manage and monitor chaos. In layman terms, LitmusChaos is a tool that helps you stress-test your infrastructure and prevent potential outages. It is a tool SRE (Site Reliability Engineers) and Developer have fun with as they witness the strengths, efficiency and resiliency of their codebase and infrastructure.

One can run various experiments hosted on hub.litmuschaos.io (Chaos Experiments are more fun than your high school lab experiments 😛)

You can learn more about LitmusChaos by visiting the project on GitHub or by checking out the Litmus YouTube ChannelGitHub – litmuschaos/litmus: Litmus helps SREs and developers practice chaos engineering in a…Litmus helps SREs and developers practice chaos engineering in a Cloud-native way. Chaos experiments are published at…github.com

If you are interested, come to and say “Hi” by joining the slack community and attending the weekly sync up meets! 😃

My Acceptance into the program

Program timeline
Simple timeline of the program

As a tech enthusiast along with my interest in open-source tools, I keep exploring various frameworks and tools that enables me to develop applications that aim to solve some real-life problems. I encountered litmus, while I was exploring the concept around Chaos engineering.

As the first steps, I followed this page to check if any tools align with my skills and interests to apply to the Google Summer of Code programme, I started this process around 3–4 weeks before the application deadline. I saw litmus was listed with a project, reading the project description I had few ideas of my own, and started looking into the codebase of litmus.

As any new open-source developer to a new tool, I tested out litmus myself as a consumer of the tool, then later went through good-first-issues so that I can familiarise myself with the codebase. I eventually ended up contributing and got around 3–4 PRs merged and involved myself within the community.

I carefully prepared my proposal covering the requirements along with my ideas that could benefit the project and had submitted it on the Google Summer of Code dashboard. You can find my submitted proposal here.

Eventually, the mentors of the litmus project had contacted me for a quick call regarding my application where I expressed my interest, my experience with the required skillset and why I think I would be a good fit as a mentee to execute and implement the project.

After the meet, I was given a small task to implement a basic Oauth authentication system in GoLang and was given about 24–36 hours for the same. I completed the task, hosted it on Azure and had sent the link to the mentors and had minimal hopes regarding my application.

It was around 11:30 PM, I was in the middle of completing my university assignment which was to be submitted by 11:59 PM (your typical engineering student 😓) and suddenly I receive this email into my inbox!

Screenshot showing [Litmus Portal] Authentication Module Refactor and OAuth Implementation proposal has been accepted by Google Summer of Code
My acceptance email in Google Summer of Code 2021

I still remember being really happy and enthusiastic about learning something new for the summer and being mentored by some cool engineers.

After few days of acceptance, my name and project were updated on the GSoC 2021 Projects page.

What did I do for 10 weeks?

My initial primary task was to refactor the litmus-portal authentication server and integrate an flexible and scalable OAuth2 based authentication system to the server, but my task grew into something later on different where I learnt a lot of new things.

Eventually, with further discussion with my mentors and community, I re-wrote the entire authentication server instead of refactoring for better performance, the average response time for an request was initially whooping 9 seconds! and this was bought down to sub-second response times. You can find more details about this on the GitHub PR.

Screenshot showing "refactor: litmus-portal authentication server #2867" on github
My PR for first phase of GSoC 2021

This task is what served as my first evaluation checkpoint, and I passed this evaluation with generous and motivating comment from my mentor!

My secondary task, was integrating an flexible OAuth2, initially, I followed basic OAuth2 system of GoLang and created a Proof-of-concept

The flow architecture that I proposed is shown below

Litmus portal authentication server architecture

Later on, we came across an Cloud Native OIDC Provider named Dex. This allowed us to add various authentication features, and I also customised the server to match litmus-portal theme.

Hence, the new architecture proposed turned out to be like the following image:

Authentication server with Dex Integrated architecture
Authentication Server with Dex Integrated

Eventually, I presented my integration to the litmus team over a call, and got some takeaways and green flag for the integration 😃

Litmus Portal Dex Integration presentation by Hermanth Krishna
My presentation of Dex Integration with litmus team

I learnt a lot over the period of these 10 weeks regarding GoLang APIs, OIDC Providers, various system architecture patterns and how to write better code! The fact that the code I write is in use by various developers and companies to run and test their system amuses me 😯, You will probably find me contributing to litmus after my GSoC Period too! 😄

Should I apply for GSoC? If yes, then how?

Gary Coleman meme saying "Open Source = "

If you are a student who is enthusiastic about software development, technology in general, would love to explore and be part of open source. You should definitely apply for Google Summer of Code! It is really cool to get mentored by project maintainers who have a great experience in various fields.

Here are few perks of Google Summer of Code:

Now, coming to the question of “how?”, the approach differs from person to person, but some traits common amongst all is the willingness to learn, network and, giving back to the community. You ideally need to not know every nitty-gritty detail of a programming language or a framework, or the whole codebase of the project for your proposal to get accepted. Here are few pointers that might help you with getting accepted into GSoC:

Sayonara! 👋

Overall my journey has been a great experience and I would like to thank my mentors Raj Babu DasSoumya Ghosh Dastidar, and, Ajesh Baby for guiding me throughout, I would like to thank the community that’s always active and helps for the betterment of such tools, and, I would like to thank you, for reading till here 😃.

This summarized my journey as a Google Summer of Code Mentee and I hope this blog was informative. If you have any questions regarding my project, Cloud Computing, or would like to discuss tech in general, you can find me on:

May the source be with you 😄

453