The role of open source software maintainer is a difficult and often thankless one. A recent Tidelift survey, for example, found that 46 percent of open source project maintainers aren't even paid. Nonetheless, the work maintainers do is critical to ensure the long-term usability, security, and reliability of open source software.
In this article, we’ll look at what that work entails and provide resources so you can learn more.
What Do Maintainers Do?
“Maintainers are the conductors of an open source project orchestra,” writes Steven J. Vaughan-Nichols. “If a bug hasn't been fixed by a developer, they'll fix it. If the code hasn't been reviewed, they'll review it. And, with large projects like Linux, there are often hundreds of code patches, which need to be maintained a week.”
The Linux kernel, according to Mike Dolan, GM and Senior Vice President of Strategic Programs at the Linux Foundation, "follows a model where Linus [Torvalds] oversees the final release details, but nearly all decisions are actually made by the respective subsystem maintainers, or subsystem group maintainers. All projects are inclusive, meaning anyone can contribute and participate in the technical community.”
To learn more about this crucial role, the recent Tidelift survey asked open source software maintainers what percentage of time they spend on various tasks. Respondents listed the following tasks:
- Building new features and writing code (24.4%)
- Reviewing contributions / issues, and responding to users (19.6%)
- Bug reports / fixes and resolving conflicts (14.1%)
- Proactively managing technical debt and improving existing code (11%)
- Documentation (8.7%)
- Guiding the project's strategic direction (4.6%)
More than Code
The Best Practices for Maintainers guide reiterates that maintaining a project requires more than code and notes the following areas that are equally important to a growing project:
- Document your processes — This ongoing requirement involves explaining your vision, communicating expectations, and keeping communication open.
- Learn to say no — This task includes triaging issues, educating contributors, and keeping things moving.
- Leverage your community — This means sharing the workload with others who are interested and willing to help.
“No matter how well-intentioned and free wheeling a project is, at some point, to succeed at scale, decisions need to be made and conflicts need to be resolved,” says Ryan Donovan. “A small project can operate with unspoken shared rules. Once a project forms a larger community, the processes for making those decisions need to be written down and made explicit so new contributors know how to engage successfully.”
The best practices guide for maintainers provides questions to help clarify your processes for yourself and others, such as:
- How is a contribution reviewed?
- What types of contributions do you accept?
- When can contributors expect a response?
- What areas are most urgent, i.e., for which issues would you most like to receive contributions?
“The open source ecosystem is growing more complex, and with that complexity comes new burdens for open source maintainers to keep their projects compatible with the other projects, code, and applications they were designed to work with,” says Klint Finley. According to open source maintainers surveyed by Tidelift, help in the following areas would be extremely or somewhat valuable:
- Documentation (90%)
- Improving the experience for new users and contributors (90%)
- Marketing (80%)
- Triaging issues and pull requests (80%)
Open source software is often compared to physical infrastructure, such as roads and bridges, Finley says, and it requires similar investment in maintenance and improvement.
- The Art of Closing by Jessie Frazelle
- Greg Kroah-Hartman: Lessons for Developers from 20 Years of Linux Kernel Work by David Cassel
- How personality traits affect the open source development process by Esther Shein
- Maintainer confidential: Opportunities and challenges of the ubiquitous but under-resourced Yocto Project by Richard Purdie
- The README Project
If you're ready to find a job, check out the open positions at Open Source JobHub.