Skip to content

Commit 7355498

Browse files
committed
Update north star RFC
- Use 6-week cycles - Don't require time estimates - Do require release cycle milestone estimates - Add language about amending the north star RFC - Require 6-week status reports from teams
1 parent 2832657 commit 7355498

File tree

1 file changed

+77
-70
lines changed

1 file changed

+77
-70
lines changed

text/0000-north-star.md

Lines changed: 77 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,9 @@ Rust's roadmap will be established in year-long cycles, where we identify up
1414
front - together, as a project - the most critical problems facing the language
1515
and its ecosystem, along with the story we want to be able to tell the world
1616
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.
2120

2221
At the end of the year we will deliver a public facing retrospective, describing
2322
the goals we achieved and how to use the new features in detail. It will
@@ -115,12 +114,12 @@ the way we work today.
115114

116115
Rust's roadmap will be established in year-long cycles, where we identify up
117116
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.
124123

125124
At the end of the year we will deliver a public facing retrospective, which is
126125
intended as a 'rallying point'. Its primary purposes are to create anticipation
@@ -156,20 +155,25 @@ Key terminology used in this RFC:
156155
celebrating those who contribute to achieving the project's goals and
157156
resolving it's problems.
158157

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.
173177

174178
This planning effort is _problem-oriented_. Focusing on "how" may seem like an
175179
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
234238
each metabug the teams are responsible for maintaining a list of their goals,
235239
linking to tracking issues.
236240

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.
265264

266265
For each goal the teams will create an issue on the issue tracker tagged with
267266
`R-goal`. Each goal must be described in a single sentence summary with an
268267
end-result or deliverable that is as crisply stated as possible. Goals with
269268
sub-goals and sub-tasks must list them in the OP in a standard format.
270269

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:
273272

274273
- 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.
276298

277299
## The retrospective (rallying point)
278300

@@ -303,21 +325,6 @@ Since the retrospective must be a high-quality document, and cover a lot of
303325
material, it is expected to require significant planning, editing and revision.
304326
The details of how this will work are to be determined.
305327

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-
321328
## Presenting the roadmap
322329

323330
As a result of this process the Rust roadmap for the year is encoded in three

0 commit comments

Comments
 (0)