Skydiving into Open Source: My LFX Mentorship Journey.
Introduction
The Linux Foundation Mentorship Program provides an engaging 12-week internship where participants can work on practical projects while earning a stipend. When I initially applied, I was quite new to the field and unaware of how profoundly this experience would shape my professional development. Reflecting on my time in the LFX program now, I realize it has been a transformative journey, teaching me the importance of perseverance and continuous learning.
A key factor that attracted me to the LFX mentorship program was that the projects were predefined before the application process began. This allowed me to select a project that matched my interests and skills perfectly.
Early Challenges and Overcoming Them
When I applied for the LFX mentorship, I had limited knowledge of DevOps, Kubernetes, Docker, and Go. Initially, understanding the codebase was challenging. Despite feeling overwhelmed, I decided to push forward, contributing to open-source communities and applying for the LFX program.
This period was pivotal for me. I honed my skills, deepened my understanding, and became adept at quickly navigating any codebase. This preparation enabled me to craft a compelling proposal for the LFX program for Term 1, 2024, ultimately leading to my acceptance into my first-choice project
The Mentorship Experience
My mentors, Saranya Jena, Hrishav Jha, and Sahil Kumar, were incredibly supportive throughout my mentorship period. They created a positive and encouraging environment that helped me overcome my initial nervousness. Despite their busy schedules, they always made time to assist me whenever I encountered difficulties.Our weekly sync-ups were invaluable for reviewing my progress and receiving constructive feedback. These sessions significantly contributed to my learning and growth, and I am deeply grateful for their guidance and support.
After quick adaptation of the litmus codebase I started working on the multiple project owner feature.
Week 1:
I set up the development environment, familiarized myself with the codebase, learned the prerequisites for the implementation, discussed schema modifications, and initiated the implementation of the Multiple Project Owner feature.
Week 2:
I committed the database schema changes, modified the SendInvitation
and AcceptInvitation
APIs to handle owner roles, and discussed edge cases with my mentors to decouple user creation from project creation.
Week 3:
I added the new DeleteProject
and UpdateMemberRole
APIs, began the frontend implementation, and introduced the GetProjectOwners
API.
Week 4:
I continued work on the DeleteProject
API backlog, added tests for GetProjectOwners
and DeleteProject
, and fixed any issues that arose.
Week 5:
I wrote tests for the UpdateMemberRole
API, discussed the new UI for the Multiple Project Owner feature, and began implementing the UI.
Week 6:
I focused on the frontend design, learned how the Litmus frontend operates, and created a new route for project management.
Week 7:
I took a break for exams and submissions.
Week 8:
I added new components to the Project Dashboard, developed the model and controller for it, and implemented a card in the dashboard.
Week 9:
I added a subheader to the dashboard, modified the sidebar, and implemented project filters in the backend.
Week 10:
I gathered feedback and implemented it in the backend filters, updated the listProject
API, learned how to implement filters in the dashboard with the help of my mentors, and finalized the feature.
Week 11:
I learned the EFK stack for logging, set up chaos infrastructure, and began integrating the EFK stack with Litmus.
Week 12:
I worked on changes related to PR reviews and continued with the EFK integration.
Acheivements
Throughout the project, in addition to developing the multiple project owner feature, I dedicated significant effort to improving the overall user experience of project management. One of the key enhancements was the introduction of a comprehensive dashboard, which provided users with a centralized location to manage their projects more efficiently. I also implemented pagination and filters to streamline navigation and make it easier for users to find specific projects quickly. These enhancements collectively led to a substantial improvement in user experience, estimated at around 50-60%. The optimized UI not only made the platform more intuitive but also significantly increased user satisfaction and productivity.
Challenges Faced
In the beginning, I was unfamiliar with implementing MVC architecture in large codebases, especially on the frontend. This was my first experience seeing it in action. Over time, I gained a solid understanding of how the frontend in Litmus works. I learned how Swagger specs aid in creating APIs and how to use API hooks in the frontend. Initially, I was unsure about the commands used in Go, but with the help of my mentors, I overcame these challenges and became proficient.
Reviews
Over the past 12 weeks, I have successfully merged one pull request and had two additional pull requests approved, collectively contributing over 4000 lines of code. My work focused on enhancing the user interface with significant optimizations, including the implementation of a filtered dashboard. Additionally, I improved backend functionality by adding robust password and username validation mechanisms.
Conclusion
The LFX mentorship program has been the highlight of my year, turning me from an open-source novice into a confident contributor capable of making impactful improvements. This journey has significantly deepened my technical knowledge in developing robust user interfaces, enhanced my Golang skills, and provided valuable insights into my coding practices. I've learned that with dedication and effort, anything is achievable. If you're considering it, don't hesitate to submit your proposal for the next quarter.
I want to extend my heartfelt thanks to the CNCF for this incredible opportunity and to my mentors Hrishav, Saranya, and Sahil for their invaluable guidance and support
and the Litmus Community for all the appreciation of my small contributions.
Thanks for reading.
By Aryan G. Bhokare
Subscribe to my newsletter
Read articles from Aryan Bhokare directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Aryan Bhokare
Aryan Bhokare
I am a Web Developer and an open-source enthusiast.