Not every change requires a discussion, but not every change can be made unilaterally.
RFC (Request for Comments, proposal and feedback process) is a way for a change to be stated, discussed, and approved before being implemented in the system. You need an RFC when the system is open for multiple teams to contribute, or when there is a significant change that could disrupt the current standards. A small system with a single owner does not require a heavy process; a quick note and approval are sufficient.
RFC (Request for Comments, proposal and feedback process) is not an administrative procedure. It is a mechanism for clearly stating, discussing, and responsibly approving a significant change before it affects everyone using the system. The question is not "should we do an RFC?" but rather "how significant is this change and how many parties are affected?"
The RFC model is popular in open-source programming, adopted by the Rust and Ember communities for adding major features to languages and frameworks. Nathan Curtis proposed a design system that follows this approach: preliminary discussions first, then an official proposal with descriptions, reasons, and scope, and finally, the execution and review of the complete version.
In the context of a design system, an RFC typically consists of three basic steps:
The weight of each step varies depending on the scale and the number of teams using the system.
There is no one-size-fits-all solution. You need to balance according to four factors:
Brad Frost emphasizes the need for a public governance process to balance openness for contributions and maintaining common standards. Public here does not mean complex, but rather that everyone knows where the proposal stands, who decides, and why.
In the design and operational package with management, Sinh Vũ delivers an RFC process suitable for the client's team size: every change has a proposer and an approver, ensuring the system evolves in a controlled manner rather than drifting. The focus is to allow the client team to propose and add components while maintaining standards, without relying on a single person who knows the entire system.
The weight of the process is balanced according to team size and the number of parties involved. Sinh Vũ does not apply the exact framework of large corporations to a team of five. The main principle: multiple parallel levels, a fast track for small tasks, a comprehensive track for larger tasks with risks.
Contributions are any proposals, designs, source code, documents, or assets of a new feature made by someone outside the core team and released for others to use. Therefore, a clear acceptance framework is needed.
Nathan Curtis, Defining Design System Contributions, EightShapes
Topic: The process of proposing and approving RFC changes in the design system. Sinh Vũ Handbook, sinhvu.com
Select each item you find appropriate, then print or save as PDF to take with you.
If you have marked most of the signs above, this is the time to discuss in more detail. Sinh Vũ can help you review and propose a direction.
Nathan Curtis, Defining Design System Contributions (EightShapes). Brad Frost, A Design System Governance Process.
If only a core team uses and owns it, you do not need a full RFC. Noting the reasons for changes, who approves them, and when to apply is sufficient. A heavy RFC only generates value when multiple parties contribute or depend on the system.
At a minimum, it includes: a description of the change, reasons for the proposal, scope of impact, and who approves it. For significant changes, it's advisable to include a draft for discussion before the official proposal. There's no need to replicate the exact framework of large corporations for small teams.
The core team of the design system is the final approver. The most important criterion is: does this change truly belong to the system's scope, or is it just a specific need of one product? If the core team does not have enough authority to approve, do not open contributions widely, as proposals will pile up without anyone finalizing them.