Making open source accessible
I'm been dabbling in open source for most of my professional career, but only in the last year or so would I consider myself a 'maintainer'. By which I mean there's a project I care deeply about, and want to create and sustain a community around (hint - it's Piccolo!).
I've made a bunch of mistakes along the way, and am still learning. But I've realised some things about making a project friendlier to contributors, which is what this article will be about.
Make a useful project
A prerequisite is having a project which is useful, and well documented. If someone isn't intrigued by your project as a user, they are very unlikely to want to contribute. So get the basics in place for your users first.
Contributing docs
There needs to be somewhere that contributors can read about what's expected. This can be a CONTRIBUTING.md
file in your GitHub repo, or a section in your docs.
I recently put a lot of effort into updating the CONTRIBUTING.md
file for Piccolo. You can see it here. It covers many aspects of contributing, such as:
- Which tasks are most appropriate to newcomers
- What makes a good pull request
- How soon to expect a code review
Create tasks for new contributors
In GitHub you can add tags to your tasks. There's one called good first issue
. It's worth putting in some effort, and creating tasks especially for newcomers.
These tasks should be nicely self contained, and not require extensive knowledge of the code base. However, they should also be meaningful, and not just tedious admin tasks.
Be helpful
Creating a pull request can be daunting. Let's be honest, Git isn't the easiest thing to master, and learning a new codebase can be intimidating. Be as helpful as possible to new contributors.
Spread the word
There are programs such as Hacktoberfest, and Google Summer of Code. Hacktoberfest is very easy to get involved with (you just add the hacktoberfest
label to your project). Google Summer of Code is much more involved.
Resources
Posted on: 13 Oct 2021
Have any comments or feedback on this post? Chat with us on GitHub.