]>
Commit | Line | Data |
---|---|---|
0a29b90c FG |
1 | # Issue Tracker |
2 | ||
3 | Cargo's issue tracker is located at | |
4 | <https://github.com/rust-lang/cargo/issues/>. This is the primary spot where | |
5 | we track bugs and small feature requests. See [Process] for more about our | |
6 | process for proposing changes. | |
7 | ||
8 | ## Filing issues | |
9 | ||
10 | We can't fix what we don't know about, so please report problems liberally. | |
11 | This includes problems with understanding the documentation, unhelpful error | |
12 | messages, and unexpected behavior. | |
13 | ||
14 | **If you think that you have identified an issue with Cargo that might | |
15 | compromise its users' security, please do not open a public issue on GitHub. | |
16 | Instead, we ask you to refer to Rust's [security policy].** | |
17 | ||
18 | Opening an issue is as easy as following [this link][new-issues]. There are | |
19 | several templates for different issue kinds, but if none of them fit your | |
20 | issue, don't hesitate to modify one of the templates, or click the [Open a | |
21 | blank issue] link. | |
22 | ||
23 | The Rust tools are spread across multiple repositories in the Rust | |
24 | organization. It may not always be clear where to file an issue. No worries! | |
25 | If you file in the wrong tracker, someone will either transfer it to the | |
26 | correct one or ask you to move it. Some other repositories that may be | |
27 | relevant 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 | ||
35 | Issues with [`cargo fix`] can be tricky to know where they should be filed, | |
4b012472 FG |
36 | since the fixes are driven by `rustc`, and the front-interface is implemented |
37 | in Cargo. Feel free to file in the Cargo issue tracker, and it will get moved | |
38 | to 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 | 58 | category they are related to. |
0a29b90c | 59 | |
49aad941 | 60 | Anyone 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 |
66 | This 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 | ||
73 | The labels use a naming convention with short prefixes and colors to indicate | |
74 | the kind of label: | |
75 | ||
76 | <style> | |
77 | .label-color { | |
78 | border-radius:0.5em; | |
79 | } | |
80 | table 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;"> </span> Yellow | The **area** of the project an issue relates to. | | |
89 | | [beta-] | <span class="label-color" style="background-color:#1e76d9;"> </span> Dark Blue | Tracks changes which need to be [backported to beta][beta-backport] | | |
90 | | [C-] | <span class="label-color" style="background-color:#f5f1fd;"> </span> Light Purple | The **category** of an issue. | | |
91 | | [Command-] | <span class="label-color" style="background-color:#5319e7;"> </span> Dark Purple | The `cargo` command it is related to. | | |
92 | | [E-] | <span class="label-color" style="background-color:#02e10c;"> </span> Green | The **experience** level necessary to fix an issue. | | |
93 | | [I-] | <span class="label-color" style="background-color:#fc2929;"> </span> Red | The **importance** of the issue. | | |
94 | | [O-] | <span class="label-color" style="background-color:#7e7ec8;"> </span> Purple Grey | The **operating system** or platform that the issue is specific to. | | |
95 | | [P-] | <span class="label-color" style="background-color:#eb6420;"> </span> Orange | The issue **priority**. | | |
96 | | [regression-] | <span class="label-color" style="background-color:#e4008a;"> </span> Pink | Tracks regressions from a stable release. | | |
97 | | [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. | | |
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;"> </span> 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 |
120 | The `S-` prefixed *status* labels are the primary mechanism we use to track |
121 | what is happening with an issue and what it is waiting on. The following is a | |
122 | list of the status labels and what they mean. This is listed roughly in the | |
123 | order that an issue might go through, though issues will often jump to | |
124 | different 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 | ||
191 | Triaging issues involves processing issues to assign appropriate labels, make | |
192 | sure the issue has sufficient information, and to decide the next steps. | |
193 | When new issues are filed, they should automatically get the [S-triage] label | |
194 | assuming the author uses one of the templates. This helps identify which | |
195 | issues have not yet been triaged. | |
196 | ||
197 | There 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 | ||
232 | Anyone is welcome to help with the triaging process. You can help with | |
233 | reproducing issues, checking for duplicates, gathering more information from | |
234 | the reporter, assigning labels using [`@rustbot` comments](#issue-labels), and | |
235 | creating 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 |