Skip to content

Commit

Permalink
Merge pull request #423 from emberjs/kg-implement-rfc-rfc
Browse files Browse the repository at this point in the history
Update the RFC templates and README to reflect RFC Process Updates RFC
  • Loading branch information
rwjblue authored Jan 23, 2019
2 parents 5b5bdaa + 176a838 commit 52018ab
Show file tree
Hide file tree
Showing 3 changed files with 128 additions and 35 deletions.
7 changes: 4 additions & 3 deletions 0000-template.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
- Start Date: (fill me in with today's date, YYYY-MM-DD)
- RFC PR: (leave this empty)
- Ember Issue: (leave this empty)
- Relevant Team(s): (fill this in with the [team(s)](README.md#relevant-teams) to which this RFC applies)
- RFC PR: (after opening the RFC PR, update this with a link to it and update the file name)
- Tracking: (leave this empty)

# (RFC title goes here)
# <RFC title>

## Summary

Expand Down
143 changes: 117 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ implemented and reviewed via the normal GitHub pull request workflow.

Some changes though are "substantial", and we ask that these be put
through a bit of a design process and produce a consensus among the Ember
core team.
core teams.

The "RFC" (request for comments) process is intended to provide a
consistent and controlled path for new features to enter the framework.
Expand All @@ -15,9 +15,10 @@ consistent and controlled path for new features to enter the framework.
## When you need to follow this process

You need to follow this process if you intend to make "substantial"
changes to Ember, Ember Data or its documentation. What constitutes a
"substantial" change is evolving based on community norms, but may
include the following.
changes to Ember, Ember Data, Ember CLI, their documentation, or any other
projects under the purview of the [Ember core teams](https://emberjs.com/team/).
What constitutes a "substantial" change is evolving based on community norms,
but may include the following:

- A new feature that creates new API surface area, and would
require a [feature flag] if introduced.
Expand Down Expand Up @@ -45,51 +46,92 @@ It's often helpful to get feedback on your concept before diving into the
level of API design detail required for an RFC. **You may open an
issue on this repo to start a high-level discussion**, with the goal of
eventually formulating an RFC pull request with the specific implementation
design.
design. We also highly recommend sharing drafts of RFCs in `#dev-rfc` on
the [Ember Discord](https://discord.gg/emberjs) for early feedback.

## What the process is
## The process

In short, to get a major feature added to Ember, one must first get the
RFC merged into the RFC repo as a markdown file. At that point the RFC
is 'active' and may be implemented with the goal of eventual inclusion
into Ember.

* Fork the RFC repo http://github.com/emberjs/rfcs
* Copy `0000-template.md` to `text/0000-my-feature.md` (where
'my-feature' is descriptive. don't assign an RFC number yet).
* Copy the appropriate template. For most RFCs, this is `0000-template.md`,
for deprecation RFCs it is `deprecation-template.md`.
Copy the template file to `text/0000-my-feature.md`, where
'my-feature' is descriptive. Don't assign an RFC number yet.
* Fill in the RFC. Put care into the details: **RFCs that do not
present convincing motivation, demonstrate understanding of the
impact of the design, or are disingenuous about the drawbacks or
alternatives tend to be poorly-received**.
* Fill in the relevant core teams. Use the table below to map from projects to
teams.
* Submit a pull request. As a pull request the RFC will receive design
feedback from the larger community, and the author should be prepared
to revise it in response.
* Find a champion on the relevant core team. The champion is responsible for
shepherding the RFC through the RFC process and representing it in core team
meetings.
* Update the pull request to add the number of the PR to the filename and
add a link to the PR in the header of the RFC.
* 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.
* Eventually, the [core team] will decide whether the RFC is a candidate
* Eventually, the [core teams] will decide whether the RFC is a candidate
for inclusion in Ember.
* RFCs that are candidates for inclusion in Ember will enter a "final comment
period" lasting 7 days. The beginning of this period will be signaled with a
comment and tag on the RFC's pull request. Furthermore,
[Ember's official Twitter account](https://twitter.com/emberjs) will post a
tweet about the RFC to attract the community's attention.
* An RFC can be modified based upon feedback from the [core team] and community.
* An RFC can be modified based upon feedback from the [core teams] and community.
Significant modifications may trigger a new final comment period.
* An RFC may be rejected by the [core team] after public discussion has settled
and comments have been made summarizing the rationale for rejection. A member of
the [core team] should then close the RFC's associated pull request.
* An RFC may be rejected by the [core teams] after public discussion has settled
and comments have been made summarizing the rationale for rejection. The RFC
will enter a "final comment period to close" lasting 7 days. At the end of the
"FCP to close" period, the PR will be closed.
* An RFC may be accepted at the close of its final comment period. A [core team]
member will merge the RFC's associated pull request, at which point the RFC will
become 'active'.

### Relevant Teams

The RFC template requires indicating the relevant core teams. The following table
offers a reference of teams responsible for each project. Please reach out for
further guidance.

| Core Team | Project/Topics |
|---------------|--------------------------------------------------------------|
| Ember.js | Ember.js |
| Ember Data | Ember Data |
| Ember CLI | Ember CLI |
| Learning | Documentation, Website, learning experiences |
| Steering | Governance |

### Finding a champion

The RFC Process requires finding a champion from the relevant core teams. The
champion is responsible for representing the RFC in team meetings, and for
shepherding its progress. [Read more about the Champion's job](#champion-responsibilities)

- Discord
The `dev-rfc` channel on the [Ember Discord](https://discord.gg/emberjs) is
reserved for the discussion of RFCs.
We highly recommend circulating early drafts of your RFC in this channel to both
receive early feedback and to find a champion.

- Request on an issue in the RFC repo or on the RFC
We monitor the RFC repository. We will circulate requests for champions but highly
recommend discussing the RFC in Discord.

## The RFC life-cycle

Once an RFC becomes active then authors may implement it and submit the
feature as a pull request to the Ember repo. Becoming 'active' is not a rubber
stamp, and in particular still does not mean the feature will ultimately
be merged; it does mean that the core team has agreed to it in principle
and are amenable to merging it.
Once an RFC becomes active the relevant teams will plan the feature and create
issues in the relevant repositories.
Becoming 'active' is not a rubber stamp, and in particular still does not mean
the feature will ultimately be merged; it does mean that the core team has agreed
to it in principle and are amenable to merging it.

Furthermore, the fact that a given RFC has been accepted and is
'active' implies nothing about what priority is assigned to its
Expand All @@ -100,7 +142,7 @@ to write each RFC in a manner that it will reflect the final design of
the feature; but the nature of the process means that we cannot expect
every merged RFC to actually reflect what the end result will be at
the time of the next major release; therefore we try to keep each RFC
document somewhat in sync with the language feature as planned,
document somewhat in sync with the feature as planned,
tracking such changes via followup pull requests to the document.

## Implementing an RFC
Expand All @@ -113,15 +155,64 @@ If you are interested in working on the implementation for an 'active'
RFC, but cannot determine if someone else is already working on it,
feel free to ask (e.g. by leaving a comment on the associated issue).

## Reviewing RFC's
## For Core Team Members

### Reviewing RFCs

Each core team is responsible for reviewing open RFCs. The team must ensure
that if an RFC is relevant to their team's responsibilities the team is
correctly specified in the 'Relevant Team(s)' section of the RFC front-matter.
The team must also ensure that each RFC addresses any consequences, changes, or
work required in the team's area of responsibility.

As it is with the wider community, the RFC process is the time for
teams and team members to push back on, encourage, refine, or otherwise comment
on proposals.

### Referencing RFCs

- When mentioning RFCs that have been merged, link to the merged version,
not to the pull-request.

### Champion Responsibilities

* achieving consensus from the team(s) to move the RFC through the stages of
the RFC process.
* ensuring the RFC follows the RFC process.
* shepherding the planning and implementation of the RFC. Before the RFC is
accepted, the champion may remove themselves. The champion may find a replacement
champion at any time.

### Helpful checklists for Champions

#### Becoming champion of an RFC
- [ ] Assign the RFC to yourself

#### Moving to FCP to Merge
- [ ] Achieve consensus to move to "FCP to Merge" from relevant core teams
- [ ] Comment in the RFC to address any outstanding issues and to proclaim the
start of the FCP period
- [ ] Tweet from `@emberjs` about the FCP
- [ ] Ensure the RFC has had the filename and header updated with the PR number

#### Move to FCP to Close
- [ ] Achieve consensus to move to "FCP to Close" from relevant core teams
- [ ] Comment in the RFC to explain the decision

Each week the [core team] will attempt to review some set of open RFC
pull requests.
#### Closing an RFC
- [ ] Comment about the end of the FCP period with no new info
- [ ] Close the PR

We try to make sure that any RFC that we accept is accepted at the
Friday team meeting, and reported in [core team notes]. Every
accepted feature should have a core team champion, who will represent
the feature and its progress.
#### Merging an RFC
- [ ] Achieve consensus to merge from relevant core teams
- [ ] Ensure the RFC has had the filename and header updated with the PR number
- [ ] Create a tracking card for the RFC implementation at {projects}
- [ ] Update the RFC header with a link to the tracking
- [ ] Merge
- [ ] Update the RFC PR with a link to the merged RFC (The `Rendered` links often
go stale when the branch or fork is deleted)
- [ ] Ensure relevant teams plan out what is necessary to implement
- [ ] Put relevant issues on the tracking

**Ember's RFC process owes its inspiration to the [Rust RFC process]**

Expand Down
13 changes: 7 additions & 6 deletions deprecation-template.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
- Start Date: (fill me in with today's date, YYYY-MM-DD)
- RFC PR: (leave this empty)
- Ember Issue: (leave this empty)
- Relevant Team(s): (fill this in with the [team(s)](README.md#relevant-teams) to which this RFC applies)
- RFC PR: (after opening the RFC PR, update this with a link to it and update the file name)
- Tracking: (leave this empty)

# <RFC title>

## Summary

> One paragraph explanation of the deprecation.
Expand All @@ -16,7 +17,7 @@ What is the replacement functionality?
## Transition Path

> This is the bulk of the RFC. Explain the use-cases that deprecated functionality
covers, and for each use-case, describe the transition path.
covers, and for each use-case, describe the transition path.
Describe it in enough detail for someone who uses the deprecated functionality
to understand, for someone to write the deprecation guide, and for someone
familiar with the implementation to implement.
Expand All @@ -25,7 +26,7 @@ familiar with the implementation to implement.

> Would the acceptance of this proposal mean the Ember guides must be
re-organized or altered? Does it change how Ember is taught to new users
at any level?
at any level?
Does it mean we need to put effort into highlighting the replacement
functionality more? What should we do about documentation, in the guides
related to this feature?
Expand All @@ -36,7 +37,7 @@ users?

> Why should we *not* do this? Please consider the impact on teaching Ember,
on the integration of this feature with other existing and planned features,
on the impact of the API churn on existing apps, etc.
on the impact of the API churn on existing apps, etc.
There are tradeoffs to choosing any path, please attempt to identify them here.

## Alternatives
Expand Down

0 comments on commit 52018ab

Please sign in to comment.