Skip to content

Commit aed1906

Browse files
authored
Merge pull request #68 from davidtwco/finish-out-of-tree-crates-policy
Finish out-of-tree crates policy.
2 parents d5bc337 + 95fd9c2 commit aed1906

File tree

1 file changed

+44
-21
lines changed

1 file changed

+44
-21
lines changed

procedures/crates.md

Lines changed: 44 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,13 @@ request.
9494
Recommendations for working with out-of-tree crates will be documented in the rustc-guide, see
9595
[rust-lang/rustc-guide#285][guide_issue] for progress.
9696

97+
### How should stabilization/semantic changes be handled in out-of-tree crates?
98+
It is important to involve the language team in any changes in out-of-tree crates that would result
99+
in stabilization or semantic changes to the language. Submodule changes in PRs to `rust-lang/rust`
100+
should be labelled appropriately (eg. `relnotes`, `T-compiler`, `T-lang`) just as if the change
101+
were implemented in `rust-lang/rust` directly, include a description of the changes when it is not
102+
obvious to those unfamiliar with the compiler or the out-of-tree crate.
103+
97104
[licenses]: https://github.com/rust-lang/rust/blob/master/src/tools/tidy/src/deps.rs#L10-L19
98105
[guide_issue]: https://github.com/rust-lang/rustc-guide/issues/285
99106

@@ -103,28 +110,43 @@ In summary, the process for establishing an out-of-tree crate is as follows:
103110

104111
1. Where appropriate, discuss and confirm the need within the working group for the out-of-tree
105112
crate.
106-
2. Create a PR modifying this document to include the crate in the list below. Use
113+
1. Create a PR modifying this document to include the crate in the list below. Use
107114
[`@rfcbot merge`](https://github.com/anp/rfcbot-rs#usage) to gain agreement from compiler
108115
team members.
109-
3. Create a new repository in the `rust-lang` organization (permissions should be available for all
110-
compiler team members).
111-
4. Add a README describing the intended purpose of the crate, which team and working group are
112-
responsible (link to their page in this repository) and the intended level of maintenance and
113-
stability.
114-
115-
> This crate is developed and maintained by the [Rust compiler team](..) for use within
116-
> `rustc`, in particular, it is the responsibility of the
117-
> [`.template`](../working-groups/.template) working group. This crate [will have regular
118-
> breaking changes and provides no stability guarantees|is intended to remain stable and have
119-
> limited breaking changes].
120-
5. Include the [LICENSE-APACHE][apache] and [LICENSE-MIT][mit] files from `rust-lang/rust`.
121-
6. Include or link the [CODE_OF_CONDUCT][coc] file from `rust-lang/rust`.
122-
7. Consult with the infrastructure team to set up `@bors` and `@rust-highfive` and a process for
116+
1. Create a new repository in the `rust-lang` organization.
117+
1. Navigate to `Settings > Collaborators & Teams` and add the `Compiler` team with write
118+
privileges and `Assignees` with `read`.
119+
- Individuals that are not part of the team can be added where appropriate.
120+
1. Add a README describing the intended purpose of the crate, which team and working group are
121+
responsible (link to their page in this repository) and the intended level of maintenance and
122+
stability.
123+
124+
> This crate is developed and maintained by the [Rust compiler team](..) for use within
125+
> `rustc`, in particular, it is the responsibility of the
126+
> [`.template`](../working-groups/.template) working group. This crate [will have regular
127+
> breaking changes and provides no stability guarantees|is intended to remain stable and have
128+
> limited breaking changes].
129+
1. Include the [LICENSE-APACHE][apache] and [LICENSE-MIT][mit] files from `rust-lang/rust`.
130+
1. Include or link the [CODE_OF_CONDUCT][coc] file from `rust-lang/rust`.
131+
1. Create a relevant `.gitignore` ([here's a sane default][gitignore]).
132+
1. Create `P-high`, `P-med`, `P-low`, `I-nominated` and `T-compiler` labels.
133+
1. Consult with the infrastructure team to set up `@rust-highfive` and a process for
123134
publishing under the "The Rust Project Developers" crates.io account.
124-
8. Perform any initial development required before integration with rustc.
125-
9. Publish initial version, following semantic versioning.
126-
10. Add the crate as a dependency to the appropriate in-tree crate and start using.
127-
135+
1. Add a basic `.travis.yml`:
136+
137+
```yaml
138+
language: rust
139+
rust:
140+
- stable
141+
```
142+
- `@bors` is not normally used for out-of-tree crates, GitHub's built-in merge facilities can
143+
be used instead.
144+
1. Perform any initial development required before integration with rustc.
145+
1. Publish initial version, following semantic versioning.
146+
1. Add the crate as a dependency to the appropriate in-tree crate and start using.
147+
148+
[gitignore]: https://gitignore.io/api/vim,rust,emacs,clion,visualstudio,visualstudiocode
149+
[triagebot]: https://github.com/rust-lang/rust/blob/master/triagebot.toml
128150
[apache]: https://github.com/rust-lang/rust/blob/master/LICENSE-APACHE
129151
[coc]: https://github.com/rust-lang/rust/blob/master/CODE_OF_CONDUCT.md
130152
[mit]: https://github.com/rust-lang/rust/blob/master/LICENSE-MIT
@@ -143,5 +165,6 @@ The same policies apply to all compiler-team-maintained crates used in the compi
143165
## List of out-of-tree crates
144166
This section contains the list of existing out-of-tree, compiler team-maintained crates:
145167

146-
- [`rust-lang-nursery/chalk`](https://github.com/rust-lang-nursery/chalk/)
147-
- [`rust-lang-nursery/polonius`](https://github.com/rust-lang-nursery/polonius/)
168+
- [`rust-lang/chalk`](https://github.com/rust-lang/chalk/)
169+
- [`rust-lang/polonius`](https://github.com/rust-lang/polonius/)
170+
- [`rust-lang/measureme`](https://github.com/rust-lang/measureme/)

0 commit comments

Comments
 (0)