My Journey into Open Source
About one year ago, I had no idea how to contribute to open-source projects and yet it was something that I really wanted to do…
About one year ago, I had no idea how to contribute to open-source projects and yet it was something that I really wanted to do. I read articles and watched YouTube videos that provided good suggestions and resources, but somehow I just could not get over the initial hurdle and actually contribute to Open Source Software (OSS) projects. I have done things like trying first-contribution, starring and bookmarking projects and doing all the preparation to end up not being able to contribute to any projects out there.
Looking back, two issues prevented me from moving forward:
- How to find a project that is of the right technical level and has beginner-friendly issues
- After finding one such project, how to navigate through its large codebase and start working?
I have made some progress over the past year and I hope to pen down my thoughts on open-source work. I am not a “10X” developer, but my perspective could be helpful to people who are just starting.
What do I really need to know?
As you can see from the first issue mentioned above, the number of available projects for you depends on your technical ability and interest. Before anything, it is really important to know how Git & GitHub (or Gitlab) works because most OSS projects are done with the help of Git for version control and GitHub (or Gitlab) to host the code for sharing among developers.
In particular, you should minimally understand:
- What’s a commit and how to write good commit messages?
- What’s a PR?
- What’s a branch?
- What’s branching workflow and forking workflow?
With that out of the way, the main bulb of learning is on the tech stack of the project. This can be difficult if you are completely new. However, my experience has been that depending on the complexity of the project, you don’t always need to be an expert in the tech stack to contribute. What I would recommend is to go through some tutorials and try to understand the basics of the tech stack. With that, the rest of the learning can be done on the go.