@@ -14,10 +14,9 @@ Rust's roadmap will be established in year-long cycles, where we identify up
14
14
front - together, as a project - the most critical problems facing the language
15
15
and its ecosystem, along with the story we want to be able to tell the world
16
16
about Rust. Work toward solving those problems, our short-term goals, will be
17
- decided in quarter-long cycles by individual teams. For the purposes of
18
- reporting the project roadmap, goals will be assigned to quarterly milestones,
19
- and where these goals result in stable features the Rust version in which they
20
- become stable will be estimated as well.
17
+ decided by the individual teams, as they see fit, and regularly re-triaged. For
18
+ the purposes of reporting the project roadmap, goals will be assigned to release
19
+ cycle milestones.
21
20
22
21
At the end of the year we will deliver a public facing retrospective, describing
23
22
the goals we achieved and how to use the new features in detail. It will
@@ -115,12 +114,12 @@ the way we work today.
115
114
116
115
Rust's roadmap will be established in year-long cycles, where we identify up
117
116
front the most critical problems facing the project, formulated as _ problem
118
- statements_ . Work toward solving those problems, _ goals_ , will be planned in
119
- quarter-long cycles by individual teams. For the purposes of reporting the
120
- project roadmap, goals will be assigned to _ quarterly milestones_ , and where
121
- these goals result in stable features the Rust version in which they become
122
- stable will be estimated as well. Along the way, teams will be expected to
123
- maintain _ tracking issues _ that communicate progress toward the project's goals.
117
+ statements_ . Work toward solving those problems, _ goals_ , will be planned as
118
+ part of the release cycles by individual teams. For the purposes of reporting
119
+ the project roadmap, goals will be assigned to _ release cycle milestones_ , which
120
+ represent the primary work performed each release cycle. Along the way, teams
121
+ will be expected to maintain _ tracking issues _ that communicate progress toward
122
+ the project's goals.
124
123
125
124
At the end of the year we will deliver a public facing retrospective, which is
126
125
intended as a 'rallying point'. Its primary purposes are to create anticipation
@@ -156,20 +155,25 @@ Key terminology used in this RFC:
156
155
celebrating those who contribute to achieving the project's goals and
157
156
resolving it's problems.
158
157
159
- - _ quarterly milestone_ - All goals have estimates for completion, placed on
160
- quarterly milestones. Each quarter that a goal remains incomplete it must be
161
- re-triaged and re-estimated by the responsible team.
162
-
163
- ## The big planning cycle (problem statements and the north star RFC)
164
-
165
- The big cycle spans one year. At the beginning of the cycle we identify areas of
166
- Rust that need the most improvement, and at the end of the cycle is a 'rallying
167
- point' where we deliver to the world the results of our efforts. We choose
168
- year-long cycles because a year is enough time to accomplish relatively large
169
- goals; and because having the rallying point occur at the same time every year
170
- makes it easy to know when to anticipate big news from the project. Being
171
- calendar-based avoids the temptation to slip or produce feature-based releases,
172
- instead providing a fixed point of accountability for shipping.
158
+ - _ release cycle milestone_ - All goals have estimates for completion, placed on
159
+ milestones that correspond to the 6 week release cycle. These milestones are
160
+ timed to corrspond to a release cycle, but don't represent a specific
161
+ release. That is, work toward the current nightly, the current beta, or even
162
+ that doesn't directly impact a specific release, all goes into the release
163
+ cycle milestone corresponding to the time period in which the work is
164
+ completed.
165
+
166
+ ## Problem statements and the north star RFC
167
+
168
+ The full planning cycle spans one year. At the beginning of the cycle we
169
+ identify areas of Rust that need the most improvement, and at the end of the
170
+ cycle is a 'rallying point' where we deliver to the world the results of our
171
+ efforts. We choose year-long cycles because a year is enough time to accomplish
172
+ relatively large goals; and because having the rallying point occur at the same
173
+ time every year makes it easy to know when to anticipate big news from the
174
+ project. Being calendar-based avoids the temptation to slip or produce
175
+ feature-based releases, instead providing a fixed point of accountability for
176
+ shipping.
173
177
174
178
This planning effort is _ problem-oriented_ . Focusing on "how" may seem like an
175
179
obvious thing to do, but in practice it's very easy to become enamored of
@@ -234,45 +238,63 @@ the rust-lang/rust issue tracker and tagged `R-problem-statement`. In the OP of
234
238
each metabug the teams are responsible for maintaining a list of their goals,
235
239
linking to tracking issues.
236
240
237
- ## The little planning cycle (goals and tracking progress)
238
-
239
- The little cycle is where the solutions take shape and are carried out. They
240
- last one quarter - 3 months - and are the responsibility of individual teams.
241
-
242
- Each cycle the teams will have one week to update their set of _ goals_ . This
243
- includes both creating new goals and reviewing and revising existing goals. A
244
- goal describes a task that contributes to solving the year's problems. It may or
245
- may not involve a concrete deliverable, and it may be in turn subdivided into
246
- further goals.
247
-
248
- The social process of the quarterly planning cycle is less strict, but it
249
- should be conducted in a way that allows open feedback. It is suggested that
250
- teams present their quarterly plan on internals.rust-lang.org at the beginning
251
- of the week, solicit feedback, then finalize them at the end of the week.
252
-
253
- All goals have estimated completion dates. There is no limit on the duration of
254
- a single goal, but they are encouraged to be scoped to less than a quarter year
255
- of work. Goals that are expected to take more than a quarter _ must_ be
256
- subdivided into smaller goals of less than a quarter, each with their own
257
- estimates. These estimates are used to place goals onto quarterly milestones.
258
-
259
- Not all the work items done by teams in a quarter should be considered a goal
260
- nor should they be. Goals only need to be granular enough to demonstrate
261
- consistent progress toward solving the project's problems. Work that
262
- contributes toward quarterly goals should still be tracked as sub-tasks of
263
- those goals, but only needs to be filed on the issue tracker and not reported
264
- directly as goals on the roadmap.
241
+ Like other RFCs, the north star RFC is not immutable, and if new motivations
242
+ arise during the year, it may be amended, even to the extent of adding
243
+ additional problem statements; though it is not appropriate for the project
244
+ to continually rehash the RFC.
245
+
246
+ ## Goal setting and tracking progress
247
+
248
+ During the regular 6-week release cycles is where the solutions take shape and
249
+ are carried out. Each cycle teams are expected to set concrete _ goals_ that work
250
+ toward solving the project's stated problems; and to review and revise their
251
+ previous goals. The exact forum and mechanism for doing this evaluation and
252
+ goal-setting is left to the individual teams, and to future experimentation,
253
+ but the end result is that each release cycle each team will document their
254
+ goals and progress in a standard format.
255
+
256
+ A goal describes a task that contributes to solving the year's problems. It may
257
+ or may not involve a concrete deliverable, and it may be in turn subdivided into
258
+ further goals. Not all the work items done by teams in a quarter should be
259
+ considered a goal. Goals only need to be granular enough to demonstrate
260
+ consistent progress toward solving the project's problems. Work that contributes
261
+ toward quarterly goals should still be tracked as sub-tasks of those goals, but
262
+ only needs to be filed on the issue tracker and not reported directly as goals
263
+ on the roadmap.
265
264
266
265
For each goal the teams will create an issue on the issue tracker tagged with
267
266
` R-goal ` . Each goal must be described in a single sentence summary with an
268
267
end-result or deliverable that is as crisply stated as possible. Goals with
269
268
sub-goals and sub-tasks must list them in the OP in a standard format.
270
269
271
- During each planning period all goals must be triaged and updated for the
272
- following information:
270
+ During each cycle all ` R-goal ` and ` R-unstable ` issues assigned to each team
271
+ must be triaged and updated for the following information:
273
272
274
273
- The set of sub-goals and sub-tasks and their status
275
- - The estimated date of completion
274
+ - The release cycle milestone
275
+
276
+ Goals that will be likely completed in this cycle or the next should be assigned
277
+ to the appropriate milestone. Some goals may be expected to be completed in
278
+ the distant future, and these do not need to be assigned a milestone.
279
+
280
+ The release cycle milestone corresponds to a six week period of time and
281
+ contains the work done during that time. It does not correspend to a specific
282
+ release, nor do the goals assigned to it need to result in a stable feature
283
+ landing in any specific release.
284
+
285
+ Release cycle milestones serve multiple purposes, not just tracking of the goals
286
+ defined in this RFC: ` R-goal ` tracking, tracking of stabilization of
287
+ ` R-unstable ` and ` R-RFC-approved ` features, tracking of critical bug fixes.
288
+
289
+ Though the release cycle milestones are time-oriented and are not strictly tied
290
+ to a single upcoming release, from the set of assigned ` R-unstable ` issues one
291
+ can derive the new features landing in upcoming releases.
292
+
293
+ During the last week of every release cycle each team will write a brief
294
+ report summarizing their goal progress for the cycle. Some project member
295
+ will compile all the team reports and post them to internals.rust-lang.org.
296
+ In addition to providing visibility into progress, these will be sources
297
+ to draw from for the subsequent release announcements.
276
298
277
299
## The retrospective (rallying point)
278
300
@@ -303,21 +325,6 @@ Since the retrospective must be a high-quality document, and cover a lot of
303
325
material, it is expected to require significant planning, editing and revision.
304
326
The details of how this will work are to be determined.
305
327
306
- ## Release estimation
307
-
308
- The teams are responsible for estimating only the _ timeframe_ in which they
309
- complete their work, but possibly the single most important piece of information
310
- desired by users is to know _ in what release_ any given feature will become
311
- available.
312
-
313
- To reduce process burden on team members we will not require them to make that
314
- estimate themselves; the teams will work purely in terms of quarterly
315
- milestones. Instead, we will have a separate process to map the goals and time
316
- estimates into release estimates for individual features - a process that is
317
- likely automatable.
318
-
319
- The precise mechanics are to be determined.
320
-
321
328
## Presenting the roadmap
322
329
323
330
As a result of this process the Rust roadmap for the year is encoded in three
0 commit comments