My LFX Mentorship Journey: The best starting point for Contributing to Open Source
Tags: lfx, mentorship, litmuschaos, opensource
Published: 2023-05-17 08:29:36

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?](#whats-the-lfx-mentorship)
2. [How can I participate? and What's your background?](#how-can-i-participate-and-whats-your-background)
3. [So, What did you do during Mentorship?](#so-what-did-you-do-during-mentorship)
4. [Challenges I faced](#challenges-i-faced)
5. [What I achieved](#what-i-achieved)
6. [Conclusion](#conclusion)

---

## What's the LFX Mentorship?

[The LFX Mentorship program](https://lfx.linuxfoundation.org/tools/mentorship/) 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.

![contribution_items](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/43l2y7jq2gyjusfijhbp.png)

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](https://docs.linuxfoundation.org/lfx/mentorship/mentee-stipends) after the program.

This [LFX quarter](https://mentorship.lfx.linuxfoundation.org/project/a222f58a-08ee-4727-80c8-41c4d6f5a2a9) I got to get my hands on [LitmusChaos](https://litmuschaos.io/), 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1mfuj0hq1dvkst2ilmdc.png)

## 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](https://docs.linuxfoundation.org/lfx/mentorship/mentees/apply-to-a-project). 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.

![acceptance](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eg137bn4o0nzceo2tkfu.png)

## 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.

![lfx_litmus](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f2y56v7jeheuv775ozuf.png)

LitmusChaos Core Contributors [Sayan Mondal](https://mentorship.lfx.linuxfoundation.org/mentor/21102070-974f-49fb-9a5c-08950670f081) and [Amit Kumar Das](https://mentorship.lfx.linuxfoundation.org/mentor/5f1a6a37-2b07-461a-90ab-e48a99ff254e) 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.

![mentorship docs](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zv1eyv44drxv9r9glqmf.png)

The first two weeks of my mentorship were an onboarding process. I read the [LitmusChaos docs](https://docs.litmuschaos.io/), 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.

![first_contribution](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pzams57aax8zx2zcb3vb.png)

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](https://kubernetes.slack.com/?redir=%2Farchives%2FCNXNB0ZTN) that can discuss usage, issues, PR, and more. As a community member, I gave some tips to members who wants help.

![contribution_to_community](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7yc62vemv41lh4htrl7i.png)



## 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.

![community_helped_me](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wsk73p1z6e3oof0kky2z.png)

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](https://github.com/kubernetes/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](https://github.com/argoproj/argo-workflows/blob/master/workflow/util/util_test.go) and [istio](https://github.com/istio/istio/blob/master/operator/pkg/util/k8s_test.go) When writing [unit tests for this part](https://github.com/litmuschaos/litmus/pull/3971).


## 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](https://github.com/litmuschaos/litmus/issues?q=assignee%3Anamkyu1999+). I also uploaded a post about [‘Strategies for Writing More Effective Tests in Golang’](https://dev.to/litmus-chaos/strategies-for-writing-more-effective-tests-in-golang-1fma) to the LitmusChaos tech blog.

![result](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1itb08zzcn6w4coz51qw.png)

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.

![invitation](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yk4vtwh5wz9p8sopwc8c.png)

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](https://mentorship.lfx.linuxfoundation.org/#projects_accepting)!

Thank you for reading 🙏

Namkyu Park

Member of LitmusChaos

[LinkedIn](https://www.linkedin.com/in/namkyupark1999/?locale=en_US) | [GitHub](https://github.com/namkyu1999)