Contributing to open source might be scary, you might think that your pull request (PR) is not good enough; that people will judge you by your code; or that fixing that little typo is not worth it.
I had all these questions in my head before I submitted my first contribution to an open source project and it stopped me many times.
So my suggestion is: start small. Look for low hanging issues in a project you want to contribute to; start reviewing issues; and see if they have been solved in the past. Then you can suggest a fix. If you take it one small issue at a time, you will start learning the code base and it will give you the confidence you need to start tackling more complex issues.
Before getting started make sure you know the basics of version control and git
Note: I'll be focusing on GitHub as the platform to contribute considering it's the most popular social coding community.
This is a set of steps that would help you get started in your open source journey:
If you think you found a bug
- Search for issues in Google and in GitHub Issues to determine whether the bug already exists or it is a new one
- If you don't find anything anywhere, submit an issue to the project repository explaining what you found and how you expected the program to behave and how the program behaves in your own environment
- Before you submit the patch, you might want to mention the potential solution in the GitHub Issue. Sometimes I find it useful when I say something like this:
I found that the problem is in this line () and that it would work if I changed it to this (), would you be interested in a pull request with this solution?
- Submit a PR with a potential solution
- Wait for feedback. If the maintainers of the project have any suggestions make changes to your PR until the PR is ready to merge!
If you think something would be a nice feature
- Search in Google if the feaure was already proposed or what other people think of your feature; if the feature is already proposed and you think you can improve it, comment your ideas about it
- If you don't find anything in the web, issue tracker, etc, submit an issue explaining why you think your feature will add value to the project
- Wait for feedback from the project maintainers and learn why your feature is or not adequate to the project
- If you got positive feedback about your feature, start working on it. Don't be scared to ask for help if you get stuck. Finally submit a PR!
- Wait for feedback again! You are almost there! Maintainers will give you more feedback about your feature; don't take it personal and respectfully discuss feedback. If you disagree with something it might be a good opportunity to learn from someone else's experience
You might not have a feature idea or issue to report. That shouldn't stop you from contributing to an open source project. You could triage open issues and pull requests. That's another great way you could start contributing. Start checking if there are issues that are already solved and notify maintainers that the issue should be closed. You could give feedback about a feature proposal. You could start reviewing existing PRs! The main goal here is to lose your fear and motivate yourself to get involved in your favorite project.
My first open source contribution
Just as a fun fact, this was my first open source contribution
Projects to contribute
- You can find a list of "Awesome first PR Opportunities" here
- Pick your favorite repos to receive a different open issue in your inbox every day using codetriage
These steps are not written in gold, but I think they might help you get started. There a few cases where I wouldn't submit an issue first (i.e typos, formatting issues) but this depends on the complexity of the change and how well you know the codebase.