@@ -57,53 +57,184 @@ necessary.
57
57
## Issue labels
58
58
59
59
[ Issue labels] are very helpful to identify the types of issues and which
60
- category they are related to. The Cargo team typically manages assigning
61
- labels. The labels use a naming convention with short prefixes and colors to
62
- indicate the kind of label:
60
+ category they are related to.
63
61
64
- * Yellow, ** A** -prefixed labels state which ** area** of the project an issue
65
- relates to.
62
+ Anyone can apply most labels by posting comments with a form such as:
66
63
67
- * Light purple, ** C** -prefixed labels represent the ** category** of an issue.
68
- In particular, ** [ C-feature-request] ** marks * proposals* for new features. If
69
- an issue is ** C-feature-request** , but is not ** [ Feature accepted] ** or
70
- ** [ I-nominated] ** , then it was not thoroughly discussed, and might need some
71
- additional design or perhaps should be implemented as an external subcommand
72
- first. Ping @rust-lang/cargo if you want to send a PR for such issue.
64
+ ``` text
65
+ @rustbot label: +A-doctests, -A-dependency-resolution
66
+ ```
73
67
74
- * Dark purple, ** Command ** -prefixed labels mean the issue has to do with a
75
- specific cargo command .
68
+ This example will add the [ ` A-doctests ` ] label and remove the
69
+ [ ` A-dependency-resolution ` ] label .
76
70
77
- * Green, ** E** -prefixed labels indicate the level of ** experience** or
78
- ** effort** necessary to fix the issue. ** [ E-mentor] ** issues also
79
- have some instructions on how to get started. Generally, all of the
80
- ** E** -prefixed labels are issues that are ready for someone to contribute
81
- to!
71
+ [ Issue labels ] : https://github.com/rust-lang/cargo/labels
72
+ [ `A-doctests` ] : https://github.com/rust-lang/cargo/labels/A-doctests
73
+ [ `A-dependency-resolution` ] : https://github.com/rust-lang/cargo/labels/A-dependency-resolution
74
+
75
+ The labels use a naming convention with short prefixes and colors to indicate
76
+ the kind of label:
77
+
78
+ <style >
79
+ .label-color {
80
+ border-radius :0.5em ;
81
+ }
82
+ table td :nth-child (2 ) {
83
+ white-space : nowrap ;
84
+ }
85
+
86
+ </style >
87
+
88
+ | Labels | Color | Description |
89
+ | --------| -------| -------------|
90
+ | [ A-] | <span class =" label-color " style =" background-color :#fbca04 ;" >  ; </span >  ; Yellow | The ** area** of the project an issue relates to. |
91
+ | [ beta-] | <span class =" label-color " style =" background-color :#1e76d9 ;" >  ; </span >  ; Dark Blue | Tracks changes which need to be [ backported to beta] [ beta-backport ] |
92
+ | [ C-] | <span class =" label-color " style =" background-color :#f5f1fd ;" >  ; </span >  ; Light Purple | The ** category** of an issue. |
93
+ | [ Command-] | <span class =" label-color " style =" background-color :#5319e7 ;" >  ; </span >  ; Dark Purple | The ` cargo ` command it is related to. |
94
+ | [ E-] | <span class =" label-color " style =" background-color :#02e10c ;" >  ; </span >  ; Green | The ** experience** level necessary to fix an issue. |
95
+ | [ I-] | <span class =" label-color " style =" background-color :#fc2929 ;" >  ; </span >  ; Red | The ** importance** of the issue. |
96
+ | [ O-] | <span class =" label-color " style =" background-color :#7e7ec8 ;" >  ; </span >  ; Purple Grey | The ** operating system** or platform that the issue is specific to. |
97
+ | [ P-] | <span class =" label-color " style =" background-color :#eb6420 ;" >  ; </span >  ; Orange | The issue ** priority** . |
98
+ | [ regression-] | <span class =" label-color " style =" background-color :#e4008a ;" >  ; </span >  ; Pink | Tracks regressions from a stable release. |
99
+ | [ relnotes] | <span class =" label-color " style =" background-color :#fad8c7 ;" >  ; </span >  ; Light Orange | Marks issues or PRs that should be highlighted in the [ Rust release notes] of the next release. |
100
+ | [ S-] | Varies | Tracks the ** status** of issues and pull requests (see [ Issue status labels] ( #issue-status-labels ) ) |
101
+ | [ Z-] | <span class =" label-color " style =" background-color :#453574 ;" >  ; </span >  ; Dark Blue | Unstable, [ nightly features] . |
102
+
103
+
104
+ [ A- ] : https://github.com/rust-lang/cargo/labels?q=A
105
+ [ beta- ] : https://github.com/rust-lang/cargo/labels?q=beta
106
+ [ beta-backport ] : https://forge.rust-lang.org/release/backporting.html#beta-backporting-in-rust-langcargo
107
+ [ C- ] : https://github.com/rust-lang/cargo/labels?q=C
108
+ [ Command- ] : https://github.com/rust-lang/cargo/labels?q=Command
109
+ [ E- ] : https://github.com/rust-lang/cargo/labels?q=E
110
+ [ I- ] : https://github.com/rust-lang/cargo/labels?q=I
111
+ [ nightly features ] : https://doc.rust-lang.org/nightly/cargo/reference/unstable.html
112
+ [ O- ] : https://github.com/rust-lang/cargo/labels?q=O
113
+ [ P- ] : https://github.com/rust-lang/cargo/labels?q=P
114
+ [ regression- ] : https://github.com/rust-lang/cargo/labels?q=regression
115
+ [ relnotes ] : https://github.com/rust-lang/cargo/issues?q=label%3Arelnotes
116
+ [ Rust release notes ] : https://github.com/rust-lang/rust/blob/master/RELEASES.md
117
+ [ S- ] : https://github.com/rust-lang/cargo/labels?q=S
118
+ [ Z- ] : https://github.com/rust-lang/cargo/labels?q=nightly
82
119
83
- * Red, ** I** -prefixed labels indicate the ** importance** of the issue. The
84
- ** [ I-nominated] ** label indicates that an issue has been nominated for
85
- prioritizing at the next triage meeting.
120
+ ### Issue status labels
86
121
87
- * Purple gray, ** O** -prefixed labels are the ** operating system** or platform
88
- that this issue is specific to.
122
+ The ` S- ` prefixed * status* labels are the primary mechanism we use to track
123
+ what is happening with an issue and what it is waiting on. The following is a
124
+ list of the status labels and what they mean. This is listed roughly in the
125
+ order that an issue might go through, though issues will often jump to
126
+ different steps, or in rare cases have multiple statuses.
89
127
90
- * Orange, ** P** -prefixed labels indicate a bug's ** priority** .
128
+ * ** [ S-triage] ** --- New issues get this label automatically assigned to them
129
+ to indicate that nobody has yet looked at them, and they need someone to
130
+ assign other labels and decide what the next step is.
91
131
92
- * ** S ** -prefixed labels are "status" labels, typically used for PRs, but can
93
- also indicate an issue is ** [ S-blocked ] ** .
132
+ * ** [ S-needs-info ] ** --- Needs more info, such as a reproduction or more
133
+ background for a feature request .
94
134
95
- * The light orange ** [ relnotes] ** label marks issues that should be highlighted
96
- in the [ Rust release notes] of the next release.
135
+ Anyone is welcome to help with providing additional info to help reproduce
136
+ or provide more detail on use cases and such. But usually this is a request
137
+ to the initial author.
97
138
98
- * Dark blue, ** Z** -prefixed labels are for unstable, [ nightly features] .
139
+ When adding this label, there should also usually be a comment that goes
140
+ along with it stating the information requested.
141
+
142
+ * ** [ S-needs-team-input] ** --- Needs input from team on whether/how to
143
+ proceed.
144
+
145
+ Here it is essentially blocked waiting for a team member to move it to the
146
+ next stage.
147
+
148
+ * ** [ S-needs-design] ** --- Needs someone to work further on the design for the
149
+ feature or fix.
150
+
151
+ Anyone is welcome to help at this stage, but it should be clear that it is
152
+ not yet accepted. It is expected that people should contribute comments and
153
+ ideas to the issue which furthers the process of fleshing out what is
154
+ needed, or alternate ideas. This may also require reaching out to the wider
155
+ community via forums and such.
156
+
157
+ * ** [ S-needs-rfc] ** --- Needs an [ RFC] before this can make more progress.
158
+
159
+ Anyone is welcome to help at this stage, but it should be clear that it is
160
+ not yet accepted. However, this should only be tagged for changes that are
161
+ somewhat likely to be accepted.
162
+
163
+ * ** [ S-needs-mentor] ** --- Needs a Cargo team member to commit to helping and
164
+ reviewing.
165
+
166
+ This is for something that is accepted, such as after an RFC or a team
167
+ discussion, or an obvious issue that just needs fixing, but no team member
168
+ is available to help or review.
169
+
170
+ * ** [ S-accepted] ** --- Issue or feature is accepted, and has a team member
171
+ available to help mentor or review.
172
+
173
+ * ** [ S-waiting-on-feedback] ** --- An implemented feature is waiting on
174
+ community feedback for bugs or design concerns.
175
+
176
+ This is typically used on a [ tracking issue] after it has been implemented
177
+ to indicate what it is waiting on.
178
+
179
+
180
+ [ S-triage ] : https://github.com/rust-lang/cargo/labels/S-triage
181
+ [ S-needs-info ] : https://github.com/rust-lang/cargo/labels/S-needs-info
182
+ [ S-needs-team-input ] : https://github.com/rust-lang/cargo/labels/S-needs-team-input
183
+ [ S-needs-design ] : https://github.com/rust-lang/cargo/labels/S-needs-design
184
+ [ S-needs-rfc ] : https://github.com/rust-lang/cargo/labels/S-needs-rfc
185
+ [ S-needs-mentor ] : https://github.com/rust-lang/cargo/labels/S-needs-mentor
186
+ [ S-accepted ] : https://github.com/rust-lang/cargo/labels/S-accepted
187
+ [ S-waiting-on-feedback ] : https://github.com/rust-lang/cargo/labels/S-waiting-on-feedback
188
+ [ RFC ] : https://github.com/rust-lang/rfcs/
189
+ [ tracking issue ] : https://github.com/rust-lang/cargo/labels/C-tracking-issue
190
+
191
+ ## Triaging issues
192
+
193
+ Triaging issues involves processing issues to assign appropriate labels, make
194
+ sure the issue has sufficient information, and to decide the next steps.
195
+ When new issues are filed, they should automatically get the [ S-triage] label
196
+ assuming the author uses one of the templates. This helps identify which
197
+ issues have not yet been triaged.
198
+
199
+ There are several things to consider when triaging an issue:
200
+
201
+ * Is this a duplicate? Search the issue tracker (including closed issues) to
202
+ see if there is something similar or identical to what is reported. If it is
203
+ obviously a duplicate, write a comment that it is a duplicate of the other
204
+ issue, and close the issue. If it isn't obvious that it is a duplicate,
205
+ leave a comment asking the author if the other issue covers what they reported.
206
+
207
+ * For a bug, check if the report contains enough information to reproduce it.
208
+ If you can't reproduce it, solicit more information from the author to
209
+ better understand the issue.
210
+ Change the label from [ S-triage] to [ S-needs-info] if this is the case.
211
+
212
+ * Add labels that describe what the issue is related to.
213
+
214
+ * Add the appropriate [ A-] , [ Command-] , [ O-] , and [ Z-] prefixed labels.
215
+ * If this is a regression from stable, add one of the [ regression-]
216
+ prefixed labels (depending on if it is a regression in an already
217
+ released stable release, or it is in nightly).
99
218
100
- [ Issue labels ] : https://github.com/rust-lang/cargo/labels
101
- [ E-easy ] : https://github.com/rust-lang/cargo/labels/E-easy
102
- [ E-mentor ] : https://github.com/rust-lang/cargo/labels/E-mentor
103
- [ I-nominated ] : https://github.com/rust-lang/cargo/labels/I-nominated
104
- [ C-feature-request ] : https://github.com/rust-lang/cargo/labels/C-feature-request
105
- [ Feature accepted ] : https://github.com/rust-lang/cargo/labels/Feature%20accepted
106
- [ S-blocked ] : https://github.com/rust-lang/cargo/labels/S-blocked
107
- [ Rust release notes ] : https://github.com/rust-lang/rust/blob/master/RELEASES.md
108
- [ nightly features ] : https://doc.rust-lang.org/nightly/cargo/reference/unstable.html
109
- [ relnotes ] : https://github.com/rust-lang/cargo/issues?q=label%3Arelnotes
219
+ * Assuming the issue looks valid, remove the [ S-triage] label and move it onto
220
+ a new status:
221
+
222
+ * [ S-needs-rfc] --- This is a large feature request that will require a
223
+ public design process.
224
+ * [ S-needs-design] --- The resolution of the issue or small feature request
225
+ will need more work to come up with the appropriate design.
226
+ * [ S-needs-team-input] --- The next steps are not clear, and the Cargo team
227
+ needs to discuss whether or not to proceed and what needs to be done to
228
+ address the issue.
229
+ * [ S-needs-mentor] --- This is something the Cargo team wants to address,
230
+ but does not currently have the capacity to help with reviewing.
231
+ * [ S-accepted] --- This is something that clearly needs to be addressed, and
232
+ a Cargo team member has volunteered to help review.
233
+
234
+ Anyone is welcome to help with the triaging process. You can help with
235
+ reproducing issues, checking for duplicates, gathering more information from
236
+ the reporter, assigning labels using [ ` @rustbot ` comments] ( #issue-labels ) , and
237
+ creating a test using [ Cargo's testsuite] ([ example] [ cargotest-example ] ).
238
+
239
+ [ Cargo's testsuite ] : tests/writing.md
240
+ [ cargotest-example ] : https://github.com/rust-lang/cargo/issues/11628#issuecomment-1411088951
0 commit comments