Follow

"How do I get started contributing to open source? What are some good entry-level tasks to work on?"

These are questions I am often asked, so here's the answer for everyone to read:

Scratch your own itches. Find bugs that are causing you problems, conspicuously missing features you would find useful, and implement them - in literally any free/open-source software you're using. Don't worry about not being familiar with the codebase or programming language or whatever, just solve one problem at a time.

Try this: next time you go to report a bug, report it, and immediately start working on a patch which fixes the problem.

Scratching your own itches is the best source of motivation and maximizes your productivity.

Often that means not contributing to my projects at all, if you're asking how to get started with a specific project. Maybe you like it because it's flawless 😉 (hah!), in which case it wouldn't need your help anyway. Go fix something which is bugging you in another project. Spread the contributor wealth around and eventually it'll come back to my projects, too.

As soon as I encounter a problem with a FOSS library or program I'm working with, I grab the code and start looking for a solution, and often my first communication with the project will be the patch that fixes the bug.

It takes practice to be able to dive into a codebase quickly and solve problems right away, but so does anything else worth doing.

@sir how do you understand a codebqse that you've never seen before? Would you have any advice?

@rbd @sir Not OP but I tend to search the repository for a few keywords related to my question and then follow the function call chain to what I think is the source of the problem.

Asking the developers directly also has helped me a lot. Just popping on IRC or similar and asking something like "What does function XYZ do?" can yield good results since free software developers tend to be pretty friendly, especially to prospective contributors.

@rbd @sir if you're someone who likes to look at documentation and code structure to get an idea of how everything is laid out, you could use a tool like doxygen (doxygen.nl/). It supports a few di languages but most helpful for following objects oriented code bases.

Sign in to participate in the conversation
Mastodon

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!