mirror of https://github.com/rust-lang/cargo
129 lines
5.4 KiB
Markdown
129 lines
5.4 KiB
Markdown
# Process
|
|
|
|
This chapter gives an overview of how Cargo comes together, and how you can be
|
|
a part of that process.
|
|
|
|
See the [Working on Cargo] chapter for an overview of the contribution
|
|
process.
|
|
|
|
Please read the guidelines below before working on an issue or new feature.
|
|
|
|
**Due to limited review capacity, the Cargo team is not accepting new features
|
|
or major changes at this time. Please consult with the team before opening a
|
|
new PR. Only issues that have been explicitly marked as accepted will be
|
|
reviewed.**
|
|
|
|
[Working on Cargo]: working-on-cargo.md
|
|
|
|
## Cargo team
|
|
|
|
Cargo is managed by a [team] of volunteers. The Cargo Team reviews all
|
|
changes, and sets the direction for the project.
|
|
|
|
The team meets on a weekly basis on a video chat. If you are interested in
|
|
participating, feel free to contact us on [Zulip].
|
|
|
|
## Roadmap
|
|
|
|
The [Roadmap Project Board] is used for tracking major initiatives. This gives
|
|
an overview of the things the team is interested in and thinking about.
|
|
|
|
The [RFC Project Board] is used for tracking [RFCs].
|
|
|
|
[the 2020 roadmap]: https://blog.rust-lang.org/inside-rust/2020/01/10/cargo-in-2020.html
|
|
[Roadmap Project Board]: https://github.com/rust-lang/cargo/projects/1
|
|
[RFC Project Board]: https://github.com/rust-lang/cargo/projects/2
|
|
[RFCs]: https://github.com/rust-lang/rfcs/
|
|
|
|
## Working on small bugs
|
|
|
|
Issues labeled with the [E-help-wanted], [E-easy], or [E-mentor] [labels] are
|
|
typically issues that the Cargo team wants to see addressed, and are
|
|
relatively easy to get started with. If you are interested in one of those,
|
|
and it has not already been assigned to someone, leave a comment. See [Issue
|
|
assignment](#issue-assignment) below for assigning yourself.
|
|
|
|
If there is a specific issue that you are interested in, but it doesn't have
|
|
one of the `E-` labels, leave a comment on the issue. If a Cargo team member
|
|
has the time to help out, they will respond to help with the next steps.
|
|
|
|
[E-help-wanted]: https://github.com/rust-lang/cargo/labels/E-help-wanted
|
|
[E-easy]: https://github.com/rust-lang/cargo/labels/E-easy
|
|
[E-mentor]: https://github.com/rust-lang/cargo/labels/E-mentor
|
|
[labels]: ../issues.md#issue-labels
|
|
|
|
## Working on large bugs
|
|
|
|
Some issues may be difficult to fix. They may require significant code
|
|
changes, or major design decisions. The [E-medium] and [E-hard] [labels] can
|
|
be used to tag such issues. These will typically involve some discussion with
|
|
the Cargo team on how to tackle it.
|
|
|
|
[E-medium]: https://github.com/rust-lang/cargo/labels/E-medium
|
|
[E-hard]: https://github.com/rust-lang/cargo/labels/E-hard
|
|
|
|
## Working on small features
|
|
|
|
Small feature requests are typically managed on the [issue
|
|
tracker][issue-feature-request]. Features that the Cargo team have approved
|
|
will have the [Feature accepted] label or the [E-mentor] label. If there is a
|
|
feature request that you are interested in, feel free to leave a comment
|
|
expressing your interest. If a Cargo team member has the time to help out,
|
|
they will respond to help with the next steps. Keep in mind that the Cargo
|
|
team has limited time, and may not be able to help with every feature request.
|
|
Most of them require some design work, which can be difficult. Check out the
|
|
[design principles chapter] for some guidance.
|
|
|
|
## Working on large features
|
|
|
|
Cargo follows the Rust model of evolution. Major features usually go through
|
|
an [RFC process]. Therefore, before opening a feature request issue create a
|
|
Pre-RFC thread on the [internals][irlo] forum to get preliminary feedback.
|
|
|
|
Implementing a feature as a [custom subcommand][subcommands] is encouraged as
|
|
it helps demonstrate the demand for the functionality and is a great way to
|
|
deliver a working solution faster as it can iterate outside of Cargo's release
|
|
cadence.
|
|
|
|
See the [unstable chapter] for how new major features are typically
|
|
implemented.
|
|
|
|
[unstable chapter]: unstable.md
|
|
|
|
## Bots and infrastructure
|
|
|
|
The Cargo project uses several bots:
|
|
|
|
* [GitHub Actions] are used to automatically run all tests for each PR.
|
|
* [rust-highfive] automatically assigns reviewers for PRs.
|
|
* [bors] is used to merge PRs. See [The merging process].
|
|
* [triagebot] is used for assigning issues to non-members, see [Issue
|
|
assignment](#issue-assignment).
|
|
* [rfcbot] is used for making asynchronous decisions by team members.
|
|
|
|
[rust-highfive]: https://github.com/rust-highfive
|
|
[bors]: https://buildbot2.rust-lang.org/homu/
|
|
[The merging process]: working-on-cargo.md#the-merging-process
|
|
[GitHub Actions]: https://github.com/features/actions
|
|
[triagebot]: https://github.com/rust-lang/triagebot/wiki
|
|
[rfcbot]: https://github.com/rust-lang/rfcbot-rs
|
|
|
|
## Issue assignment
|
|
|
|
Normally, if you plan to work on an issue that has been marked with one of the
|
|
`E-` tags or [Feature accepted], it is sufficient just to leave a comment that
|
|
you are working on it. We also have a bot that allows you to formally "claim"
|
|
an issue by entering the text `@rustbot claim` in a comment. See the
|
|
[Assignment] docs on how this works.
|
|
|
|
|
|
[Assignment]: https://github.com/rust-lang/triagebot/wiki/Assignment
|
|
[team]: https://www.rust-lang.org/governance/teams/dev-tools#cargo
|
|
[Zulip]: https://rust-lang.zulipchat.com/#narrow/stream/246057-t-cargo
|
|
[issue-feature-request]: https://github.com/rust-lang/cargo/labels/C-feature-request
|
|
[Feature accepted]: https://github.com/rust-lang/cargo/labels/Feature%20accepted
|
|
[design principles chapter]: ../design.md
|
|
[RFC process]: https://github.com/rust-lang/rfcs/
|
|
[irlo]: https://internals.rust-lang.org/
|
|
[subcommands]: https://doc.rust-lang.org/cargo/reference/external-tools.html#custom-subcommands
|