Skip to content

Commit fc48789

Browse files
committed
Update the RFC templates and README to reflect RFC Process Updates
[rust-lang#300](https://github.com/emberjs/rfcs/blob/master/text/0300-rfc-process-update.md)
1 parent 8bfc473 commit fc48789

File tree

3 files changed

+113
-31
lines changed

3 files changed

+113
-31
lines changed

0000-template.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
- Start Date: (fill me in with today's date, YYYY-MM-DD)
2-
- RFC PR: (leave this empty)
3-
- Ember Issue: (leave this empty)
2+
- Relevant Team(s): (fill this in with the team(s) to which this RFC applies)
3+
- RFC PR: (after opening the RFC PR, update this with a link to it)
4+
- Tracking: (leave this empty)
45

56
# (RFC title goes here)
67

README.md

Lines changed: 107 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ implemented and reviewed via the normal GitHub pull request workflow.
55

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

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

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

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

50-
## What the process is
52+
## The process
5153

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

5759
* Fork the RFC repo http://github.com/emberjs/rfcs
58-
* Copy `0000-template.md` to `text/0000-my-feature.md` (where
60+
* Copy the appropriate template. For most RFCs, this is `0000-template.md`,
61+
for deprecation RFCs it is `deprecation-template.md`.
62+
Copy the template file to `text/0000-my-feature.md` (where
5963
'my-feature' is descriptive. don't assign an RFC number yet).
6064
* Fill in the RFC. Put care into the details: **RFCs that do not
6165
present convincing motivation, demonstrate understanding of the
6266
impact of the design, or are disingenuous about the drawbacks or
6367
alternatives tend to be poorly-received**.
68+
* Fill in the relevant core teams. Use the below table to map from projects to
69+
teams.
6470
* Submit a pull request. As a pull request the RFC will receive design
6571
feedback from the larger community, and the author should be prepared
6672
to revise it in response.
73+
* Find a champion on the relevant core team. The champion is responsible for
74+
shepherding the RFC through the RFC process and representing it in core team
75+
meetings.
76+
* Update the pull request to add the number of the PR to the filename and
77+
add a link to the PR in the header of the RFC.
6778
* Build consensus and integrate feedback. RFCs that have broad support
6879
are much more likely to make progress than those that don't receive any
6980
comments.
70-
* Eventually, the [core team] will decide whether the RFC is a candidate
81+
* Eventually, the [core teams] will decide whether the RFC is a candidate
7182
for inclusion in Ember.
7283
* RFCs that are candidates for inclusion in Ember will enter a "final comment
7384
period" lasting 7 days. The beginning of this period will be signaled with a
7485
comment and tag on the RFC's pull request. Furthermore,
7586
[Ember's official Twitter account](https://twitter.com/emberjs) will post a
7687
tweet about the RFC to attract the community's attention.
77-
* An RFC can be modified based upon feedback from the [core team] and community.
88+
* An RFC can be modified based upon feedback from the [core teams] and community.
7889
Significant modifications may trigger a new final comment period.
79-
* An RFC may be rejected by the [core team] after public discussion has settled
80-
and comments have been made summarizing the rationale for rejection. A member of
81-
the [core team] should then close the RFC's associated pull request.
90+
* An RFC may be rejected by the [core teams] after public discussion has settled
91+
and comments have been made summarizing the rationale for rejection. The RFC
92+
will enter a "final comment period to close" lasting 7 days. At the end of the
93+
"FCP to close" period, the PR will be closed.
8294
* An RFC may be accepted at the close of its final comment period. A [core team]
8395
member will merge the RFC's associated pull request, at which point the RFC will
8496
become 'active'.
8597

98+
### Relevant Teams
99+
100+
The RFC template requires indicating the relevant core teams. The following table
101+
offers a reference of teams responsible for each project. Please reach out for
102+
further guidance.
103+
104+
| Core Team | Project/Topics |
105+
|---------------|--------------------------------------------------------------|
106+
| Ember.js | Ember.js |
107+
| Ember Data | Ember Data |
108+
| Ember CLI | Ember CLI |
109+
| Learning | Documentation, Website, learning experiences |
110+
| Steering | Governance |
111+
112+
### Finding a champion
113+
114+
The RFC Process requires finding a champion from the relevant core teams. The
115+
champion is responsible for representing the RFC in team meetings, and for
116+
shepherding its progress. [Read more about the Champion's job](#champion-responsibilities)
117+
118+
- Discord
119+
The `dev-rfc` channel on the [Ember Discord](https://discord.gg/emberjs) is
120+
reserved for the discussion of RFCs.
121+
We highly recommend circulating early drafts of your RFC in this channel to both
122+
receive early feedback and to find a champion.
123+
124+
- Request on an issue in the RFC repo or on the RFC
125+
We monitor the RFC repository. We will circulate requests for champions but highly
126+
recommend discussing the RFC in Discord.
127+
86128
## The RFC life-cycle
87129

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

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

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

116-
## Reviewing RFC's
117-
118-
Each week the [core team] will attempt to review some set of open RFC
119-
pull requests.
120-
121-
We try to make sure that any RFC that we accept is accepted at the
122-
Friday team meeting, and reported in [core team notes]. Every
123-
accepted feature should have a core team champion, who will represent
124-
the feature and its progress.
158+
## For Core Team Members
159+
160+
### Reviewing RFC's
161+
162+
Each core team is responsible for reviewing open RFCs. If an RFC
163+
requires work from their team, ensuring that the RFC reflects that.
164+
As it is with the wider community, the RFC process is the time for
165+
teams and team members to push back on, encourage, refine, or otherwise comment
166+
on proposals.
167+
168+
### Champion Responsibilities
169+
170+
* achieving consensus from the team(s) to move the RFC through the stages of
171+
the RFC process.
172+
* ensuring the RFC follows the RFC process.
173+
* shepherding the planning and implementation of the RFC. Before the RFC is
174+
accepted, the champion may remove themselves. The champion may find a replacement
175+
champion at any time.
176+
177+
### Helpful checklists for Champions
178+
179+
#### Becoming champion of an RFC
180+
- [ ] Assign the RFC to yourself
181+
182+
#### Moving to FCP to Merge
183+
- [ ] Achieve consensus to move to "FCP to Merge" from relevant core teams
184+
- [ ] Comment in the RFC to address any outstanding issues and to proclaim the
185+
start of the FCP period
186+
- [ ] Tweet from `emberjs` about the FCP
187+
- [ ] Ensure the RFC has had the filename and header updated with the PR number
188+
189+
#### Move to FCP to Close
190+
- [ ] Achieve consensus to move to "FCP to Close" from relevant core teams
191+
- [ ] Comment in the RFC to explain the decision
192+
193+
#### Closing an RFC
194+
- [ ] Comment about the end of the FCP period with no new info
195+
- [ ] Close the PR
196+
197+
#### Merging an RFC
198+
- [ ] Achieve consensus to merge from relevant core teams
199+
- [ ] Ensure the RFC has had the filename and header updated with the PR number
200+
- [ ] Create a tracking card for the RFC implementation at {projects}
201+
- [ ] Update the RFC with a link to the tracking
202+
- [ ] Merge
203+
- [ ] Ensure relevant teams plan out what is necessary to implement
204+
- [ ] Put relevant issues on the tracking
125205

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

deprecation-template.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
- Start Date: (fill me in with today's date, YYYY-MM-DD)
2-
- RFC PR: (leave this empty)
3-
- Ember Issue: (leave this empty)
2+
- Relevant Team(s): (fill this in with the team(s) to which this RFC applies)
3+
- RFC PR: (after opening the RFC PR, update this with a link to it)
4+
- Tracking: (leave this empty)
45

56
# <RFC title>
67

0 commit comments

Comments
 (0)