Skip to content

Commit 23e8d93

Browse files
committed
update with input from the WG meeting
1 parent 889260d commit 23e8d93

File tree

1 file changed

+110
-65
lines changed

1 file changed

+110
-65
lines changed

rfcs/0000-teams.md

Lines changed: 110 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -17,89 +17,144 @@ This RFC proposes that we:
1717

1818
## Teams
1919

20+
This section describes the role of the teams and mechanisms for changing their memberships.
21+
2022
### Role
2123

22-
- The role of a team is to oversee the development of the crates under their purview. With input
23-
from stakeholders they set the development roadmap of each crate assigned to them.
24+
The role of a team is to oversee the development of the crates under their purview. With input from
25+
stakeholders they set the development roadmap of each crate assigned to them.
2426

25-
- The members of a team are the main reviewers of the crates assigned to the team. Teams are
26-
free to add collaborators (reviewers) to the repositories they oversee, and to increase / modify
27-
their membership as they see fit.
27+
The members of a team are the main reviewers of the crates assigned to the team. Teams are free to
28+
add collaborators (reviewers) to the repositories they oversee, and to increase / modify their
29+
membership as they see fit.
2830

29-
- The team is in charge of publishing new versions of the crates they oversee to crates.io, and of
30-
maintaining the CHANGELOG of the project.
31+
The team is in charge of publishing new versions of the crates they oversee to crates.io, and of
32+
maintaining the CHANGELOG of the project.
3133

3234
### Membership
3335

34-
- For visibility, the membership of each team, along with the set of crates they oversee, will be
35-
listed in the README of the rust-embedded/wg (previously known as rust-lang-nursery/embedded-wg)
36-
repository.
36+
For visibility, the membership of each team, along with the set of crates they oversee, will be
37+
listed in the README of the rust-embedded/wg (previously known as rust-lang-nursery/embedded-wg)
38+
repository.
39+
40+
#### Adding new members
41+
42+
A person that wants to join a team (the "candidate") will first consult with (part of) the team. The
43+
team may decide that the candidate participates as a collaborator to one of the repositories
44+
maintained by the team before they apply for membership. After receiving a soft OK from (part of)
45+
the team the candidate will send a PR to the rust-embedded/wg repository modifying the README file
46+
to list themselves as a new member.
47+
48+
The complete team will review the PR and perform one of these 3 actions: approve the PR, abstain
49+
from reviewing, or raise a concern. When the PR achieves the *majority* of votes (defined below) it
50+
will be merged and the membership changes will be made effective.
51+
52+
#### Voting majority
53+
54+
Voting majority is defined as having more approvals than abstentions and zero unresolved concerns.
55+
In the case where there are equal numbers of approvals and abstentions (i.e. the team has an even
56+
number of members) the WG lead will give the casting vote.
57+
58+
#### Removing members
59+
60+
When (part of) a team wishes to remove one of its member they will make a PR to the
61+
rust-embedded/wg repository updating the README with the modified membership. The team minus the
62+
member being removed will vote on the proposal. After voting majority (defined in the previous
63+
section) has been achieved the PR will be merged and the membership changes will be made effective.
3764

38-
- To expand the membership of a team the candidate will send a PR to the rust-embedded/wg repository
39-
modifying the README to add themselves as a new member. The current members of the team will
40-
review the PR. If all the members approve the PR will be merged and the membership change will be
41-
made effective.
65+
In the case where the member wishes to retire the procedure is similar. The retiring member will
66+
make a PR notifying the team (e.g. "cc rust-embedded/$team"). In this case no voting is necessary.
67+
The PR will be merged and the changes will be made effective.
4268

4369
### The triage team
4470

4571
A special team named `triage` will be also be created. This team has the *very* important task of
4672
keeping the PR queues moving and making sure no PR gets stuck in the review limbo.
4773

48-
- This team will consist of volunteers that will triage open PRs to rust-embedded repos on a weekly
49-
basis.
74+
This team will consist of volunteers that will triage open PRs to rust-embedded repos on a weekly
75+
basis. When triaging the members of the `triage` team will assign or change reviewers, add or change
76+
the labels of the PR, and/or comment on the PRs; they will not review PRs while triaging.
5077

51-
- The `triage` team can't review PRs; they can only change the labels of the PR and comment on the
52-
PRs.
78+
#### The triaging process
5379

54-
- The `triage` team will follow the triage process used in [the rust-lang/rust repo]:
55-
- Open PRs will get assigned one of these status label: `S-waiting-on-author` or
80+
The proposed triaging process is based on [the one used in the rust-lang/rust repo][rust-triage].
81+
82+
[rust-triage]: https://github.com/rust-lang/rust/pulls
83+
84+
- Open PRs will get assigned one of these status label: `S-waiting-on-author` or
5685
`S-waiting-on-reviewer`.
57-
- If the PR has no assigned reviewer assign a reviewer and set the `S-waiting-on-reviewer` label.
58-
- If around a week has passed since a reviewer was assigned ping the reviewer to remind them about
59-
the PR.
60-
- If the reviewer requested changes to the PR apply the `S-waiting-on-author` label.
61-
- If around a week has passed since changes were requested ping the author to remind them that
62-
changes are needed.
63-
- If the author made the requested changes change the label to `S-waiting-on-reviewer`.
64-
- If the author hasn't responded to pings for over two weeks, close the PR.
6586

66-
[the rust-lang/rust repo]: https://github.com/rust-lang/rust/pulls
87+
- If the PR has no assigned reviewer assign a reviewer and set the `S-waiting-on-reviewer` label.
88+
89+
- If around a week has passed since a reviewer was assigned ping the reviewer to remind them about
90+
the PR.
91+
92+
- If the reviewer requested changes to the PR apply the `S-waiting-on-author` label.
93+
94+
- If around a week has passed since changes were requested ping the author to remind them that
95+
changes are needed.
96+
97+
- If the author made the requested changes change the label to `S-waiting-on-reviewer`.
98+
99+
- If the author hasn't responded to pings for over two weeks, close the PR.
100+
101+
## Projects
67102

68-
## Crate inclusion policy
103+
The section describes the guideline for incorporating projects into the rust-embedded organization
104+
and the mechanism for adopting projects.
69105

70-
Only crates that are widely used and / or that have a wide scope will be maintained by the
71-
embedded-rust org. Additionally, the crate must compile on stable Rust 1.31. In principle, this
72-
excludes HAL implementations crate like the [`stm32f103xx-hal`] but exception can be made for crates
73-
with narrow scope, like the [`f3`] crate, that are used by widely used resources like the
74-
[`discovery`] book.
106+
### Inclusion guideline
107+
108+
Only projects (crates or documentation) that are widely used and / or that have a wide scope will be
109+
maintained by the embedded-rust org. Additionally, if the project is a crate it must compile on the
110+
stable channel by Rust 1.31 (2018-12-06); if the project is documentation all the included code and
111+
patterns must be usable on the stable channel.
112+
113+
In principle, this guideline excludes HAL implementation crates like the [`stm32f103xx-hal`] and
114+
board support crates because of their narrow scope but exceptions could be made for crates, like the
115+
[`f3`] crate, that are dependencies of widely used resources like the [`discovery`] book.
75116

76117
[`stm32f103xx-hal`]: https://github.com/japaric/stm32f103xx-hal
118+
[`f3`]: https://github.com/japaric/f3
119+
[`discovery`]: https://github.com/japaric/discovery
120+
121+
### Adopting projects
122+
123+
An author that wishes to have their project adopted by the rust-embedded org should first approach
124+
the team that would oversee their crate if it were to be adopted. If the author is unsure which team
125+
should take ownership of their project they will first open an issue in the rust-embedded/wg
126+
repository requesting input.
127+
128+
After getting a soft OK from (part of) the team the author will send a PR to rust-embedded/wg adding
129+
their repository to the list of crates the team maintains. After voting majority (see definition in
130+
the membership section) the PR will be merged, ownership will be transferred and the author will
131+
become a collaborator of the transferred repository.
77132

78-
The procedure to add a crate is similar to the one used to add a new member to a team. The author
79-
of the crate will make a PR modifying the README of the rust-embedded/wg repo. The team that
80-
will adopt the crate will review the PR. If everyone accepts, the PR will be merged, the author will
81-
transfer ownership of the repo to the org, and the author will become a collaborator.
133+
## Guidelines
82134

83-
## Reviewing guidelines
135+
This section contains a set of guidelines that aim to standardize the management of projects
136+
within the rust-embedded org.
137+
138+
### Reviewing
84139

85140
- The `master` branches will be protected and can't be directly pushed to.
86141

87-
- All changes will go through a PR, which must pass review and [bors] before landing. A team member
88-
/ collaborator can't review / approve their own PR.
142+
- All changes will go through a PR that must pass review and [bors] before landing. Team members
143+
and collaborators can't approve their own PRs.
89144

90145
[bors]: https://bors.tech
91146

92147
- Breaking and major changes must be consulted with other team members, reviewers and stakeholders
93-
before the PR is reviewed. A mini [RFC] must be written listing the rationale of the change and
94-
the alternatives.
148+
before the PR is reviewed. The team will decide whether a mini [RFC], listing the rationale of the
149+
change and the alternatives, needs to be written.
95150

96151
[RFC]: https://github.com/rust-lang/rfcs#table-of-contents
97152

98153
- Mandatory: Read the [Rust API guidelines] before you start reviewing PRs that add new API.
99154

100155
[Rust API guidelines]: https://rust-lang-nursery.github.io/api-guidelines/about.html
101156

102-
## Publishing guidelines
157+
### Publishing
103158

104159
- Publish patch releases (bug fixes) often.
105160

@@ -112,17 +167,17 @@ transfer ownership of the repo to the org, and the author will become a collabor
112167

113168
[semver-trick]: https://github.com/dtolnay/semver-trick
114169

115-
## Repository guidelines
170+
### Repository contents
116171

117172
- The README of all repositories will indicate which team is in charge of the repository and it will
118-
link to the teams sections of the README of the rust-embedded/wg repo.
173+
link to the teams section of the README in the rust-embedded/wg repo.
119174

120175
- All the repositories that are crates will maintain a CHANGELOG.md file that adheres to the [keep a
121176
changelog] format.
122177

123178
[keep a changelog]: https://keepachangelog.com/en/1.0.0/
124179

125-
- The repository will include a copy of Rust [Code of Conduct]. Each team will enforce the code of
180+
- The repository will include a copy of Rust's [Code of Conduct]. Each team will enforce the code of
126181
conduct in the repositories they govern.
127182

128183
[Code of Conduct]: https://github.com/rust-lang/rust/blob/master/CODE_OF_CONDUCT.md
@@ -132,29 +187,19 @@ transfer ownership of the repo to the org, and the author will become a collabor
132187

133188
## Other changes
134189

135-
- `rust-lang-nursery/embedded-wg` -> `rust-embedded/wg`
190+
- Transfer the `rust-lang-nursery/embedded-wg` to the rust-embedded org and rename it to
191+
`rust-embedded/wg`.
192+
136193
- The embedded Rust book and the embedonomicon which currently live in `rust-embedded/wg` will be
137194
moved into their own repositories.
195+
138196
- The newletters in `rust-embedded/wg` will also be moved into their own repository.
139-
- The logo of the rust-embedded logo will change to the embedded WG logo.
197+
198+
- The logo of the rust-embedded org will change to the embedded WG logo.
199+
140200
- All members of the rust-embedded org will be able to manage issues and PRs in the rust-embedded/wg
141201
repository.
142202

143203
# Alternatives
144204

145205
An alternative to this proposal is to have the architectures teams be their own independent orgs.
146-
147-
# Unresolved questions
148-
149-
> Where is the AVR team?
150-
151-
Only architectures with built-in support, or that will soon have built-in support, in `rustc` have
152-
been considered in this proposal. We can spin up more teams in the future.
153-
154-
- Should we require that would-be team members do some time as collaborators before they apply?
155-
156-
- The procedure for having a team member retire is still TBD.
157-
158-
- The procedure for removing (deprecating?) a crate from the rust-embedded org is still TBD.
159-
160-
- The procedure for creating a brand new team is still TBD.

0 commit comments

Comments
 (0)