Open-source software is extremely pervasive. Many of you reading this probably benefit directly from it to help you do your jobs. End users experience the benefits when they surf the web or use a free alternative to prohibitively-priced software (such as Godot game engine or GIMP). Also, many of us simply like to examine the source code of our favorite projects to learn a bit more about how they work.
These are all great reasons to use open-source. However, the real power lies in not just consuming all of this great work, but actually contributing something back. Events like Hacktoberfest help incentivize us to actually try doing that, but personally I get far more out of it than a free t-shirt.
There are also many other ways to contribute to open source (documentation, evangelizing the project, etc.) but in this article I want to focus on code contributions specifically.
Here are some of the benefits that I've personally experienced.
As you can imagine, you'll learn a lot about the project codebase if you're trying to fix a bug or add a feature. Even if you don't ultimately succeed in figuring it out and making the change, you will undoubtedly learn a lot from the experience.
If you do get stuck, don't be afraid to ask for help by raising an issue on Github, or whatever communication channels are preferred by the project.
Also, don't feel like you need to be an expert in the project. Most of my changes are about two lines of code. Sometimes that's the difference between code that works and code that doesn't.
If the project is on Github, you'll probably notice that there are far more stars (people who show some tangential interest in the project) than contributors (people who actually have committed code). If you become a contributor, however small your contribution, you become a member of an elite club. Someone who cares and takes action, and doesn't just sit on the sidelines waiting for others to improve the project.
When you pay for a proprietary software product with dollars, you want to see a return on your investment in terms of more dollars than you put in (usually). When you make a change or add a fix to your favorite open-source project, you're making an investment with your time, but it's more personally enriching as it helps you learn and brings you closer to people who work on this project purely out of the joy they get from working on it. If you end up making multiple contributions to the project over time, you'll likely be interacting with the same people on a regular basis.
With remote work on the rise, especially in the tech industry, the ability to communicate effectively and collaborate with others will be of utmost importance. When you participate in an open-source project, whether with Github issues, the project's Slack/Discord channel, or even a mailing list, your ability to interact with people of vastly different backgrounds and situations will become paramount. The better you are at this, the more desirable you will be by potential employers and customers/clients. What better way to practice this than by helping improve a project you care about?
Also, if there are contribution guidelines (often in the form of a
CONTRIBUTING.md file in the project repo) you will be able to demonstrate that you're able to properly follow instructions and care about doing things right.
If you're on Github, a large portion of the things you do on that platform are public. Use this to your advantage by always putting your best foot forward when you're making pull requests and communicating with fellow contributors. As software devs, we are fortunate to have this avenue to demonstrate our work, so make the most of it!
There are so many ways to benefit from contributing to open source, that I wished I started doing it sooner. I hope that you can find some time to participate in improving one of your favorite projects and experience at least some of the same benefits.