Open Source Project Maturity Model

Preface

This document aids open-source software project owner in creating their backlog prioritization and assessing their project in the following ways:

  • Engineering practices: The nitty gritty of code in a project. This dimension focuses on making sure the code that is being added to the project is consistent, secure, and tested such as style guidelines, test suites, and build systems.

  • Collaboration: How you work with people to get code into a project. Establishing best practices for communication such as documented channels, codes of conduct, contributor license agreements, and code review.

  • Contributor on-boarding: How a new contributor gets started working on a project–from getting the source code, to building/testing the project in their environment, to finding their first issue to work on.

  • Governance: How the project is managed and changed over time. Concerns about licensing, leadership, roadmap development, and community feedback.

  • Awareness: How people discover a project. Best practices for blogging, speaking, social media, and web presence in the community.

  • Adoption: Getting people to use a project. Making it easy for a consumer of the project's code, library, or project including documentation, quick-start guides, scaffolding and generator tooling.

The following is also a helpful maturity model for inner-sourcing–that is open sourcing a project to a limited set of people within the same organization.


Public

Level 1 - Congrats! Your project is public. The world is your oyster. The possibilities are endless. Here's to you for working in a glass-walled house.

Quality metrics

  1. If you are managing the project as part of your employement, complete any internal open sourcing paperwork

  2. Set up a Contributor License Agreement (CLA) for contributions.

  3. Document the contributing process.

Awareness metrics

  1. Decide whether the project is only public code or community-oriented open-source.

  2. Define a project owner and a technical lead.

  3. Define the purpose, scope, support level, and transparency of the project roadmap:

    1. What can be added to the library?

    2. Do project maintainers roadmap internal or external feature requests?

    3. Is the roadmap public?

  4. Published on GitHub.


Well-maintained

Level 2 - Managing complexity while maintaining quality and trust becomes crucial. You are starting to have a voice. The project is no longer a side project and your management chain takes notice.

Quality metrics

  1. Follows Semantic Versioning.

  2. Has a written “Getting Started” process. The uninitiated can set up the project without help. Basic installation and configuration details are tested and completed.

  3. Define the project's functionality, usefulness, and purpose.

  4. Create automated code-quality standards such as linting and unit tests. Validate with continuous integration. Build status is present.

  5. Documentation can be found in the source code or versioned.

  6. Project commands such as installing and testing are surfaced and easily accessible.

  7. Average response time to issues and/or pull requests by project maintainers is documented.

  8. Write scripts to standardize the release process.

Awareness metrics

  1. Define and communicate communication channels (internally and externally) for feedback.

  2. Related work items are tagged with the "open source” theme in your project management software.

  3. Project owners regularly raise project awareness with internal message board posts, chat channels, and appropriate internal communication.

  4. Write a blog post about the launch of your project.

  5. External consumers engage and create issues.

  6. Project communication is mostly conducted in the public.

  7. Create an engineering-focused presentation for sharing the value of the project and promote adoption.

  8. Join your company's conference speaking group to see how other people are promoting their projects.


Scalable

Level 3 - You start seeing yourself as a bottleneck. Tasks are starting to be delegated. You feel somewhat more like a people manager, but you are still a technical lead. Your co-workers across multiple teams associate the project with you.

Quality metrics

  1. Deploy a publicly available documentation website.

  2. Define a governance/contribution model.

  3. Working examples are available on the documentation website or a sample working repository is available to explain use cases.

  4. Detailed architectural documentation and style guidelines such as a codebase overview are documented.

  5. Processes related to getting started are documented.

  6. Write detailed user installation, configuration, running instructions, and information about common errors and how to resolve them. These are tested and current.

  7. Write detailed information about the project's purpose, functionality and special features/attributes, so that the reader can immediately understand the usefulness and impact of its features and attributes.

  8. Builds and releases occur on remote, public servers.

  9. Dependencies have automated security auditing.

  10. Documentation is always aligned with the latest release and is generated from the source code

Awareness metrics

  1. External consumers regularly create pull requests.

  2. Community sites such as StackOverflow are monitored with tag alerts.

  3. A detailed vision statement, project roadmap, or prioritized backlog for on-boarding new contributors exists publicly.

  4. The project has been adopted by multiple company teams.

  5. Multiple teams have key performance indicators (KPI) methods related to the project.

  6. Create an internal product-focused summary slide deck that concisely explains the project's business value to executives in less than 5 slides.

  7. Host a booth at an internal, customer-facing conference.

  8. Submit a talk to an open-source conference.

  9. Project lead writes two or more blog posts per year about what they are learning from leading the project.


Platform

Level 4 - You wonder how you got here. Developing thought leadership has become more important than management, because management has become a smooth, defined process. Quality is high enough that others trust the project and begin building code libraries on top of it. People associate the project with you externally.

Quality metrics

  1. The project is high quality and stable. All stakeholders trust the project leadership and know the project roadmap.

  2. Other projects build upon the project.

Awareness metrics

  1. Establish a significant external community.

  2. Carry out agile ceremonies and processes publicly.

  3. Maintain a list of internal and external consumers.

  4. Regularly speak about the project at public conferences.

Special Thanks

Special thanks to the Open Source Core Team at Salesforce