Guest post by CNCF (LitmusChaos) LFX mentee, Namkyu Park, originally published on dev.to

Contributing to an open source that has already been participated to by so many participants is not straightforward. Most come up with questions such as, Which project do I contribute to? Where do I start? What level of prior knowledge do I need to have? For such reasons, some people give up on contributing to an open source project. LFX Mentorship can provide a great opportunity if you are on the same page.

I hope this post encourages you to start your voyage with LFX Mentorship as I walk you through my Journey of participating in the 2023 First Quarter Linux Foundation Mentorship.

Table of Contents

  1. What’s the LFX Mentorship?
  2. How can I participate? and What’s your background?
  3. So, What did you do during Mentorship?
  4. Challenges I faced
  5. What I achieved
  6. Conclusion

What’s the LFX Mentorship?

The LFX Mentorship program offers a 12-week mentorship opportunity for open source contributors, who will receive advice from professional mentors that are maintainers or core contributors of the project. This program encourages mentees to contribute to the community and open source while sharpening their skills. Mentors create and share a list of contribution items mentees in which mentees require to contribute.

Screenshot showing LFX Mentorship contribution

Mentees gain the opportunity to contribute to well-known projects, including CNCF’s project, working alongside core contributors of the source. They even give a stipend after the program.

This LFX quarter I got to get my hands on LitmusChaos, a CNCF incubating opensource project that dives deep on making cloud-native chaos-engineering accessible to multiple developer personas. I will discuss more details later.

Litmus line art of a character carrying chemical tube to storage

How can I participate? and What’s your background?

Applying to be a mentee is less challenging than you might think. All you need to do is to create a mentee profile and apply to the project of your choice. For a detailed application process, check out official docs. One thing I would say, I had never used LitmusChaos before this program (when applying for it, it is recommended to citing familiarity with the source is a plus, but not a requirement)

I am a university student majoring in computer science in South Korea. I took a leave of absence mid-semester and spent a few months gaining development experience at a startup, learning about Kubernetes and CNCF. I pleaded that I used Kubernetes and CNCF projects on my resume and was fortunate to get the opportunity.

Screenshot showing congratulations email from The LF Engineering Team to Namkyu in regards of acceptance to CNCF - LitmusChaos: Improve code quality and add unit tests of litmus chaos components mentorship program

So, what did you do during mentorship?

I contributed to LitmusChaos, a CNCF incubating project. The backend code of LitmusChaos was not tested during the CI. To introduce unit tests in LitmusChaos, I refactored the current backend structure into a layered architecture and added unit test codes.

Screenshot of LFX Mentorship page - CNCF - LitmusChaos: Improve code quality and add unit tests of litmus chaos components

LitmusChaos Core Contributors Sayan Mondal and Amit Kumar Das served as mentors. I had weekly sync-up meetings with them. In this meeting, we reviewed the goals we set in our previous meetings, discussed the progress, reviewed PRs I made, and identified any new goals or objectives that I would like to work towards. In our case, we documented our meetings in Docs, as shown in the photo below.

Screenshot showing LitmusChaos LFX Mentorship page - High Level Task

The first two weeks of my mentorship were an onboarding process. I read the LitmusChaos docs, tried LitmusChaos as an end user, and built a local development environment. These steps familiarised me with the project. During this process, I found a simple bug and completed my first contribution.

Screenshot showing Sayan Mondal writing "Your first PR was just merged" with The Office meme saying "Congrats!"

Since then, I’ve been contributing to the tasks assigned to me and I also actively propose ideas in sync-up meetings when I have ideas on how to move the project forward.

I’m not only contributing to codes but also contributing to the community. In LitmusChaos, We have a Slack channel that can discuss usage, issues, PR, and more. As a community member, I gave some tips to members who wants help.

Screenshot of chats between Namkyu Park and Litmus Chaos member on Slack

Challenges I faced

I’m not a expert yet, so I accept that my ideas may not be the right answer. Whenever I needed help, my mentors and contributors in the open source community have helped me. For example, I converted the project structure of Litmus Chaos to a layered architecture for better unit testing. During this process, I had two ideas and wasn’t sure which one was better, so I asked publicly on GitHub. The maintainer gave me feedback and I was able to design a better structure.

Screenshot of NamKyu's post in the chaoshub package

If you want to get a reference for the problem you need to solve, what do you look at? I recommend looking at CNCF projects. In CNCF, There are over 150 projects and all of them are well designed. I referenced a lot of other CNCF projects when I couldn’t come up with my own ideas. For example, in LitmusChaos, we accessed Kubernetes resources directly through a library called client-go. We don’t have to run Kubernetes during unit testing. I found a fake package in client-go But I didn’t know the precise usage of this package. So I referenced other CNCF projects such as argo-workflows and istio When writing unit tests for this part.

What I achieved

I’m a university student. English is not even my mother language. But having the opportunity to contribute to CNCF’s projects via LFX Mentorship and interacting with amazing developers from all over the world. In addition, I’ve created 5 issues, merged 7 PRs, and have 2 PRs in progress. I also uploaded a post about ‘Strategies for Writing More Effective Tests in Golang’ to the LitmusChaos tech blog.

Screenshot of LitmusChaos result contributed by NamKyu

And most importantly, I’ve been made a member of LitmusChaos in recognition of my contributions and community work to date. As a member of LitmusChaos, I will continue to contribute to open source and community after the LFX Mentorship ends.

Screenshot showing email invitation to join the Litmus organization and discuss more from Sayan Modal to Nam KKu

I hope to one day become a mentor and guide people who are just starting their open source contribution journey.

Conclusion

Honestly, When I applied for the mentorship, I didn’t think I would be selected because I had no knowledge of LitmusChaos and there were a lot of applicants. My advice to anyone who is thinking about hesitating to apply for the same reasons I was is to not hesitate to do so because what you have done is important, but what you can do is even more important! Being a mentee in the LFX Mentorship has been a huge turning point in my global career. If you’re interested in joining the LFX Mentorship like I was, submit your proposal here!

Thank you for reading 🙏

Namkyu Park

Member of LitmusChaos

LinkedIn | GitHub