What’s in it for you and your company?
“We only have what we give”. I.A.
You are already here, many of your projects have dependencies buried deep in the OSS ecosystem, and you want to see those open source projects thrive, and more importantly stay alive. Open Source infrastructure is dependent on the work of talented contributors and developers, and those who contribute have a lot to gain for career development and personal fulfillment.
Companies that invest time and resources to contribute to OSS are at the forefront of collaboration and commercial innovations. Participating in OSS gives organizations the unique advantage of helping form the direction of the technologies they already use. Engineers who participate in OSS might help their companies make valuable networking connections, as well as grow their own professional development and reputation.
Selecting a project
With over 25 million OSS repositories hosted in GitHub, the sky is the limit! You might consider contributing to a project that is important for your work as a way of professional development or selecting a project that will push you to learn a new programming language and be a part of a new community.
The most important thing to remember is that (like with everything in life) if you are not interested , it is going to be hard to find the motivation to do it! Keep that in mind when selecting a project to contribute to.
What type of contribution should I make?
Keep in mind coding is not the only way to contribute, here are some other ways you can help:
- Open new issues
- Help triaging issues
- Improve or translate documentation
- Volunteer to maintain a project
An excellent step to remember before opening that new issue is that there might be many existing issues in which you could help and be impactful. Maintainers are typically unpaid folks, and while there are lots of well-meaning contributors opening issues in their projects each day, in a way this adds to the burden of maintainership.
Once you’ve chosen your project and the type of contribution you’d like to make, you are ready to start.
Here are five tips to make your contributions helpful:
1. Read the project’s contributing docs
A file in the project’s repository called CONTRIBUTING, or README, will outline exactly how to contribute. It might seem apparent to read one or both of these documents first, but it can be easy to skip this critical step if you’re eager to contribute. I’ve been guilty of this myself, only to realize later that my contribution was not following the guidelines of the project.
2. Ask all the questions
One of the most amazing qualities of most OSS projects is that they are full of helpful and welcoming individuals, if you are unsure about how to implement a change or where your work can be the most impactful check the project’s communication channels. Most projects have a discourse instance, slack channel, or spectrum room to help answer questions from users and would be contributors.
3. Do checks on your work and then check your work again
Imagine the submission of your issue or pull request as important as a work assignment.
- Focus your work. Starting small will give your contributions a better chance to be accepted
- Write descriptive and succinct commit messages
- Do your tests, then check your work again
4. Remember the why!
You are here to learn, help, and leave your mark in the development world; your contributions should reflect that.
5. Be patient and open to feedback
Remember, the folks working on this projects also have full-time jobs and life obligations. Be patient, give time for your contributions to be reviewed, and be open to feedback.
And finally, stay encouraged. Maybe your first contribution was not accepted or the community wasn’t the most welcoming. Keep trying and learning from the experience, or find another project you are equally interested in and that might be a better match.
I hope you find this tips helpful in your development journey. A great way to learn something new is to try it! What OSS project will you contribute to next?
Other helpful links: