At first glance, open source projects may look chaotic. People who are completely new to open source software often wonder how a group of random people can throw code together with a resulting stable product used by millions of people. It doesn’t take long to realize that this isn’t how open source software works. Almost every open source project has some structure, and the best projects will have the structure and project governance clearly described on the project website or in the documentation. (GitHub’s guides for contributors have a great overview of project anatomy.)
While the exact governance model varies widely across projects, there are some commonalities:
- Leader: At a minimum, there should be someone responsible for making the final decision about features, releases, and other activities. In some cases, this is a single person, for example, Linus Torvalds is the original author and has the final say on anything related to the Linux kernel. In other projects, there may be one or more committees responsible for various aspects of a project, like the Core Technical Committee that governs the Node.js project.
- Maintainers: Most leaders delegate some of the decisions to people who are responsible for maintaining specific parts of the project, and in large projects, these maintainers may also delegate to people who are responsible for subcomponents of their portion. For example, Linus Torvalds delegates Linux kernel documentation decisions to Jonathan Corbet.
- Committers: Some projects also have groups of people who have contributed to the project and are considered reliable and responsible enough to be allowed to commit directly to all or some parts of the project, rather than having to submit to a maintainer for review. Contributions from committers are still subject to review by maintainers or project leaders and may be reverted if there are any concerns about the contribution.
- Contributors: Many people contribute to open source projects with code, documentation and other contributions. These contributions are usually subject to a review from an experienced committer and / or maintainer before the contributions are included.
- Users: The most important group of people in an open source project is likely to be the ones who actually use the product, since users give the project a purpose and help it grow. These valuable members of the community can provide feedback about features, bug reports and more.
The community is one of the things that can make or break an open source project, and having a strong, vibrant, and diverse open source community is important to the project’s success. All of the people in the roles listed above are part of this community along with people filling other critical roles in the project for documentation, marketing, user support, and so much more.