Open-Source Code Donation 101
Updated: Feb 18
The open-source model is a decentralized software development model that encourages open collaboration - Wikipedia. Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product.
Code donations have many advantages, and in my previous blog, I presented how one code donation changed my career and got me promoted at work.
It can do the same for you or even more; it's really up to you!
So in this blog, I cover tips and tricks to get you started in the wonderful world of open-source code donation.
This blog assumes you are familiar with concepts such as GitHub, git, and Pull Requests.
My Code Donation Personal Rules
The code donation process can be split into two parts: finding what to do and then doing the actual work.
In many cases, finding a project to donate code is much more complicated than the donation itself.
In addition, code donations require dedication and time, as you will often do it at the expense of your free time after work hours.
For those reasons, the guidelines below have helped me set my expectations and put my time boundaries in check.
Find an area that interests you; it will keep you engaged and motivated.
Try to improve the software you regularly use; it makes the code donation more personal and meaningful.
You are doing this to spread knowledge and help others, but also for fun - if you are not enjoying yourself, or it becomes too much of a hassle, don't do it.
Size Doesn't Matter
Your donation can be as little as a one-liner commit.
As long it helps the community or solves an issue, it serves the purpose.
Code donation is not your primary job. You already have a job, personal, and family life to manage. Keep it balanced and manage your time. Please don't overdo it.
Dedicate a few hours over a week to this new experience.
Some companies might give you time during work hours for learning and code donations. If not, then you need to do it in your spare time.
However, please don't overdo it; you are not on the clock.
Keep it mind that It's very common for a PR to take several weeks. It might take even longer for that PR to get merged eventually so take it easy. Don't forget that the repository maintainers also do this in their leisure time.
How To Start
Many people want to donate code but don't know where to start.
Here are my guidelines that will help you find a suitable project worth investing your time in:
Choose a project that solves annoyances or issues you encounter in your daily work.
Choose a project you are interested in and are passionate about and use it in your daily work.
Choose a project written in a programming language of your expertise. Focus on the donation, not the language.
Choose an active project where the maintainers actively respond to issues, and releases are relatively frequent. You don't want your PR waiting for months.
Choose a project with clear code donation/contribution guidelines (look for a CONTRIBUTING.md file). You don’t want to spend nights figuring out how to set up a developer environment. Keep in mind that some projects don’t appreciate outsider donations or are very strict about them.
Look for issues that have labels marked as “good first issue” as described here.
Eureka, I Found a Project!
OK. So you found a potential project. Now what?
Try to look at the current open issues.
Maybe you have an idea or a problem that bugs you; open a new issue and ensure you follow the repository guidelines for opening an issue (CONTRIBUTING or Readme files). Perhaps look for a call for developers or RFCs or try to engage in a discussion.
Some ideas for easy first-time contribution are:
Translating the repository guide/readme file.
Adding sample output or code examples for the documentation.
Fixing typos or grammar mistakes.
If you get stuck, try to find the maintainers on Slack/Twitter/Discord and ask for assistance.
One last important tip, albeit obvious, do not, I repeat, do not use any company code or internal libraries. Any code you write must write from scratch, and it must not resemble any company patents or products.
However, I'm not a lawyer (and I don't take any responsibility for anything you donate), so please consult your legal department on the specific code donation.
Patience is Key
Once your PR's build is green, don't expect it to get merged so fast. It might take time.
The maintainers have jobs too. They might have a suggestion about the user experience, APIs, and the code itself.
Be patient and try to learn from their experience. Don't over-argue about the change requests; it's never beneficial or *that* important.
That's it; happy coding!