I'm a student pursuing under-graduate in Electronics Engineering from Veermata Jijabai Technological Institute (VJTI), Mumbai, India. I recently completed my LFX Mentorship Program where I was working on an open-source project - Kyverno. In this article I will be sharing my experience in working on this project.
Application Process
The LFX Mentorship Program runs 3 times a year - Spring (March 1st - May 31st), Summer (June 1st - August 31st) and Fall (September 1st - Nov 30th). Applications open approximately 4 weeks prior to the start date. Interested mentees can browse the portal to see the listed project ideas. CNCF also has a separate repository for mentorship details. You can look up the project ideas there too if you are interested in CNCF projects. The project I applied for was a CNCF sandbox project at the time of applying. So I got to know about it on the CNCF repository. You can apply up to 3 project ideas. Once you select the projects you want to apply for, simply click on the Apply button on the LFX mentorship portal. After that you will be given certain task to complete. In my case, they just wanted me to upload my resume and a cover letter which should have answers to few questions. Some projects even take interviews. After you have completed all the tasks, simply wait for the results. LFX will send you an email of your result.
About the project
Kyverno is a Kubernetes native policy engine that secures and automates Kubernetes configurations. A Kyverno policy is a collection of rules. Each rule consists one of a validate, mutate, generate, or verifyImages declaration. The Kyverno CLI test command is used to test if a policy is behaving as expected. Before the start of my LFX Mentorship program, the test command could only support testing validate and mutate rule types. My project in the mentorship aimed at extending the test command to support testing generate rule types as well. The enhancement also involved creating test YAML files for previously uncovered policies with generate rule.
My Experience
The mentorship officially began from 1st of March. Every week on Thursday, the Kyverno community has a contributor's meeting on Zoom wherein all the contributors discuss about their work, project and future releases. On my first contributor's meeting, one of the maintainer introduced all the accepted mentees who were present in the call. Everyone was so welcoming and greeted us quite well. Me and my mentors fixed up a weekly meeting every Friday for updates and discuss issues if any. I was suppose to think out of the box because generate rule types are implemented quite differently from other rule types. I was told to prepare a design proposal and make a presentation in the contributor's meeting in front of all the maintainers to get their approval. If I'm to be honest, I was quite nervous about it because I've never done a presentation before in front of such a crowd. Fortunately, the presentation went extremely well. After I did the presentation and got their approval along with minor changes, I began the work on implementation i.e. the coding phase. I played around the codebase and made progress step by step. It was not as easy as it sounds because the codebase is huge and as structured it looked, it was still complicated to understand at first time. My mentors played a huge role in helping me during this period. After I successfully built an initial proof-of-concept, I presented a demonstration of my work in the contributor's meeting. I was praised by everyone for my work and it felt really good. Near the end of the mentorship program my PR got merged and there is no words to explain how it feels when your 3 long months of work finally gets implemented!
Final Conclusion
The mentorship was an amazing journey which I never wanted to end. I got to learn a lot about technologies such as Kubernetes, how big projects work in general and most importantly, I networked with people who are well experienced in this field. My mentors have motivated me to keep on doing open-source contribution whether in Kyverno or any other project. Despite of the official end of mentorship program, I'm still going to contribute in Kyverno and my mentors have promised me that they will be always available to help me. I encourage everyone (whether beginner or intermediate) to apply in this mentorship program because the learnings and experiences you get is invaluable.
Links to my PRs
github.com/kyverno/kyverno/pull/3456