Skip to main content

How to contribute to open-source

Most people who are reading this are using open-source software regularly and it is really easy to get involved and help your favorite open-source project. In the following post I am going to show you some options you have.

Coding

Maybe the most obvious action you can take to contribute to a project is to code. This can range from a small bug fix to being a maintainer of a whole project depending on your time and level of skill. But often enough it isn't an option. You have no time, it's been written in a different and unfamiliar programming language or you simply can't code (which is fine). But don't worry, there are really simple ways you can help.

Sponsorship/ Donations/ Pay for a service

Consider donating money to the project. A lot of open-source projects are maintained by programmers who spend their spare time to code. Even small contributions help to pay the bills for hosting, coffee, pizza, and - more important - the effort and time.

Check the project for the following common options to donate money: Patreon, Liberapay, Open Collective, "buy me a coffee", PayPal (+ credit cards), direct wire transfer or cryptocurrencies like Bitcoin (BTC) or Monero (MNR). Most open-source projects don't even ask for money and don't offer an option to receive money.

Just for the protocol: Donations != Claims/ Commissions. Please do not donate money and demand or expect a feature you have requested. That is not how it works.

Not everyone is in the position to donate money, but I would consider it one of the easiest ways to support a project.

Translations

Even though English is the most popular language (for most projects), not everyone speaks it. The more languages a project can offer, the bigger is the number of potential users. Providing a multilungual programm is unbelievable time consuming and any help is highly welcome.

There are multiple ways for projects to handle the localization. Sometimes you can simply clone the repo and send a pull request with your translation or they use services like Transifex. It is often described in the description of the project.

Provide help for other people

Answer questions: be active in the forum, check for newly opened issues/ tickets, and pay attention to your social media feed. Not every project has a forum, but you get what I mean. If you use specific software daily, you can most likely answer a lot of questions, especially from new users. This can relieve work for the project team and helps to build a great and helpful community around a project.

Create and share content

It depends on your interests and there are almost no limits to creativity set. You could publish blog posts with tips & tricks, tutorials/ instructions, your personal experience or create some kind of 'fanart' like wallpapers or stickers. In some projects you can work on the docs/ wiki which is important.

Send feedback/ bug reports

Not every maintainer uses the software in the way you do. Found a bug? Do you have an idea for an UI/UX change? Found a security vulnerability? Reach out to the project team.

I don't think I have to say this, but: be respectful and do not demand anything.

Send a "Thank you!"

This should be self-explanatory :). As I mentioned before, a lot of maintainers work on the project in their spare time, and a quick message with your gratitude and appreciation can boost motivation and is most likely highly welcome.

Spread the word

Do you like a project? Do you work with it daily? - Recommend it to your friends, share it on social media, and so on. It is really simple and helps to grow the community.

Conclusion

I am pretty sure I have forgotten something, but my point is, that anyone can help if he wants.

If you want to share your feedback, questions or just want to reach out, feel free to contact me via Twitter or Mastodon.