Mentorship post originally published on Medium by Mohammed Affan
Diving Into the Open Source:
In the summer of 2023, I decided to jump into the open-source world to get some hands-on software development experience as a student. With a background in DevOps, I decided to contribute to the Kubernetes on GitHub. However, its complexity led me to a more manageable starting point — contributing to Kubernetes documentation.
My First Pull Request:
Armed with determination, I joined the Kubernetes community on the Slack and searched GitHub for newbie-friendly issues. A mislabeled kubectl command caught my eye, and voila, I fixed it (here is the pull request). After signing the EasyCLA and navigating through weeks of reviews, success came knocking — the thrill of seeing my first contribution getting merged was incomparable.
The Search for a Mentor:
Being a newcomer, I needed a mentor. So, I reached out to a couple of folks within the Kubernets community and stumbled upon the CNCF mentoring repository on GitHub, a valuable resource for opportunities.
Exploring the Mentorship Opportunity:
Within the CNCF repository, I found the LFX mentorship program, which aligned perfectly with my schedule. After creating a LFX account, I explored the projects and identified the Karmada — a multi-Kubernetes cluster management platform — as a suitable match for my interests and skills. I applied to add its API documentation.
My Application for the LFX Mentorship Program:
The application process involved submitting my resume, and a cover letter, and answering a few questions. A few weeks later, an email arrived, notifying me of my acceptance into the Karmada LFX mentorship program.
The Project Kicks Off:
My mentors, Zhen Chang and Hongcai Ren, contacted me on Slack. Our mission was to add Karmada’s API documentation. Armed with a swagger file and encountering challenges with Docusaurus (the tool for the website), we embarked on a quest for the ideal documentation solution.
We tried various tools to generate API docs from the swagger file. But none of those worked perfectly for us. The Docusaurus supports the documentation only in the markdown format, and those tools generates the documentation in the HTML format. Another problem with these tools is that some of those tools were no longer being maintained. So, we decided to created our own script in Go, which turns the swagger file into API documentation.
But writing our own script raised the concern about the future maintenance. This led my mentors to introduce the Kubernetes API docs generator. With the assistance of Chaosi, we modified the tool to suit Karmada’s needs, and we successfully generated the API docs from the codebase itself. The result: the API documentation went live.
Collaborating with seasoned engineers proved to be the highlight of my mentorship. Engaging in discussions and learning practical skills, from navigating swagger files to scripting in Go, enriched my experience. The mentorship also provides a good networking opportunity.
I found out that the Karmada community is very friendly and welcoming. I do have a plan to make further contributions in the Karmada. Hopefully the community will also help me in my open-source contributions.
Guidance for Future Mentees:
Here are some tips for you to increase your chances of getting selected.
- Master the basics: Git, GitHub, branches, and pull requests.
- Cultivate a genuine passion for open source.
- Choose a project you love and stick with it.
- Contribute before applying, to boost your chances.
- Stay active in the open-source community.
- Embrace the learning journey.
This mentorship is a valuable learning opportunity, emphasizing personal growth over a job-like experience. Don’t shy away from asking questions from your mentors, and after completion, you’ll be better equipped to make impactful open-source contributions. For students, this journey opens doors to remarkable people and practical software development experiences. Way better than just following step-by-step tutorials.
Thank you for reading! Any questions? Feel free to drop them below. Let’s connect on LinkedIn, I’m always open to expanding my network with fellow open-source enthusiasts. Let’s grow together!