Feature Name: [ a unique and descriptive title, written in the imperative mood, ex: Provide Raycasting Utilities ]
Start Date: [ today's date, YYYY-MM-DD ]
Authors: [ your name(s) ]
Related components/issues: [ omit if there are none ]
A one paragraph explanation of the feature.
Why are we doing this? What problems does it solve? What use cases does it support? What is the expected outcome?
This is the core of the RFC. Explain the design in enough detail for someone familiar with the project to understand the proposed solution, and for someone familiar with the code to implement it. This should get into specifics and corner-cases, and should include examples of how the feature is used. In addition to prose, you can use pseudo code or any sort of diagram you think best illustrates the topic.
Why might we not want to do this? What are the trade offs?
What other designs have been considered? What is the impact of not doing this?
What type of change is this?
- Major: Some or all of this functionally will replace existing functionally
- Minor: This is entirely new functionally
- Patch: Bug fixes and the like. Likely doesn't require an RFC
If this is a major change:
- What functionally is it replacing?
- How should the new functionality be rolled out?
- What considerations are there for the period of time when the new functionality coexists with the old functionally while it is deprecated but not yet removed?
- How will the old functionally be sunset?
- How do we inform the community about the deprecation and the timelines involved?
- How do we instruct them on how to use the new functionality?
- What can we do to ease the migration process?
What uncertainties do you have, if any? What parts of the problem, if any, haven't been solved yet?