New to open source
Your first pull request, in five steps.
You do not need to be an expert, and you do not need permission. You need a project that answers, a small task, and one clear message.
- 1
Step 1
Pick a project that uses what you already know
Start from your own stack, not from a famous name. A language you have written a few hundred lines in is enough.
Find projects for my stack - 2
Step 2
Check that it replies to newcomers
Two numbers matter on a project's page: how long until a person replies to an outside pull request, and how many of those get merged. If replies take weeks, pick another project. That is not about you.
Right now 46 projects reply within a week, have a contributing guide and have a free first issue.
See those projects - 3
Step 3
Find an issue nobody has taken
A "good first issue" label is not enough: many are already claimed. We check each one for an assignee, a claim comment and a linked pull request. 270 are free at the moment.
Browse free first issues - 4
Step 4
Say you are working on it, on the issue
Comment on the issue itself, not in a private message. Say what you plan to change. Then start; you do not have to wait for an answer on a small task.
Hi! I would like to work on this. My plan is to <one sentence on what you will change>. Is that the right direction? I will open a pull request this week.
- 5
Step 5
Open a small pull request, then wait calmly
Read the project's contributing guide, make the smallest change that solves the issue, and link the issue in your pull request. One good pull request beats five rushed ones.
On GitHub, that means
- Fork the repository (the Fork button, top right).
- Clone your fork and make a branch:
git checkout -b fix-issue-123 - Commit your change:
git commit -m "Fix …"(add-sif the project asks for a DCO sign-off). - Push the branch:
git push origin fix-issue-123 - Open the pull request from the banner GitHub shows on your fork, and write "Fixes #123" in the description.
Every project page tells you how long a first reply usually takes there. If it says three days, silence on day two is normal.
How to read each number
The words, in plain language
- Repository (repo)
- A project's folder of code on GitHub, with its history.
- Issue
- A note describing a bug or a task. This is where work is discussed.
- Pull request (PR)
- Your proposed change, sent to the project for review.
- Fork
- Your own copy of a repository, where you make the change before sending it.
- Maintainer
- A person who reviews pull requests and can merge them.
- Merge
- Accepting your change into the project. This is the goal.
- Good first issue
- A label maintainers put on tasks suited to a newcomer.
- CLA / DCO
- A one-time agreement some projects need before merging. DCO means adding -s when you commit.