]> git.proxmox.com Git - rustc.git/blame - src/tools/cargo/src/doc/contrib/src/issues.md
New upstream version 1.76.0+dfsg1
[rustc.git] / src / tools / cargo / src / doc / contrib / src / issues.md
CommitLineData
0a29b90c
FG
1# Issue Tracker
2
3Cargo's issue tracker is located at
4<https://github.com/rust-lang/cargo/issues/>. This is the primary spot where
5we track bugs and small feature requests. See [Process] for more about our
6process for proposing changes.
7
8## Filing issues
9
10We can't fix what we don't know about, so please report problems liberally.
11This includes problems with understanding the documentation, unhelpful error
12messages, and unexpected behavior.
13
14**If you think that you have identified an issue with Cargo that might
15compromise its users' security, please do not open a public issue on GitHub.
16Instead, we ask you to refer to Rust's [security policy].**
17
18Opening an issue is as easy as following [this link][new-issues]. There are
19several templates for different issue kinds, but if none of them fit your
20issue, don't hesitate to modify one of the templates, or click the [Open a
21blank issue] link.
22
23The Rust tools are spread across multiple repositories in the Rust
24organization. It may not always be clear where to file an issue. No worries!
25If you file in the wrong tracker, someone will either transfer it to the
26correct one or ask you to move it. Some other repositories that may be
27relevant are:
28
29* [`rust-lang/rust`] --- Home for the [`rustc`] compiler and [`rustdoc`].
30* [`rust-lang/rustup`] --- Home for the [`rustup`] toolchain installer.
31* [`rust-lang/rustfmt`] --- Home for the `rustfmt` tool, which also includes `cargo fmt`.
32* [`rust-lang/rust-clippy`] --- Home for the `clippy` tool, which also includes `cargo clippy`.
33* [`rust-lang/crates.io`] --- Home for the [crates.io] website.
34
35Issues with [`cargo fix`] can be tricky to know where they should be filed,
4b012472
FG
36since the fixes are driven by `rustc`, and the front-interface is implemented
37in Cargo. Feel free to file in the Cargo issue tracker, and it will get moved
38to the [`rust-lang/rust`] issue tracker if necessary.
0a29b90c
FG
39
40[Process]: process/index.md
41[security policy]: https://www.rust-lang.org/security.html
42[new-issues]: https://github.com/rust-lang/cargo/issues/new/choose
43[Open a blank issue]: https://github.com/rust-lang/cargo/issues/new
44[`rust-lang/rust`]: https://github.com/rust-lang/rust
45[`rust-lang/rustup`]: https://github.com/rust-lang/rustup
46[`rust-lang/rustfmt`]: https://github.com/rust-lang/rustfmt
47[`rust-lang/rust-clippy`]: https://github.com/rust-lang/rust-clippy
48[`rustc`]: https://doc.rust-lang.org/rustc/
49[`rustdoc`]: https://doc.rust-lang.org/rustdoc/
50[`rustup`]: https://rust-lang.github.io/rustup/
51[`rust-lang/crates.io`]: https://github.com/rust-lang/crates.io
52[crates.io]: https://crates.io/
0a29b90c
FG
53[`cargo fix`]: https://doc.rust-lang.org/cargo/commands/cargo-fix.html
54
55## Issue labels
56
57[Issue labels] are very helpful to identify the types of issues and which
49aad941 58category they are related to.
0a29b90c 59
49aad941 60Anyone can apply most labels by posting comments with a form such as:
0a29b90c 61
49aad941
FG
62```text
63@rustbot label: +A-doctests, -A-dependency-resolution
64```
0a29b90c 65
49aad941
FG
66This example will add the [`A-doctests`] label and remove the
67[`A-dependency-resolution`] label.
0a29b90c 68
49aad941
FG
69[Issue labels]: https://github.com/rust-lang/cargo/labels
70[`A-doctests`]: https://github.com/rust-lang/cargo/labels/A-doctests
71[`A-dependency-resolution`]: https://github.com/rust-lang/cargo/labels/A-dependency-resolution
72
73The labels use a naming convention with short prefixes and colors to indicate
74the kind of label:
75
76<style>
77.label-color {
78 border-radius:0.5em;
79}
80table td:nth-child(2) {
81 white-space: nowrap;
82}
83
84</style>
85
86| Labels | Color | Description |
87|--------|-------|-------------|
88| [A-] | <span class="label-color" style="background-color:#fbca04;">&#x2003;</span>&nbsp;Yellow | The **area** of the project an issue relates to. |
89| [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] |
90| [C-] | <span class="label-color" style="background-color:#f5f1fd;">&#x2003;</span>&nbsp;Light Purple | The **category** of an issue. |
91| [Command-] | <span class="label-color" style="background-color:#5319e7;">&#x2003;</span>&nbsp;Dark Purple | The `cargo` command it is related to. |
92| [E-] | <span class="label-color" style="background-color:#02e10c;">&#x2003;</span>&nbsp;Green | The **experience** level necessary to fix an issue. |
93| [I-] | <span class="label-color" style="background-color:#fc2929;">&#x2003;</span>&nbsp;Red | The **importance** of the issue. |
94| [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. |
95| [P-] | <span class="label-color" style="background-color:#eb6420;">&#x2003;</span>&nbsp;Orange | The issue **priority**. |
96| [regression-] | <span class="label-color" style="background-color:#e4008a;">&#x2003;</span>&nbsp;Pink | Tracks regressions from a stable release. |
97| [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. |
98| [S-] | Varies | Tracks the **status** of issues and pull requests (see [Issue status labels](#issue-status-labels)) |
99| [Z-] | <span class="label-color" style="background-color:#453574;">&#x2003;</span>&nbsp;Dark Blue | Unstable, [nightly features]. |
100
101
102[A-]: https://github.com/rust-lang/cargo/labels?q=A
103[beta-]: https://github.com/rust-lang/cargo/labels?q=beta
104[beta-backport]: https://forge.rust-lang.org/release/backporting.html#beta-backporting-in-rust-langcargo
105[C-]: https://github.com/rust-lang/cargo/labels?q=C
106[Command-]: https://github.com/rust-lang/cargo/labels?q=Command
107[E-]: https://github.com/rust-lang/cargo/labels?q=E
108[I-]: https://github.com/rust-lang/cargo/labels?q=I
109[nightly features]: https://doc.rust-lang.org/nightly/cargo/reference/unstable.html
110[O-]: https://github.com/rust-lang/cargo/labels?q=O
111[P-]: https://github.com/rust-lang/cargo/labels?q=P
112[regression-]: https://github.com/rust-lang/cargo/labels?q=regression
113[relnotes]: https://github.com/rust-lang/cargo/issues?q=label%3Arelnotes
114[Rust release notes]: https://github.com/rust-lang/rust/blob/master/RELEASES.md
115[S-]: https://github.com/rust-lang/cargo/labels?q=S
116[Z-]: https://github.com/rust-lang/cargo/labels?q=nightly
0a29b90c 117
49aad941 118### Issue status labels
0a29b90c 119
49aad941
FG
120The `S-` prefixed *status* labels are the primary mechanism we use to track
121what is happening with an issue and what it is waiting on. The following is a
122list of the status labels and what they mean. This is listed roughly in the
123order that an issue might go through, though issues will often jump to
124different steps, or in rare cases have multiple statuses.
0a29b90c 125
49aad941
FG
126* **[S-triage]** --- New issues get this label automatically assigned to them
127 to indicate that nobody has yet looked at them, and they need someone to
128 assign other labels and decide what the next step is.
0a29b90c 129
49aad941
FG
130* **[S-needs-info]** --- Needs more info, such as a reproduction or more
131 background for a feature request.
0a29b90c 132
49aad941
FG
133 Anyone is welcome to help with providing additional info to help reproduce
134 or provide more detail on use cases and such. But usually this is a request
135 to the initial author.
0a29b90c 136
49aad941
FG
137 When adding this label, there should also usually be a comment that goes
138 along with it stating the information requested.
139
140* **[S-needs-team-input]** --- Needs input from team on whether/how to
141 proceed.
142
143 Here it is essentially blocked waiting for a team member to move it to the
144 next stage.
145
146* **[S-needs-design]** --- Needs someone to work further on the design for the
147 feature or fix.
148
149 Anyone is welcome to help at this stage, but it should be clear that it is
150 not yet accepted. It is expected that people should contribute comments and
151 ideas to the issue which furthers the process of fleshing out what is
152 needed, or alternate ideas. This may also require reaching out to the wider
153 community via forums and such.
154
155* **[S-needs-rfc]** --- Needs an [RFC] before this can make more progress.
156
157 Anyone is welcome to help at this stage, but it should be clear that it is
158 not yet accepted. However, this should only be tagged for changes that are
159 somewhat likely to be accepted.
160
161* **[S-needs-mentor]** --- Needs a Cargo team member to commit to helping and
162 reviewing.
163
164 This is for something that is accepted, such as after an RFC or a team
165 discussion, or an obvious issue that just needs fixing, but no team member
166 is available to help or review.
167
168* **[S-accepted]** --- Issue or feature is accepted, and has a team member
169 available to help mentor or review.
170
171* **[S-waiting-on-feedback]** --- An implemented feature is waiting on
172 community feedback for bugs or design concerns.
173
174 This is typically used on a [tracking issue] after it has been implemented
175 to indicate what it is waiting on.
176
177
178[S-triage]: https://github.com/rust-lang/cargo/labels/S-triage
179[S-needs-info]: https://github.com/rust-lang/cargo/labels/S-needs-info
180[S-needs-team-input]: https://github.com/rust-lang/cargo/labels/S-needs-team-input
181[S-needs-design]: https://github.com/rust-lang/cargo/labels/S-needs-design
182[S-needs-rfc]: https://github.com/rust-lang/cargo/labels/S-needs-rfc
183[S-needs-mentor]: https://github.com/rust-lang/cargo/labels/S-needs-mentor
184[S-accepted]: https://github.com/rust-lang/cargo/labels/S-accepted
185[S-waiting-on-feedback]: https://github.com/rust-lang/cargo/labels/S-waiting-on-feedback
186[RFC]: https://github.com/rust-lang/rfcs/
187[tracking issue]: https://github.com/rust-lang/cargo/labels/C-tracking-issue
188
189## Triaging issues
190
191Triaging issues involves processing issues to assign appropriate labels, make
192sure the issue has sufficient information, and to decide the next steps.
193When new issues are filed, they should automatically get the [S-triage] label
194assuming the author uses one of the templates. This helps identify which
195issues have not yet been triaged.
196
197There are several things to consider when triaging an issue:
198
199* Is this a duplicate? Search the issue tracker (including closed issues) to
200 see if there is something similar or identical to what is reported. If it is
201 obviously a duplicate, write a comment that it is a duplicate of the other
202 issue, and close the issue. If it isn't obvious that it is a duplicate,
203 leave a comment asking the author if the other issue covers what they reported.
204
205* For a bug, check if the report contains enough information to reproduce it.
206 If you can't reproduce it, solicit more information from the author to
207 better understand the issue.
208 Change the label from [S-triage] to [S-needs-info] if this is the case.
209
210* Add labels that describe what the issue is related to.
211
212 * Add the appropriate [A-], [Command-], [O-], and [Z-] prefixed labels.
213 * If this is a regression from stable, add one of the [regression-]
214 prefixed labels (depending on if it is a regression in an already
215 released stable release, or it is in nightly).
0a29b90c 216
49aad941
FG
217* Assuming the issue looks valid, remove the [S-triage] label and move it onto
218 a new status:
219
220 * [S-needs-rfc] --- This is a large feature request that will require a
221 public design process.
222 * [S-needs-design] --- The resolution of the issue or small feature request
223 will need more work to come up with the appropriate design.
224 * [S-needs-team-input] --- The next steps are not clear, and the Cargo team
225 needs to discuss whether or not to proceed and what needs to be done to
226 address the issue.
227 * [S-needs-mentor] --- This is something the Cargo team wants to address,
228 but does not currently have the capacity to help with reviewing.
229 * [S-accepted] --- This is something that clearly needs to be addressed, and
230 a Cargo team member has volunteered to help review.
231
232Anyone is welcome to help with the triaging process. You can help with
233reproducing issues, checking for duplicates, gathering more information from
234the reporter, assigning labels using [`@rustbot` comments](#issue-labels), and
235creating a test using [Cargo's testsuite] ([example][cargotest-example]).
236
237[Cargo's testsuite]: tests/writing.md
238[cargotest-example]: https://github.com/rust-lang/cargo/issues/11628#issuecomment-1411088951