An alien life form on Star Trek: The Next Generation once described humans as “ugly bags of mostly water”. I don’t think that humans are ugly, but we are kind of squishy, and not just in the physical sense. We can be unpredictable and irrational, especially when we’re stressed out, overworked, or burnt out. We have other commitments and personal challenges in our lives that are often invisible to others, and they can get in the way of our contributions to open source projects. But you can’t have an open source project without having human beings to maintain it, so you need to be able to encourage people to participate in ways that are sustainable over the long term - both for the project and for those people.
Open Source Powers Innovation
At VMware, we see open source software as a way to power innovation, but we only get that benefit by contributing to the open source projects that we use. As Director of Open Source Community Strategy, VMware encourages me to help improve open source projects in areas that we are interested in, such as cloud native technologies. One way I do this is through my role as co-chair of the Cloud Native Computing Foundation (CNCF) Contributor Strategy Technical Advisory Group (TAG) where we develop templates and how-to guides for open source project maintainers to use.
It’s important to remember that open source project maintainers are also squishy humans with feelings and bad days. Maintaining an open source project is hard work, and maintainer burnout is common. It can be hard for already overworked maintainers to balance the day to day work required to keep the project running while also investing in additional activities to increase future community sustainability. This creates a vicious cycle where maintainers don’t have time to onboard new contributors. This leads to fewer contributors, which leads back to not having time to onboard new contributors.
There are things you can do to motivate people to contribute. Having good first issues or help wanted labels are excellent places to start because these help contributors find something that they can work on while they learn more about the project. But ... good first issues and help wanted labels are passive requests for help, so I also encourage maintainers to be proactive and specific about ways that people can help. Knowing that we’re wanted and appreciated makes us squishy humans feel good, which can be a strong motivator to contribute to an open source project.
Good Governance Is Key
Open source project governance might seem like extra paperwork that gets in the way of doing the “real” work. But this isn’t true of good governance, which is really about setting expectations and getting your community collaborating together. Ultimately the focus of open source project governance is on the people. The roles we play, our responsibilities, how we make decisions, and what we should expect from each other as part of participating in the community. We even have governance templates with instructions that we’ve developed for CNCF projects, but any project can use them.
Good documentation is how we scale the things that take up precious time, like answering the same onboarding questions over and over. I see so many open source projects with contributing guides that don’t actually provide any useful information. At a minimum, a new contributor needs to be able to spin up an environment where they can do their development, know how to run tests, understand any processes or expectations you have for pull requests, and get instructions for any other requirements.
Your project should be designed to keep diversity, equity, and inclusion top of mind. Providing an environment where everyone, including people from marginalized populations, feel safe is the first step toward building a diverse community around your project. Projects that make a concerted effort to bring in new people from a variety of backgrounds and have programs in place to help them grow into leadership positions are more likely to benefit from increased innovation and have a healthier contributor community. By having a diverse and welcoming community, you have the advantage of getting the humans who might not feel welcome in other projects.
Humans like to think of ourselves as irreplaceable, but we aren’t. We move on to other jobs, we burn out, we retire, and let’s face it, humans are mortal and we do not live forever. You should think about what you might want to do next and how you can prepare someone else to take over after you move on. Having emeritus roles is a good way to do this, since it recognizes the hard work that maintainers have put into a project and gives others a point of contact if they have questions, while also allowing people to step away from their day to day responsibilities on a project.
Defining the roles and responsibilities for contributors, reviewers, and maintainers helps with recruitment. Think about this as a ladder where contributors can climb up to become reviewers and those reviewers can become maintainers. As you get more of the humans moving into maintainer roles, you can reduce the workload for the existing maintainers.
Mentoring takes a bit more time, but it’s a good way to help existing contributors become even better with an eye toward moving them into leadership positions. Spending just an hour a week, or even a month, to help another human become more productive in your project can be time well spent.
The strategic part of all of this comes in thinking about where your time would be best spent. I’ve given a lot of suggestions so far, and you should not try to do everything at once, so I recommend you think strategically about where you should start. If you know you’ve had people interested in contributing, but then they’ve given up when they couldn’t get started, maybe you should start with onboarding docs. If you have a lot of casual contributors, maybe you focus on the contributor ladder and governance to help move some of those humans up the ladder to take on more responsibility and eventually move into leadership positions. And as I mentioned before, you don’t need to do everything at once. Spending just a little time on something to grow your contributor base is a great way to start.
So this is what I’m asking you to do. If you’re maintainer or even a regular contributor to an open source project, carve out 1 hour a week to improve your onboarding docs, your contributing guide, project governance, or just spend that time helping another human learn to do something new.