- Repo:
- Start Date:
- RFC PR:
- Related Issues:
- Authors:
- Champion:
- Implementors:
Brief explanation of the feature.
If the proposal involves a new or changed API, include a basic code example. Omit this section if it's not applicable.
Why are we doing this? What use cases does it support? What is the expected outcome?
Please focus on explaining the motivation so that if this RFC is not accepted, the motivation could be used to develop alternative solutions. In other words, enumerate the constraints you are trying to solve without coupling them too closely to the solution you have in mind.
This is the bulk of the RFC. Explain the design in enough detail for somebody familiar with Babel to understand, and for somebody familiar with the implementation to implement. This should get into specifics and corner-cases, and include examples of how the feature is used. Any new terminology should be defined here.
Why should we not do this? Please consider:
- implementation cost, both in term of code size and complexity
- whether the proposed feature can be implemented in user space
- the impact on teaching people Babel
- integration of this feature with other existing and planned features
- cost of migrating existing Babel applications (is it a breaking change?)
There are tradeoffs to choosing any path. Attempt to identify them here.
What other designs have been considered? Why did you decide against those? What is the impact of not doing this?
This section should also include prior art, such as whether similar projects have already implemented a similar feature.
If we implement this proposal, how will existing users adopt it? Is this a breaking change? How will we minimize disruption to existing users? Can we write a codemod? Should we coordinate with other projects or libraries?
What names and terminology work best for these concepts and why? How is this idea best presented?
Would the acceptance of this proposal mean our documentation must be re-organized or altered? Does it change how Babel is used by developers at any level?
How should this feature be taught to existing users?