How to make a contribution to an Open-Source Project.
If you are new to this, it may all seem a bit intimidating!
Let me explain the process and give you some tips and best practices.
A thread
If you are new to this, it may all seem a bit intimidating!
Let me explain the process and give you some tips and best practices.
A thread
Find a good project to contribute to (1/2)
You want to look for a project that accepts new contributors and is likely to review PRs.
You also want to find a place that has a healthy tone in the discussions and polite and grateful maintainers.
You want to look for a project that accepts new contributors and is likely to review PRs.
You also want to find a place that has a healthy tone in the discussions and polite and grateful maintainers.
Find a good project to contribute to (2/2)
Some things to look for:
The latest commit was made recently
There are open issues and PRs
It has contributors (besides the maintainers)
Discussions are healthy, and maintainers are polite and friendly
Some things to look for:
The latest commit was made recently
There are open issues and PRs
It has contributors (besides the maintainers)
Discussions are healthy, and maintainers are polite and friendly
Preparation (1/4)
Before getting ready to code, you need to do a little preparation.
Most Open-Source projects have a contribution guide.
It's typically a file named CONTRIBUTING.
Read this file *carefully* to learn how to contribute to the project.
Before getting ready to code, you need to do a little preparation.
Most Open-Source projects have a contribution guide.
It's typically a file named CONTRIBUTING.
Read this file *carefully* to learn how to contribute to the project.
Preparation (2/4)
Open an issue or comment on an existing one.
If you found an issue that you want to tackle, comment, and let everyone know that you're on it.
If you want to work on something new, create a new issue for it.
Give the maintainers time to respond to it.
Open an issue or comment on an existing one.
If you found an issue that you want to tackle, comment, and let everyone know that you're on it.
If you want to work on something new, create a new issue for it.
Give the maintainers time to respond to it.
Preparation (3/4)
A tip.
If you for some reason cannot handle the issue that you committed to, please don't be shy to let the maintainers know!
Politely comment again and say that you cannot handle the issue.
Ghosting an issue that you said you'd work on is *annoying*.
A tip.
If you for some reason cannot handle the issue that you committed to, please don't be shy to let the maintainers know!
Politely comment again and say that you cannot handle the issue.
Ghosting an issue that you said you'd work on is *annoying*.
Preparation (4/4)
Finally, make a 'fork' of the repository.
Click the 'fork' button in the upper right corner - this will create a fork of the repository on your own GitHub profile.
Clone this fork down locally and you can start working.
Finally, make a 'fork' of the repository.
Click the 'fork' button in the upper right corner - this will create a fork of the repository on your own GitHub profile.
Clone this fork down locally and you can start working.
Contributing (1/4)
When you are done working on your contribution, get ready to create a PR.
Go to your fork of the repository on GitHub.
In the top-bar above the files, you should see a button 'Pull Request'.
Press this, and you will be ready to open a PR.
When you are done working on your contribution, get ready to create a PR.
Go to your fork of the repository on GitHub.
In the top-bar above the files, you should see a button 'Pull Request'.
Press this, and you will be ready to open a PR.
Contributing (2/4)
Keep the contribution guide in mind.
Do the maintainers want new PRs in a certain format?
Do the maintainers want new PRs with a specific base branch? E.g. 'development'.
Remember to follow the contribution guide.
Keep the contribution guide in mind.
Do the maintainers want new PRs in a certain format?
Do the maintainers want new PRs with a specific base branch? E.g. 'development'.
Remember to follow the contribution guide.
Contributing (3/4)
Give the PR a great description:
- Mention the issue ID (#42).
- What does the PR introduce or solve.
- How did you test/verify the functionality.
- How can maintainers quickly try out your new feature
- Link to external sources/screenshots if needed.
Give the PR a great description:
- Mention the issue ID (#42).
- What does the PR introduce or solve.
- How did you test/verify the functionality.
- How can maintainers quickly try out your new feature
- Link to external sources/screenshots if needed.
Contributing (4/4)
Here is an example of an excellent PR https://github.com/Silind-Software/direflow/pull/144
Here is an example of an excellent PR https://github.com/Silind-Software/direflow/pull/144
What's next?
After you open your PR, one of 4 things will happen next:
You never get a response
Your PR gets rejected
Changes to your PR is requested
Your PR gets merged
Let's cover them one by one.
After you open your PR, one of 4 things will happen next:
You never get a response
Your PR gets rejected
Changes to your PR is requested
Your PR gets merged
Let's cover them one by one.
You never get a response
This is annoying, but there's not much to do about it.
If you prepared and looked out for the indicators mentioned earlier, hopefully, this won't happen.
Please, refrain from further commenting, tagging, or reaching out in private.
Wait, or move on.
This is annoying, but there's not much to do about it.
If you prepared and looked out for the indicators mentioned earlier, hopefully, this won't happen.
Please, refrain from further commenting, tagging, or reaching out in private.
Wait, or move on.
Your PR gets rejected
Maybe your contribution will get rejected.
There can be many reasons for that, and it's perfectly ok to ask the maintainers why.
But be polite.
Respect that it's their decision to make.
I know it's frustrating, but please refrain from being hostile.
Maybe your contribution will get rejected.
There can be many reasons for that, and it's perfectly ok to ask the maintainers why.
But be polite.
Respect that it's their decision to make.
I know it's frustrating, but please refrain from being hostile.
Changes to your PR is requested
This is the most likely outcome, and it's a very positive one
Go through the maintainer's feedback and be open to their suggestions.
Remember, it's their codebase.
Align your solution with their standards and conventions.
This is the most likely outcome, and it's a very positive one
Go through the maintainer's feedback and be open to their suggestions.
Remember, it's their codebase.
Align your solution with their standards and conventions.
Your PR gets merged
Hopefully, this is where you end.
Either after some change requests or to begin with.
Congratulations
Now, enjoy that rush! You are now an Open-Source contributor.
Share it on Twitter! Celebrate it with your followers.
We all think it's awesome
Hopefully, this is where you end.
Either after some change requests or to begin with.
Congratulations
Now, enjoy that rush! You are now an Open-Source contributor.
Share it on Twitter! Celebrate it with your followers.
We all think it's awesome