@@ -17,89 +17,144 @@ This RFC proposes that we:
17
17
18
18
## Teams
19
19
20
+ This section describes the role of the teams and mechanisms for changing their memberships.
21
+
20
22
### Role
21
23
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.
24
26
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.
28
30
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.
31
33
32
34
### Membership
33
35
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.
37
64
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.
42
68
43
69
### The triage team
44
70
45
71
A special team named ` triage ` will be also be created. This team has the * very* important task of
46
72
keeping the PR queues moving and making sure no PR gets stuck in the review limbo.
47
73
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.
50
77
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
53
79
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
56
85
` 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.
65
86
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
67
102
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.
69
105
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.
75
116
76
117
[ `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.
77
132
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
82
134
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
84
139
85
140
- The ` master ` branches will be protected and can't be directly pushed to.
86
141
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 .
89
144
90
145
[ bors ] : https://bors.tech
91
146
92
147
- 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 .
95
150
96
151
[ RFC ] : https://github.com/rust-lang/rfcs#table-of-contents
97
152
98
153
- Mandatory: Read the [ Rust API guidelines] before you start reviewing PRs that add new API.
99
154
100
155
[ Rust API guidelines ] : https://rust-lang-nursery.github.io/api-guidelines/about.html
101
156
102
- ## Publishing guidelines
157
+ ### Publishing
103
158
104
159
- Publish patch releases (bug fixes) often.
105
160
@@ -112,17 +167,17 @@ transfer ownership of the repo to the org, and the author will become a collabor
112
167
113
168
[ semver-trick ] : https://github.com/dtolnay/semver-trick
114
169
115
- ## Repository guidelines
170
+ ### Repository contents
116
171
117
172
- 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.
119
174
120
175
- All the repositories that are crates will maintain a CHANGELOG.md file that adheres to the [ keep a
121
176
changelog] format.
122
177
123
178
[ keep a changelog ] : https://keepachangelog.com/en/1.0.0/
124
179
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
126
181
conduct in the repositories they govern.
127
182
128
183
[ 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
132
187
133
188
## Other changes
134
189
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
+
136
193
- The embedded Rust book and the embedonomicon which currently live in ` rust-embedded/wg ` will be
137
194
moved into their own repositories.
195
+
138
196
- 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
+
140
200
- All members of the rust-embedded org will be able to manage issues and PRs in the rust-embedded/wg
141
201
repository.
142
202
143
203
# Alternatives
144
204
145
205
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