Skip to content

Instantly share code, notes, and snippets.

@fauxnik
Created September 29, 2023 18:14
Show Gist options
  • Save fauxnik/24e99b44097fda23ef85c413ef80c761 to your computer and use it in GitHub Desktop.
Save fauxnik/24e99b44097fda23ef85c413ef80c761 to your computer and use it in GitHub Desktop.
RFC Template

RFC Template

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 ]

Summary

A one paragraph explanation of the feature.

Motivation

Why are we doing this? What problems does it solve? What use cases does it support? What is the expected outcome?

Detailed design

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.

Drawbacks

Why might we not want to do this? What are the trade offs?

Alternatives

What other designs have been considered? What is the impact of not doing this?

Release considerations

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?

Open questions

What uncertainties do you have, if any? What parts of the problem, if any, haven't been solved yet?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment