October 09, 2020
Making Meaningful Hacktoberfest Contributions
Following core issues with Hacktoberfest that maintainers surfaced during the beginning of this year’s Hacktoberfest, DigitalOcean made Hacktoberfest 2020 opt-in. However, this only improves one aspect of the real problem in my opinion.
While maintainers are no longer forced to deal with swag-seeking random contributors, many people simply don’t know how to contribute to OSS in a way that’s meaningful and helpful. Because of this, I wanted to write a post on my own OSS contributions, and how you can make a positive impact on OSS, instead of a negative one.
What is Hacktoberfest
In case you’re unfamiliar with Hacktoberfest, Hacktoberfest is an online event happening worldwide every October, where contributors are awarded some swag (T-shirts and stickers) for making contributions to open-source software (OSS).
My contributions to OSS
I actually first started contributing to OSS through Hacktoberfest 2017, as I like free stuff and coding. My first contributions were small documentation improvements, bug fixes, and such. I liked interacting with nice developers from all over the world, and found OSS to be a nice way to explore cool projects.
After my first Hacktoberfest, I wanted to make more substantial contributions to OSS projects, and so I looked for mature projects where I could step up, commit to working on more complex tasks, and work with the maintainers to get my work merged.
What Hacktoberfest means for me
To me, Hacktoberfest isn’t just about quick typo fixes or adding superlatives to READMEs (though I must admit I did do these types of changes a few times). Rather, it’s about familiarizing the global developer community with OSS and how it works, encouraging developers to contribute to OSS, as well as shining a light on these projects, and helping their maintainers with the burden of maintaining software for free.
How you can make a positive impact on OSS
If you’re new to open-source, I’d recommend going over a first-timers guide such as this one by GitHub.
Done with that, maybe watched a few videos on the topic, and know what you want to do? I’d pay special attention to the following points:
OSS is already out there, waiting for you to become involved in it. The issues are there, but usually people won’t just tell you what to do. You’ll need to take initiative, look for the issues that deserve attention, and work on them.
Make an effort
While the simplest way to contribute to OSS is to work on the issues anyone can observe just by taking a look around the project’s repo, you should aim to do more.
If you can afford to invest a bit more time into OSS — look for the harder problems that people usually shy away from. These usually come in the form of issues that have been around for months and even years, core usability issues, missing documentation, and more. Working on them will leave a huge impact on the project, make you a meaningful part of it, and give you a sense of achievement and accomplishment.
Be as communicative as possible
If you have an idea for a cool feature — that’s great! Just be sure to first open an issue for it, and discuss the details with the maintainers. Want to work on an existing issue? Also cool, but leave a comment on it first, saying you’d like to work on it. Many times I’ve encountered multiple people working on the same issue, and it’s just a shame, caused by a simple lack of communication.
Note that I’m not saying you have to get prior permission for everything. For example, if you notice some logic in a library’s source code could be optimized, that’s awesome! You should totally open a PR with your suggested improvements. However, you shouldn’t do a major refactor without discussing it first with the project’s maintainers.
Contributing OSS is a marathon, not a sprint. Some PRs take many months and even years to get merged. It’s not that people don’t respect the time you invested into their project, but that they have other commitments as well. Doing OSS is hard, time-consuming, and not very rewarding in most cases. Keep in mind that the circumstances are different for everyone.
I truly appreciate people putting their time into OSS, and think that everyone can be a meaningful part of the community. I hope you’ll be able to take a thing or two from this post, and wish you luck in your OSS endeavors.
Thanks to Ben Greenberg for reading drafts of this post and giving me valuable feedback.