How can you contribute to an open source project?
Tags: opensource, ecosystem, github
Published: 2020-04-05 21:15:42

I was an active contributor of NLog a few years ago. Because of that some of my developer friends and co-workers were asking me _how to contribute to an open source project_. I decided to write a blog post based on my NLog experience.

Contributing to an open source project is not only writing some code for them. There are a few ways to add value.

# Reporting an issue
Let’s say that you have noticed a bug on a library you use. Do not close your eyes and do not forget it. Letting the main contributor know is invaluable. Go ahead their issue tracker system and provide details of the bug as much as possible.
A good bug report should contains:

* A clear and concise description of what the bug is.
* Version of the library / tool and your OS
* Steps to reproduce the behavior
* A clear and concise description of what you expected to happen.
* A clear and concise description of what actually happened.
* Screenshots (if possible)
* Internal logs of the library / tool.

# Documentation
Let’s say that, you need an information and opened their official documentation but the information you are looking for is missing. You can provide documentation by reading the code base, by researching the subject on the internet. Go ahead and add your documentation to project's Wiki. You can also easily find any documentation requirements by filtering issues by appropriate labels.

# Answering User Questions
Open source projects receive questions. Help maintainers by answering the questions. Just hit the issues page and check the latest issues. You can also filter issues on GitHub by `question` label. You can also answer on stackoverflow.com to get some points.

# Bug Report Reviewing
Reviewing a bug report is beneficial as it makes you read the source code. Find a bug report among the issues and firstly check it out if the reporter provided every required information. Sometimes maintainers spend their time asking for missing information for a bug report. Help them by reviewing the bug report and by asking the missing information.

I remember that I read NLog source code many times to catch a reported bug. It helped me a lot to understand a code base which is written by others. If you find the reason behind the bug, just drop a detailed comment. Maintainers will be grateful as you save their time. If you can do, do not wait and fix the bug!

# Pull Request Reviewing
You can review the opened pull requests. Even if you cannot find a problem on the PR, or you do not know how to evaluate it, reviewing PRs would be beneficial as you can get an understanding of maintainers what expecting within a PR.

# Bug Fixing and Other Coding Tasks
If you are feeling that you have a grasp of code and you are ready to write some code, then filter the issues by labels. Usually most open source projects use labels to get help such as: `help wanted`, `up-for-grabs`. Then leave a comment that says "I would like to help with this. Is there anybody working on it?" Do not forget to ask whether issue is free or not to not waste your time. Because if a maintainer already working on the issue, then s/he may want to use their solution instead of yours.

# Summary
We love open source projects. They save our times by adding value to our projects. This is a living ecosystem. We need to make this ecosystem sustainable by adding value back.

Every single contribution you made makes you a better and better developer. You can grow yourself and sustain this ecosystem!