When was the last time you used open-source software?

Don’t answer. I’ll tell you when: right now. Regardless of which browser you use, most likely there are open-source components in it. Firefox is open-source as a whole; Chrome, Safari, Edge and Opera all have open-source rendering engines; the only notable exception is Internet Explorer, but it is increasingly obsolete. Open source has taken the world by storm: it is everywhere.

This is especially true of the most prominent projects, like browsers, but they are only a part of the picture. On the other end of the spectrum is a long, long tail of small codebases, a lot of them being one-man projects. Millions of them, in fact. At the time of writing, GitHub alone has 37 million registered users and over 100 million repos, a huge part of them open-source.

And you’ve decided to contribute to this richness. But how? Let’s find out.

Find a project you want to contribute to

The journey starts with you. Ask yourself: why do I want to contribute to open source? Put another way, what are your goals? There are a number of common answers to that question, and they’ll affect the choice of project you want to work on.

In his essay “The Cathedral and the Bazaar,” Eric S. Raymond quipped that “Every good work of software starts by scratching a developer’s personal itch.” Perhaps you’d like to reuse that React component for your brand new app, but it doesn’t support the thing you need. Or perhaps you’re just sick of that bug in the password generator you’re using. Either way, you have a specific need, and that need is not met by the software you’re using.

Or you might be in an exploratory mood. Machine learning is all the rage these days, right? So you might want to find a ML project and add your own little piece to it.

Your goal might also be career-oriented. If you want to land a job at a specific company, it’s a great idea to find out whether they are maintaining any open-source projects, and become involved with one of them. To help you out, WorksHub lists some companies that need help with their open-source projects. Some of the issues there also come with financial compensation, so you can earn while you learn!

Contributing is participating in a community

So you know your goals and have a project you’d like to contribute to. The next thing to realize – perhaps the most important in the whole process – is that developing open source is a social activity. There is a community around your chosen project, and you’re about to become a part of that community.

Different communities are organized in different ways, have different priorities, and communicate using different means. Your first step is to find out what specific rules and guidelines your project follows. Read the README, the contributing and coding style guidelines, and the code of conduct if provided. If these documents point you at any other information you need, read that too.

Needless to say, you should follow that guidance. Be respectful to the community and open in the way you communicate. You can’t get wrong with that.

Once you have absorbed all the official info, it’s time to approach the community. It’s probably a good idea to start passively. Does the project have a mailing list for developers? Subscribe to it, and spend some time reading it. Is there an open issue tracker? Read the discussions that are taking place right now. That way, you’ll get a sense of what’s happening, what the current priorities are, and who can help you out if needed.

Find a specific thing you want to work on

Depending on your story so far, you may already know the answer to this one. If not, though, it can be hard to decide.

One important thing to keep in mind is that coding is not the only way you can contribute. In fact, you don’t have to be a programmer. Many projects are in dire need of good documentation: writing documentation can be one of the most beneficial things you could bring to the project. Look at Write the Docs’ Guide for some valuable tips.

If documenting is not your thing, another great way of contributing is reporting bugs. As an old adage goes, “A well-written bug report is worth its weight in gold.” Heed the advice in this excellent article.

Many projects have localized user interfaces. If you speak a non-English language in addition to English, you can help to translate the UI and make the software accessible to more people.

These are the most common, but not the only ways to help out. Your project may maintain a list of most urgent tasks, or ones most accessible to newcomers. On GitHub issue tracker, as well as on WorksHub’s Issues page, look for the “good first issue” tag. If you can’t find such a list for your project, feel free to ask the maintainers.

It’s also a good idea to discuss your proposed solution if you do know exactly what you want to solve. It can save time to both you and the other members of the community if you reach out and say “hey, I want to do this thing, I have this idea of proceeding.” This gives you the opportunity to discuss alternative approaches. People can find flaws in your reasoning or offer valuable suggestions. Often, the end result is a high-quality contribution and a more pleasant experience for everyone.