One of the amazing gifts that software engineers have today is the volume of free, high-quality, open source software. For instance, Python has 384,273 projects on PyPI. They span everything from utilities like Requests to backend Web frameworks like Django to machine learning packages like scikit-learn — and more. It’s incredible when you think about it.
When I started getting into software, I remember people talking about contributing to open source. And when I heard contribute, I was translating that to create or maintain, even when those words weren’t used. It sounded amazing — and overwhelming.
I’m very grateful for the work of open source creators and maintainers, and we are at no risk of appreciating that work too much. I am glad that we are talking more these days about how to sponsor open source work, as companies and as individuals, and have programs like GitHub Sponsors.
But open source contribution means more than creating a package or being a maintainer, as important as those roles are.
Contributing to open source also means:
- Filing bugs with detailed reproduction steps
- Fixing bugs
- Filing issues for documentation that is unclear, confusing, or outdated
- Writing documentation (there are 4 kinds)
- Proposing improvements to existing projects
- Contributing features
- And more
Developers using open source software are in a unique position. Most software users do not have the chance to read the code, much less change it directly. But when developers use open source, they get to use their skills to improve the very software they are using.
- If you find the documentation confusing, chances are that someone else will too. By improving it, you make it better for the next person (which also might be you re-reading the same documentation in 6 months!).
- If you find a bug, and you have the stack trace and can isolate exactly what causes the bug to appear, you can now write an awesome bug ticket. If you have time, you could also contribute a patch for review.
Contributing to open source can be a full-time job, but it doesn’t have to be. There are everyday ways for the rest of us to contribute, and those everyday contributions help the whole community.
Thanks to Ignacio Chiazzo for reading a draft of this.