Let’s first start with what is CNCF
Cloud Native Computing Foundation is a collection of technologies and practices that automate the deployment and management of highly decoupled and resilient application workloads across elastic infrastructures using a uniform abstraction of computing resources. - Vladimir Vivien
CNCF mentorships programs
- Google Summer of Code (GSoC)
- Google Season of Docs (GSoD)
- LFX Mentorship (formerly community bridge)
- Outreachy
Understand the CNCF landscape
There are 70+ projects in cloud native computing foundation ecosystem and these projects are divided into different segments such as Graduated, Incubated, and Sandbox.
What is it to be a CNCF mentee
- CNCF is very welcoming and vibrant community.
- Passionate people working on cutting edge technologies.
- Majority of users deploy these projects at very high scale.
- Mentors with immense experience in writing high quality code + operational knowledge at scale.
How to become one
Project Selection:
The common problem many might face is how to pick the project out of 10’s of projects. I would suggest to pick the projects were your previous work overlaps with the tech stack of the project. It’s totaly okay to pick the project with no prior knowledge with technologies but you need to spend time to learn the required skills quickly to start contributions to the project. Understand the CNCF landscape to understand the projects and their context. CNCF projects have a maturity level of sandbox, incubating, graduated. Usually the proejcts in sandbox need lot of work to ship features planned and to climb the maturity level of CNCF also these projects are in still early stage of adoption. So while picking the project make sure to look for projects in sandobox and incubating as these projects definitely need more love and this gives opportunities for you as an individual to grow along with the project.
Approach 1:
- Keep yourself updated on the mentorship programs and timelines.
- Understand the project ideas.
- Pick the project you love.
- Start contributing to good first issues and join the community calls.
- Write a design doc with implementation details.
Approach 2:
- Find the project you love.
- Play with the project, pick good-first-issues and join the community calls.
- Understand the gaps & future work.
- Propose your plan of work to the project maintainers.
- Forward the project idea to mentorship programs.
- Write a design doc with implementation details.
In my opinion the more you love the project the chances of you working with it increases. It doesn’t matter if the projects aren’t listed in mentorship programs.
As a beginner you will start reading the README.md
of the project, getting started guide and contributing guide. If you notice any missing pieces in these docs add them to the docs. As the projects keep evolving sometimes it’s possible the docs may fall behind. This helps you to understand how to build and run the project.
Design doc
Usually we see many folks apply for the same project. The only thing matters or adds value to differentiate you with others is implementation details. How you are planning to implement discuss different approaches, pros over cons and provide the timeline you will need for implementation. Design doc provides the information the project maintainers need on implementation. Also, share your design doc in the project slack channel you can iterate the design doc with feedback received from the community. This helps to understand views from different stakeholders + the missing pieces of the implementation + the bottlenecks.
Here are design docs written by me during my internships:
Post Selection
Start working on the project as per the timeline you mentioned in your design doc. Also in OSS projects it’s pretty common the implementation details changes and sometimes priorities in the project changes which can alter the feature you are working on it’s totally fine. Your goal is to contribute to the project and to add value in all possible ways. Try to be as active as possible in the slack and in the community calls this gives you immense knowledge on how the project is used by the users and what are the new feature and work getting into the project. The beauty of working with OSS is we get the feedback from users in the continuous loop and we get to understand their usecases and iterate over the project accordingly that’s the secret sauce which makes project more efficient and robust.
Your primary target during your mentorship program is to develop the working model of your project. After you build the working solution then iterate over making it better by following the project styling guides, adding test suite, making it efficient, robust and then spend time in writing docs & blogs on the implementation details. Just do what works for you :)
As the project maintainers will be occpied and busy do not reach continously to them for everything spend good amount of time in solving it and then reach to the maintainers for help. Schedule weekly sync up calls to discuss the blockers and progress on your work. This helps to iterate the continuous feedback on your work. Usually reviewing the pull request takes good amount of time so make sure to complete your work in time this helps the maintainers to provide constructive feedback.
Discuss everything on your work in the project slack channel avoid to discusss the work in direct chat. This helps you to get the feedback from the community + other maintainers of the project.
If it didn’t happen
- It’s okay many get into mentorship program after multiple attempts. Including me. :)
- You have done great work already understanding the project, contributing to good first issues, and by writing design doc. Stick to the project and keep contributing to it. (This has its own value addition)
- Keep applying for the next cycles of mentorship. Try starting early with your contributions + implementation details.
Post Mentorship
We see 10’s of people get mentored every cycle through CNCF mentorship program but very few work with the project post internship. Working with the project for longer period of time has it’s own benefits. You get to influence the project and the work that will be going into it. At the end OSS project is not about just writing code it involves maintaining the proejct with major, minor releases. Moderating the community calls. Taking the project to wide adoption by climbing the CNCF maturity model. There are definitely lot more things to do in open source world.
Things to do post mentorship
- Try to answer to questions in slack. As by now you are familiar with the project.
- Attend community calls and share your thoughts, ideas.
- Reviewing the PR’s.
- Bug triaging.
Keep working on what you love and Cloud native community is definitely a great place to be in.
Cheers!