Throughout my time contributing to oss, I've gotten a lot of questions about how can someone get started with oss and how can they make changes to codebases that look big. My most common answer to them has been to just do it.
I know it sounds cliché but that's honestly the most straightforward answer for it.
Let's take me for example. Currently, I don't know much about Javascript and it does look daunting to me in its current state with all of the frameworks, libraries, tools and whatnot. I'm still curious to know what Wasm is even though I've just started learning Node.js. Does this daunting feeling stop me from learning? A bit but also, not so much now.
A big reason for that is having been through the process of entering a new field and learning from it. I've learnt to embrace this initial overwhelming feeling of anxiety and started to embrace it as part of the learning process.
Maybe you can relate to past experiences of when you were starting out in something new and you were feeling anxious and nervous but then you persisted enough to learn something fruitful.
Being able to relate helps quite a lot as you now understand that this feeling is going to be there and there's no two-way about it. You have to learn while facing this feeling simultaneously. The good news is that as soon as you start to make progress, the feeling starts to fade away and it fades away pretty quickly.
So, for the rest of this blog, I'll go through a sort of self-interview where I'll mention questions that I've been asked about oss and then give my answers to them. While reading, keep in mind that what worked for me may not work for you but the advice and tips would most likely help.
Q) How do you get started contributing to cncf projects and what background knowledge is required to contribute?
This is project specific. Each project will have its own set of requirements that you will need to know before contributing to it. These requirements include the programming language being used in the repository, the background knowledge needed to contribute to said project and so on.
Of course, all of this can be learnt on the go and even the maintainers recommend doing so for most of it. This aspect of oss is similar to software engineering in general, where you'll have to know and understand different tech stacks quite fast depending on the requirements of the org you'll be working at.
Q) What is the very first thing you do when contributing?
The very first thing would be to look at the docs, especially the README.md file. Reading this file is important as it answers a lot of the questions you might be having in your head. Going through the README tells you a lot about the project and how it works.
A lot of the time It gives you enough background information for you to get started with contributing to the project. It also has links for further documentation and community channels for the project.
Be sure to read this readme and further related documentation so that you know enough to work on the project. You don't have to read everything but enough for you to get started.
Q) How do I choose among so many different projects?