Skip to content

Commit

Permalink
Update the RFC templates and README to reflect RFC Process Updates
Browse files Browse the repository at this point in the history
  • Loading branch information
kategengler committed Dec 21, 2018
1 parent 8bfc473 commit fc48789
Show file tree
Hide file tree
Showing 3 changed files with 113 additions and 31 deletions.
5 changes: 3 additions & 2 deletions 0000-template.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
- 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) to which this RFC applies)
- RFC PR: (after opening the RFC PR, update this with a link to it)
- Tracking: (leave this empty)

# (RFC title goes here)

Expand Down
134 changes: 107 additions & 27 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
* 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 below table 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,53 @@ 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

Each week the [core team] will attempt to review some set of open RFC
pull requests.

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.
## For Core Team Members

### Reviewing RFC's

Each core team is responsible for reviewing open RFCs. If an RFC
requires work from their team, ensuring that the RFC reflects that.
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.

### 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

#### Closing an RFC
- [ ] Comment about the end of the FCP period with no new info
- [ ] Close the PR

#### 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 with a link to the tracking
- [ ] Merge
- [ ] 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
5 changes: 3 additions & 2 deletions deprecation-template.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
- 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) to which this RFC applies)
- RFC PR: (after opening the RFC PR, update this with a link to it)
- Tracking: (leave this empty)

# <RFC title>

Expand Down

0 comments on commit fc48789

Please sign in to comment.