Skip to content

Commit 058541c

Browse files
authored
The prioritization process: documentation (#395)
* first early draft * Second draft of the document * Update TOC structure
1 parent 2e1c61c commit 058541c

File tree

3 files changed

+223
-0
lines changed

3 files changed

+223
-0
lines changed

src/SUMMARY.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
- [So you want to add a new option to rustc?](./compiler/new_option.md)
2121
- [Major Change Proposals](./compiler/mcp.md)
2222
- [Membership](./compiler/membership.md)
23+
- [Prioritization](./compiler/prioritization.md)
24+
- [Procedure](./compiler/prioritization/procedure.md)
2325
- [Notification groups](./compiler/notification-groups.md)
2426
- [Triage Meeting](./compiler/triage-meeting.md)
2527
- [Steering Meeting](./compiler/steering-meeting.md)

src/compiler/prioritization.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Prioritization
2+
3+
This section documents the processes of the prioritization WG.
Lines changed: 218 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,218 @@
1+
# Prioritization WG - Procedure
2+
3+
This document details the procedure the WG-prioritization follows to fill the agenda for the weekly meeting of `T-compiler`.
4+
The working group focuses mainly on triaging `T-compiler` and `libs-impl` bugs, deciding if bugs are critical (potential release blockers) or not and building the agenda for the most important things `T-compiler` needs to discuss.
5+
6+
## The procedure in detail
7+
8+
High level overview:
9+
10+
- [Follow ups from previous meeting](#Follow-ups-from-previous-meeting)
11+
- Remove `I-nominated` tags of already discussed issues
12+
- Notify @pnkfelix about not properly tagged stable/beta-nominated issues
13+
- Create the next meeting agenda using the weekly agenda template
14+
- [Prepare agenda content](#Prepare-agenda-content)
15+
- Add `T-compiler` and `libs-impl` to unlabelled T-compiler and libs-impl issues
16+
- Assign priority to unprioritized issues with "I-prioritize" label
17+
- Assign priority to regressions without a `P-*` label
18+
- Summarize stable/beta nominations
19+
- Summarize PR's waiting on team
20+
- Summarize `P-critical` and unassigned `P-high` regressions
21+
- Summarize I-nominated issues
22+
- Process MCPs/FCPs
23+
- [Generate Agenda](#Generate-Agenda)
24+
- Run cli to generate agenda
25+
- Fill agenda announcements
26+
- Add performance logs
27+
- [Notify the team about the meeting](#Notify-the-team-about-the-meeting)
28+
- Figure out which WGs need to check-in
29+
- Notify @T-compiler/meeting about the meeting on Zulip
30+
- [Final reviews](#Final-reviews)
31+
- Check toolstate
32+
- Check performance stats
33+
- Nominate issues
34+
- Re-sync and check the agenda right before the meeting
35+
36+
## General review process
37+
38+
- Check the status of the issue
39+
- Try moving it forward if possible (ex. stimulate further comments from the issue author or a reviewer)
40+
- Ask for more info if it's needed
41+
- Is there an MCVE for the issue already?
42+
- Check if it's a regression and label it accordingly (`regression-*` labels)
43+
- Figure out the area the issue belongs and label it accordingly (`A-*` labels)
44+
- [Ping notify groups](https://rustc-dev-guide.rust-lang.org/notification-groups/about.html) or relevant teams
45+
- Assign if possible
46+
- Nominate the issue if it needs to be discussed
47+
48+
## Follow ups from previous meeting
49+
50+
- Remove `I-nominated` tags of already discussed issues
51+
- Notify @pnkfelix about accepted `beta-nominated` and `stable-nominated` without `beta-accepted` and `stable-accepted` label
52+
- Notify @pnkfelix about rejected `beta-nominated` and `stable-nominated` still with the nominated label
53+
- Create an empty agenda using our template, as soon as our Thursday's weekly meeting ends
54+
55+
## Prepare agenda content
56+
57+
### Add `T-compiler` and `libs-impl` labels
58+
59+
Add `T-compiler` and `libs-impl` labels to corresponding issues that are missing these labels.
60+
61+
- [All unprioritized I-prioritize](https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+-label%3AP-critical+-label%3AP-high+-label%3AP-medium+-label%3AP-low+label%3AI-prioritize)
62+
- [All stable nominations](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Astable-nominated+-label%3Astable-accepted)
63+
- [All beta nominations](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Abeta-nominated+-label%3Abeta-accepted)
64+
- [All I-nominated](https://github.com/rust-lang/rust/labels/I-nominated)
65+
- [All PR's waiting on team](https://github.com/rust-lang/rust/labels/S-waiting-on-team)
66+
67+
### Assign priority to unprioritized issues with "I-prioritize" label
68+
69+
We need all `I-prioritize` issues for `T-compiler` and `libs-impl` to be actually prioritized. To do so, we add one of the `P-critical`, `P-high`, `P-medium` or `P-low` labels and remove `I-prioritize` and also add a text such as:
70+
71+
> Assigning `P-XXX` as [discussed as part of the Prioritization Working Group procedure](link_to_zulip_conversation) and removing `I-prioritize`.
72+
73+
The procedure here follows the [General review process](#General-review-process).
74+
75+
Note: triagebot automatically creates a topic and notify @*WG-prioritization* members once an issue is labelled with `I-prioritize`
76+
Note #2: These lists should typically be empty when we are close to the meeting.
77+
78+
### Assign priority to regressions without a P-label
79+
80+
We should not have unprioritized regressions and ideally regressions should have an assignee.
81+
82+
The procedure here follows the [General review process](#General-review-process).
83+
84+
Note: triagebot automatically adds `I-prioritize` to all regression issues and creates a topic and notify @*WG-prioritization* members requesting prioritization.
85+
86+
### Summarize stable/beta nominations
87+
88+
- Add them to the agenda explaining:
89+
- Why was it nominated
90+
- Who the assignee is
91+
- Add important details
92+
93+
Note: triagebot automatically creates a topic and notify @*WG-prioritization* members requesting addition to the agenda.
94+
95+
### Summarize PR's waiting on team
96+
97+
These are PRs waiting for some decision by our team (`T-compiler` or `libs-impl`).
98+
99+
The procedure here should try following the [General review process](#General-review-process).
100+
101+
We should:
102+
103+
- Add them to the agenda explaining:
104+
- What are they waiting for
105+
- Add important details
106+
- Explicitly nominate any issue that can be *quickly* resolved in a triage meeting.
107+
108+
Note: triagebot automatically creates a topic and notify @*WG-prioritization* members requesting addition to the agenda.
109+
110+
### Summarize `P-critical` and unassigned `P-high` regressions
111+
112+
The procedure here should try following the [General review process](#General-review-process).
113+
114+
We should:
115+
116+
- [Notify the appropriate groups](https://rustc-dev-guide.rust-lang.org/notification-groups/about.html)
117+
- Push them forward, if possible
118+
- Assign if possible; if the issue remains unassigned, it should be added to the agenda so we can assign it during the meeting
119+
120+
Note: triagebot automatically creates a topic and notify @*WG-prioritization* members requesting addition to the agenda.
121+
122+
### Summarize I-nominated issues
123+
124+
Issues labeled with `I-nominated` are important issues that we decide deserve discussion during the weekly meeting.
125+
126+
The procedure here should try following the [General review process](#General-review-process).
127+
128+
We should:
129+
130+
- Check if these issues were already discussed and in that case remove `I-nominated` label
131+
- Check if each issue is worth being discussed
132+
- Add them to the agenda explaining:
133+
- Why was it nominated
134+
- Who the assignee is
135+
- Is this an issue or a PR: if an issue, does it have a PR that fixes it?
136+
- Add important details
137+
138+
Note: triagebot automatically creates a topic and notify @*WG-prioritization* members requesting addition to the agenda.
139+
140+
### Accept MCPs
141+
142+
Accept all [MCPs that have been on `final-comment-period`](https://github.com/rust-lang/compiler-team/issues?q=is%3Aissue+is%3Aopen+label%3Amajor-change) for 10 or more days. Basically check that `final-comment-period` label was added more than 10 days ago.
143+
To accept, remove `final-comment-period`, add `major-change-accepted` and close the issue.
144+
145+
## Generate Agenda
146+
147+
### Run cli to generate agenda
148+
149+
Run triagebot's prioritization cli to generate the agenda.
150+
For that you need to clone https://github.com/rust-lang/triagebot if you haven't done so already.
151+
You need to export your `GITHUB_API_TOKEN` on Linux that's typically done by adding
152+
153+
`export GITHUB_API_TOKEN=<your key>`
154+
155+
to your `~/.profile` file.
156+
157+
And then run:
158+
159+
```
160+
$ cargo run --bin prioritization
161+
```
162+
163+
### Remove `to-announce` from MCPs/FCPs
164+
165+
As a quick reminder:
166+
167+
MCP = Major Change Proposal
168+
FCP = Final Comment Period
169+
170+
Remove all [`to-announce` MCPs](https://github.com/rust-lang/compiler-team/issues?q=is%3Aissue+is%3Aall+label%3Amajor-change+label%3Ato-announce) as they were already added in the agenda in their corresponding place.
171+
172+
FIXME: We need to add `to-announce` also to FCPs and here we would need to also remove the [FCPs `to-announce`](https://github.com/rust-lang/rust/issues?q=is%3Aissue+is%3Aall+label%3Afinished-final-comment-period+label%3Ato-announce)
173+
174+
### Fill agenda announcements
175+
176+
Check the compiler calendar to see if there's an outstanding event to announce and add it to the agenda.
177+
178+
### Add performance logs
179+
180+
- Add Triage Logs to the agenda
181+
- https://github.com/rust-lang/rustc-perf/tree/master/triage#triage-logs
182+
183+
## Notify the team about the meeting
184+
185+
Create `[weekly meeting] YYYY-MM-DD #54818` topic in `#t-compiler/meetings` Zulip's stream and send the following messages:
186+
187+
```text
188+
Hi @*T-compiler/meeting*; the triage meeting will be starting in ~ X hours Y minutes
189+
The @*WG-prioritization* have done pre-triage in #**t-compiler/wg-prioritization**
190+
@*WG-prioritization* have prepared the [meeting agenda](link_to_hackmd_agenda)
191+
We will have checkins from @*WG-X* and @*WG-Y*
192+
@**person1** do you have something you want to share about @*WG-X*?
193+
@**person2** do you have something you want to share about @*WG-Y*?
194+
```
195+
196+
Note: [Check which working groups' check-ins follow](https://rust-lang.github.io/compiler-team/about/triage-meeting/)
197+
198+
## Final reviews
199+
200+
### Check toolstate
201+
202+
Check [toolstate](https://rust-lang-nursery.github.io/rust-toolstate/) for tool breakage and notify teams in the corresponding channels.
203+
204+
### Check performance stats
205+
206+
Check [perf regressions](http://perf.rust-lang.org/index.html) and notify involved actors.
207+
208+
### Nominate P-high issues
209+
210+
Check how packed the agenda looks like and if there's room for more nominations.
211+
212+
- [Other team's P-critical](https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AP-critical+-label%3AT-compiler+-label%3Alibs-impl)
213+
- [T-compiler P-high](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+label%3AT-compiler+label%3AP-high+)
214+
- [libs-impl P-high](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+label%3Alibs-impl+label%3AP-high+)
215+
216+
### Re-sync and check the agenda right before the meeting
217+
218+
Re-run the script and re-synchronize contents of the agenda with new information.

0 commit comments

Comments
 (0)