By using this website, you agree to our privacy policy [ Ok ]

✨ Meetup question: How to choose what OpenSource project to contribute to?

by Abdur-Rahmaan Janhangeer



First of all, there are different approaches to OpenSource. You have the hobby approach and the focus approach. Here we are talking about the focus approach.

Have in mind that you’ll invest 6 months on a project. Find out what drives your motivation in computers. Is it cryptography? Is it databases? Is it data? Is it machine learning? Is it operating systems? Pick one field. Next find a popular OpenSource project in that field. If it’s machine learning i’d pick something like PyTorch. Next verify if the project accepts external contributions.

If you want a dead sure way to land meaningful contributions, you need to invest in a project fully. There are two options: either you have a clear indication of what you want to contribute or, the sure way, find something meaningful to contribute. Here we are talking about an approach that will also find us an area to contribute to.

This approach is the hard way, involves a lot of effort but, it’s worry free. The first step is to understand the theory behind the project. How the project works internally. Find resources about internals. They’ll discuss important aspects of the project. The codebase will be centered around those ideas.

The second step is to have a codebase walkthrough. Start exploring important parts of the codebase. Read on until you are familiar with the overall structure. Read as much code as you can. By now, one super interesting opportunity is code comments. If there are not enough meaningful comments, add what you learnt. Also by now make sure you know the programming language the project is using a bit. You should clone the project and get it running. Feel free to make some changes and run it. Messages are one awesome way to tinker around.

Document your learnings along the way. If you followed the above recipe, you should be able to contribute to any project you like meaningfully. I wanted to contribute to SQLite, but it does not accept contributions. On LinkedIn saw a fork. I decided to contribute to it. I knew 0% of SQLite internals. I learnt about it. The fork added gazillion of features. I took the pain to learn them. The libSQL/Turso team helped me as much as i wanted to. I contributed docs about the internals. I also landed a PR about comments. I learnt rustlang to contribute to it.

The journey continues …