Discuss draft ideas on Discord, or follow this RFC process if you are clear on your next steps.
When you need to follow this process
You need to follow this process if you intend to make “substantial” changes to the project, or the RFC process itself. What constitutes a “substantial” change is evolving based on team norms and varies depending on what part of the ecosystem you are proposing to change, but may include the following.- Any semantic or syntactic change that is not a bugfix.
- Removing features, including those that are feature-gated.
- Removing features, including those that are feature-gated.
- Additions that strictly improve objective, numerical quality criteria (warning removal, speedup, better test coverage, more parallelism, trap more errors, etc.)
What the process is
In short, to get a major change done on the project, one must first get the RFC merged into the RFC space as a page. At that point the RFC is “active” and may be implemented with the goal of eventual inclusion into the project.- Start a change request in this space
- Copy the template page
- Fill in the RFC. Put care into the details: RFCs that do not present convincing motivation, demonstrate lack of understanding of the design’s impact, or are disingenuous about the drawbacks or alternatives tend to be poorly-received.
- Submit the change request. As a change request the RFC will receive design feedback from the larger team, and the author should be prepared to revise it in response.
- Build consensus and integrate feedback. RFCs that have broad support are much more likely to make progress than those that don’t receive any comments. Feel free to reach out to the RFC assignee in particular to get help identifying stakeholders and obstacles.
- The team will discuss the RFC change request, as much as possible iusing comments in the change request itself. Offline discussion will be summarized on the change request comment thread.
- RFCs rarely go through this process unchanged, especially as alternatives and drawbacks are shown. You can make edits, big and small, to the RFC to clarify or change the design, but make changes as new edits to the change request, and leave a comment on the change request explaining your changes. Specifically, do merge the change request.
