Governance is a framework for establishing roles, processes, and decision-making authority. It's for making sure the design system can adapt and thrive as time goes on, and starts by answering some important questions about handling change.
Image via Atomic Design, by Brad Frost
Makers of the design system are those who create and maintain the system. Users of the design system are those across projects who take the system and apply its design elements to specific applications. Bugs and enhancements will often be realized at the application level, but those changes should often be acted on at the system level.
The CMS.gov design system will initially be used by HealthCare.gov. On the spectrum of design system users and makers, the makers and users of the system are in close proximity and sometimes a user of the system will also be a maker. Communication between the two groups should be frequent to ensure that the system is smart, flexible, scalable, and addresses the needs of the users.
Below is a framework to guide the communication and collaboration between makers and users.
As the design system is adopted by more projects, the spectrum of design system users and makers widens, and there is a more distinct separation between makers and users. It's important to establish roles for these different makers and define their responsibilities.
The Steering Committee consists of the product owners and they have final authority over this project, including the following responsibilities:
- Design and technical direction
- Project governance and process (including this framework)
- GitHub repository and documentation hosting
- Management and coordination of Team Members
"Team Member" is a distinction and set of responsibilities that the Steering Committee can bestow on design system contributors. Team Members make significant and valuable contributions to the design system and are responsible to:
- Commit and merge pull requests into master
- Maintain and contribute documentation, guidelines, and best practices
- Participate in the Review, Validation, and Testing steps of the pattern proposal process, outlined below
- Introduce new users to the design system, whether that's showing them around the design system or knowing who to point them to
A Contributor is any individual creating or commenting on an issue or pull request. Anyone may propose a new pattern or an amendment to existing patterns. All pull requests must be reviewed and accepted by a Team Member with sufficient expertise who is able to take full responsibility for the change. In the case of pull requests proposed by an existing Team Member, an additional Team Member is required for sign-off.
Team Members may opt to elevate significant or controversial modifications, or modifications that have not found consensus, to the Steering Committee for discussion. The Steering Committee should serve as the final arbiter where required.