Skip to content

Commit 71ec5ee

Browse files
committed
Auto merge of #12003 - ehuss:contrib-labelling, r=weihanglo
Update contributor guide with new issue labels. This updates the contributor guide with the new labels discussed in #11788, and expands on some of the meanings and process changes related to that.
2 parents 738c699 + 4bc8581 commit 71ec5ee

File tree

4 files changed

+222
-74
lines changed

4 files changed

+222
-74
lines changed

src/doc/contrib/src/index.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ overview of how to contribute to Cargo, how to dive into the code, and how the
55
testing infrastructure works.
66

77
There are many ways to contribute, such as [helping other users], [filing
8-
issues], [improving the documentation], [fixing bugs], and working on [small]
9-
and [large features].
8+
issues], [improving the documentation], [triaging issues], [fixing bugs], and
9+
working on [small] and [large features].
1010

1111
If you have a general question about Cargo or its internals, feel free to ask
1212
on [Zulip].
@@ -24,6 +24,7 @@ Please also read the [Rust Code of Conduct].
2424
[rustup]: https://rust-lang.github.io/rustup/
2525
[git]: https://git-scm.com/
2626
[improving the documentation]: https://github.com/rust-lang/cargo/tree/master/src/doc
27-
[fixing bugs]: process/index.md#working-on-small-bugs
27+
[fixing bugs]: process/index.md#working-on-issues
2828
[small]: process/index.md#working-on-small-features
2929
[large features]: process/index.md#working-on-large-features
30+
[triaging issues]: issues.md#triaging-issues

src/doc/contrib/src/issues.md

Lines changed: 170 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -57,53 +57,184 @@ necessary.
5757
## Issue labels
5858

5959
[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.
6361

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

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+
```
7367

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

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;">&#x2003;</span>&nbsp;Yellow | The **area** of the project an issue relates to. |
91+
| [beta-] | <span class="label-color" style="background-color:#1e76d9;">&#x2003;</span>&nbsp;Dark Blue | Tracks changes which need to be [backported to beta][beta-backport] |
92+
| [C-] | <span class="label-color" style="background-color:#f5f1fd;">&#x2003;</span>&nbsp;Light Purple | The **category** of an issue. |
93+
| [Command-] | <span class="label-color" style="background-color:#5319e7;">&#x2003;</span>&nbsp;Dark Purple | The `cargo` command it is related to. |
94+
| [E-] | <span class="label-color" style="background-color:#02e10c;">&#x2003;</span>&nbsp;Green | The **experience** level necessary to fix an issue. |
95+
| [I-] | <span class="label-color" style="background-color:#fc2929;">&#x2003;</span>&nbsp;Red | The **importance** of the issue. |
96+
| [O-] | <span class="label-color" style="background-color:#7e7ec8;">&#x2003;</span>&nbsp;Purple Grey | The **operating system** or platform that the issue is specific to. |
97+
| [P-] | <span class="label-color" style="background-color:#eb6420;">&#x2003;</span>&nbsp;Orange | The issue **priority**. |
98+
| [regression-] | <span class="label-color" style="background-color:#e4008a;">&#x2003;</span>&nbsp;Pink | Tracks regressions from a stable release. |
99+
| [relnotes] | <span class="label-color" style="background-color:#fad8c7;">&#x2003;</span>&nbsp;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;">&#x2003;</span>&nbsp;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
82119

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
86121

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

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

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

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

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).
99218

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

src/doc/contrib/src/process/index.md

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -38,44 +38,40 @@ The [RFC Project Board] is used for tracking [RFCs].
3838
[RFC Project Board]: https://github.com/rust-lang/cargo/projects/2
3939
[RFCs]: https://github.com/rust-lang/rfcs/
4040

41-
## Working on small bugs
41+
## Working on issues
4242

43-
Issues labeled with the [E-help-wanted], [E-easy], or [E-mentor] [labels] are
44-
typically issues that the Cargo team wants to see addressed, and are
45-
relatively easy to get started with. If you are interested in one of those,
46-
and it has not already been assigned to someone, leave a comment. See [Issue
43+
Issues labeled with the [S-accepted] [label] are typically issues that the
44+
Cargo team wants to see addressed. If you are interested in one of those, and
45+
it has not already been assigned to someone, leave a comment. See [Issue
4746
assignment](#issue-assignment) below for assigning yourself.
4847

49-
If there is a specific issue that you are interested in, but it doesn't have
50-
one of the `E-` labels, leave a comment on the issue. If a Cargo team member
51-
has the time to help out, they will respond to help with the next steps.
48+
When possible, the Cargo team will try to also include [E-easy], [E-medium],
49+
or [E-hard] labels to try to give an estimate of the difficulty involved with
50+
the issue.
5251

53-
[E-help-wanted]: https://github.com/rust-lang/cargo/labels/E-help-wanted
54-
[E-easy]: https://github.com/rust-lang/cargo/labels/E-easy
55-
[E-mentor]: https://github.com/rust-lang/cargo/labels/E-mentor
56-
[labels]: ../issues.md#issue-labels
57-
58-
## Working on large bugs
59-
60-
Some issues may be difficult to fix. They may require significant code
61-
changes, or major design decisions. The [E-medium] and [E-hard] [labels] can
62-
be used to tag such issues. These will typically involve some discussion with
63-
the Cargo team on how to tackle it.
52+
If there is a specific issue that you are interested in, but it is not marked
53+
as [S-accepted], leave a comment on the issue. If a Cargo team member has the
54+
time to help out, they will respond to help with the next steps.
6455

56+
[E-easy]: https://github.com/rust-lang/cargo/labels/E-easy
6557
[E-medium]: https://github.com/rust-lang/cargo/labels/E-medium
6658
[E-hard]: https://github.com/rust-lang/cargo/labels/E-hard
59+
[S-accepted]: https://github.com/rust-lang/cargo/labels/S-accepted
60+
[label]: ../issues.md#issue-labels
6761

6862
## Working on small features
6963

7064
Small feature requests are typically managed on the [issue
7165
tracker][issue-feature-request]. Features that the Cargo team have approved
72-
will have the [Feature accepted] label or the [E-mentor] label. If there is a
73-
feature request that you are interested in, feel free to leave a comment
74-
expressing your interest. If a Cargo team member has the time to help out,
75-
they will respond to help with the next steps. Keep in mind that the Cargo
76-
team has limited time, and may not be able to help with every feature request.
77-
Most of them require some design work, which can be difficult. Check out the
78-
[design principles chapter] for some guidance.
66+
will have the [S-accepted] label.
67+
68+
If there is a feature request that you are interested in, but it is not marked
69+
as [S-accepted], feel free to leave a comment expressing your interest. If a
70+
Cargo team member has the time to help out, they will respond to help with the
71+
next steps. Keep in mind that the Cargo team has limited time, and may not be
72+
able to help with every feature request. Most of them require some design
73+
work, which can be difficult. Check out the [design principles chapter] for
74+
some guidance.
7975

8076
## Working on large features
8177

@@ -114,11 +110,11 @@ The Cargo project uses several bots:
114110

115111
## Issue assignment
116112

117-
Normally, if you plan to work on an issue that has been marked with one of the
118-
`E-` tags or [Feature accepted], it is sufficient just to leave a comment that
119-
you are working on it. We also have a bot that allows you to formally "claim"
120-
an issue by entering the text `@rustbot claim` in a comment. See the
121-
[Assignment] docs on how this works.
113+
Normally, if you plan to work on an issue that has been marked with the
114+
[S-accepted] label, it is sufficient just to leave a comment that you are
115+
working on it. We also have a bot that allows you to formally claim an issue
116+
by entering the text `@rustbot claim` in a comment. See the [Assignment] docs
117+
on how this works.
122118

123119

124120
[Assignment]: https://github.com/rust-lang/triagebot/wiki/Assignment

src/doc/contrib/src/process/unstable.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,30 @@ typically created when a PR is close to being merged, or soon after it is
3333
merged. Use the [tracking issue template] when creating a tracking issue.
3434

3535
Larger features should also get a new label in the issue tracker so that when
36-
issues are filed, they can be easily tied together.
36+
issues are filed, they can be easily tied together. Typically this would be
37+
one of the `Z-` prefixed labels for nightly features.
38+
39+
When opening a tracking issue, be sure to also add an `S-` status label to
40+
indicate what needs to happen for it to move forward:
41+
42+
* [S-needs-mentor] --- The feature isn't yet implemented, and needs a Cargo
43+
team member to commit to helping guide and review the implementation.
44+
* [S-accepted] --- The feature isn't yet implemented, and has a Cargo team
45+
member willing to help review the implementation.
46+
* [S-waiting-on-feedback] --- After the feature has been implemented, this
47+
label indicates that it is waiting on community feedback for bugs or design
48+
concerns.
49+
50+
Tracking issues may have multiple status labels if necessary, for example if
51+
something is only partially implemented, it may have both
52+
[S-waiting-on-feedback] (for what is implemented) and [S-needs-mentor] or
53+
[S-accepted] to finish the rest of the work.
3754

3855
[tracking issue]: https://github.com/rust-lang/cargo/labels/C-tracking-issue
3956
[tracking issue template]: https://github.com/rust-lang/cargo/issues/new?labels=C-tracking-issue&template=tracking_issue.md
57+
[S-needs-mentor]: https://github.com/rust-lang/cargo/labels/S-needs-mentor
58+
[S-accepted]: https://github.com/rust-lang/cargo/labels/S-accepted
59+
[S-waiting-on-feedback]: https://github.com/rust-lang/cargo/labels/S-waiting-on-feedback
4060

4161
## Pre-Stabilization
4262

0 commit comments

Comments
 (0)