@@ -5,7 +5,7 @@ implemented and reviewed via the normal GitHub pull request workflow.
5
5
6
6
Some changes though are "substantial", and we ask that these be put
7
7
through a bit of a design process and produce a consensus among the Ember
8
- core team .
8
+ core teams .
9
9
10
10
The "RFC" (request for comments) process is intended to provide a
11
11
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.
15
15
## When you need to follow this process
16
16
17
17
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.
21
22
22
23
- A new feature that creates new API surface area, and would
23
24
require a [ feature flag] if introduced.
@@ -45,51 +46,92 @@ It's often helpful to get feedback on your concept before diving into the
45
46
level of API design detail required for an RFC. ** You may open an
46
47
issue on this repo to start a high-level discussion** , with the goal of
47
48
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.
49
51
50
- ## What the process is
52
+ ## The process
51
53
52
54
In short, to get a major feature added to Ember, one must first get the
53
55
RFC merged into the RFC repo as a markdown file. At that point the RFC
54
56
is 'active' and may be implemented with the goal of eventual inclusion
55
57
into Ember.
56
58
57
59
* 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
59
63
'my-feature' is descriptive. don't assign an RFC number yet).
60
64
* Fill in the RFC. Put care into the details: ** RFCs that do not
61
65
present convincing motivation, demonstrate understanding of the
62
66
impact of the design, or are disingenuous about the drawbacks or
63
67
alternatives tend to be poorly-received** .
68
+ * Fill in the relevant core teams. Use the below table to map from projects to
69
+ teams.
64
70
* Submit a pull request. As a pull request the RFC will receive design
65
71
feedback from the larger community, and the author should be prepared
66
72
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.
67
78
* Build consensus and integrate feedback. RFCs that have broad support
68
79
are much more likely to make progress than those that don't receive any
69
80
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
71
82
for inclusion in Ember.
72
83
* RFCs that are candidates for inclusion in Ember will enter a "final comment
73
84
period" lasting 7 days. The beginning of this period will be signaled with a
74
85
comment and tag on the RFC's pull request. Furthermore,
75
86
[ Ember's official Twitter account] ( https://twitter.com/emberjs ) will post a
76
87
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.
78
89
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.
82
94
* An RFC may be accepted at the close of its final comment period. A [ core team]
83
95
member will merge the RFC's associated pull request, at which point the RFC will
84
96
become 'active'.
85
97
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
+
86
128
## The RFC life-cycle
87
129
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.
93
135
94
136
Furthermore, the fact that a given RFC has been accepted and is
95
137
'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
100
142
the feature; but the nature of the process means that we cannot expect
101
143
every merged RFC to actually reflect what the end result will be at
102
144
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,
104
146
tracking such changes via followup pull requests to the document.
105
147
106
148
## Implementing an RFC
@@ -113,15 +155,53 @@ If you are interested in working on the implementation for an 'active'
113
155
RFC, but cannot determine if someone else is already working on it,
114
156
feel free to ask (e.g. by leaving a comment on the associated issue).
115
157
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
125
205
126
206
** Ember's RFC process owes its inspiration to the [ Rust RFC process] **
127
207
0 commit comments