@@ -58,16 +58,92 @@ comments.
58
58
merging the pull request and assigning the RFC a number, at which point
59
59
the RFC is 'active', or reject it by closing the pull request.
60
60
61
+ ## The RFC life-cycle
62
+
61
63
Once an RFC becomes active then authors may implement it and submit the
62
64
feature as a pull request to the Rust repo. An 'active' is not a rubber
63
65
stamp, and in particular still does not mean the feature will ultimately
64
66
be merged; it does mean that in principle all the major stakeholders
65
67
have agreed to the feature and are amenable to merging it.
66
68
67
- Modifications to active RFC's can be done in followup PR's. An RFC that
68
- makes it through the entire process to implementation is considered
69
- 'complete' and is moved to the 'complete' folder; an RFC that fails
70
- after becoming active is 'inactive' and moves to the 'inactive' folder.
69
+ Furthermore, the fact that a given RFC has been accepted and is
70
+ 'active' implies nothing about what priority is assigned to its
71
+ implementation, nor does it imply anything about whether a Rust
72
+ developer has been assigned the task of implementing the feature.
73
+
74
+ Modifications to active RFC's can be done in followup PR's. We strive
75
+ to write each RFC in a manner that it will reflect the final design of
76
+ the feature; but the nature of the process means that we cannot expect
77
+ every merged RFC to actually reflect what the end result will be at
78
+ the time of the next major release; therefore we try to keep each RFC
79
+ document somewhat in sync with the language feature as planned,
80
+ tracking such changes via followup pull requests to the document.
81
+
82
+ An RFC that makes it through the entire process to implementation is
83
+ considered 'complete' and is moved to the 'complete' folder; an RFC
84
+ that fails after becoming active is 'inactive' and moves to the
85
+ 'inactive' folder.
86
+
87
+ ## Implementing an RFC
88
+
89
+ Some accepted RFC's represent vital features that need to be
90
+ implemented right away. Other accepted RFC's can represent features
91
+ that can wait until some arbitrary developer feels like doing the
92
+ work. Every accepted RFC has an associated issue tracking its
93
+ implementation in the Rust repository; thus that associated issue can
94
+ be assigned a priority via the [ triage process] that the team uses for
95
+ all issues in the Rust repository.
96
+
97
+ The author of an RFC is not obligated to implement it. Of course, the
98
+ RFC author (like any other developer) is welcome to post an
99
+ implementation for review after the RFC has been accepted.
100
+
101
+ If you are interested in working on the implementation for an 'active'
102
+ RFC, but cannot determine if someone else is already working on it,
103
+ feel free to ask (e.g. by leaving a comment on the associated issue).
104
+
105
+ ## Reviewing RFC's
106
+
107
+ Each week the [ core team] will attempt to review some set of open RFC
108
+ pull requests. The choice of pull requests to review is largely
109
+ driven by an informal estimate of whether its associated comment
110
+ thread has reached a steady state (i.e. either died out, or not
111
+ showing any sign of providing feedback improvements to the RFC
112
+ itself). The list of RFC's up for review is posted a week ahead of
113
+ time via standard notification channels (currently the 'rust-dev'
114
+ mailing list as well as the http://discuss.rust-lang.org/ discourse
115
+ site).
116
+
117
+ We try to make sure that any RFC that we accept is accepted at the
118
+ Tuesday team meeting, with a formal record of discussion regarding
119
+ acceptance. We do not accept RFC’s at the Thursday triage meeting.
120
+ We may reject RFC’s at either meeting; in other words, the only RFC
121
+ activity on Thursdays is closing the ones that have reached a steady
122
+ state and that the team agrees we will not be adopting.
123
+
124
+ At both meetings, we try to only consider RFC’s for which at least a
125
+ few participants have read the corresponding discussion thread and are
126
+ prepared to represent the viewpoints presented there. One participant
127
+ should act as a "champion" for the feature. The "champion" need not
128
+ * personally* desire the feature; they just need to act to represent
129
+ its virtues and the community’s desire for it.
130
+
131
+ ## RFC Postponement
132
+
133
+ Some RFC pull requests are tagged with the 'postponed' label when they
134
+ are closed (as part of the rejection process). An RFC closed with
135
+ “postponed” is marked as such because we want neither to think about
136
+ evaluating the proposal nor about implementing the described feature
137
+ until after the next major release, and we believe that we can afford
138
+ to wait until then to do so.
139
+
140
+ Usually an RFC pull request marked as “postponed” has already passed
141
+ an informal first round of evaluation, namely the round of “do we
142
+ think we would ever possibly consider making this change, as outlined
143
+ in the RFC pull request, or some semi-obvious variation of it.” (When
144
+ the answer to the latter question is “no”, then the appropriate
145
+ response is to close the RFC, not postpone it.)
146
+
71
147
72
148
### Help this is all too informal!
73
149
@@ -77,3 +153,4 @@ driven by consensus and community norms, not impose more structure than
77
153
necessary.
78
154
79
155
[ core team ] : https://github.com/mozilla/rust/wiki/Note-core-team
156
+ [ triage process ] : https://github.com/rust-lang/rust/wiki/Note-development-policy#milestone-and-priority-nomination-and-triage
0 commit comments