Skip to content
This repository was archived by the owner on Jul 10, 2021. It is now read-only.

Commit 593c632

Browse files
XAMPPRockyBatmanAoDnikomatsakis
authored
New draft of Working Group RFC (#37)
* Update Working/Project Group RFC * Apply suggestions from code review Co-Authored-By: Kyle J Strand <[email protected]> * Update RFC * Add lifecycle * Update draft-rfcs/working-group-terminology.md Co-Authored-By: Niko Matsakis <[email protected]> * Add flow chart * use html * center image * embiggen * Add caption * Change caption html * clarify caption text * use style * center caption * add subheading * change wording * Update image Co-authored-by: Kyle J Strand <[email protected]> Co-authored-by: Niko Matsakis <[email protected]>
1 parent c2d0ef0 commit 593c632

File tree

2 files changed

+138
-28
lines changed

2 files changed

+138
-28
lines changed
91.2 KB
Loading

draft-rfcs/working-group-terminology.md

Lines changed: 138 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,24 @@
22

33
# Summary
44

5-
Currently the Rust Programming Language organisation has a set of teams
6-
called "Working Groups", however the definition and process of what these groups
7-
have become ill defined since their initial creation, especially as more and
8-
more people have used the same moniker for different purposes. This has caused
9-
quite a bit of confusion between team members and the community at large. This
10-
RFC seeks to clarify and codify the different sets of groups previously under
11-
the "Working Group" umbrella term.
5+
- Formalize project groups as groups dedicated to completing specific projects
6+
within the context of a Rust team
7+
- Project groups are created via an RFC and have a "parent team" (or
8+
multiple teams)
9+
- The groups then drive the project to completion, e.g. by authoring follow-up
10+
RFCs and doing design work.
11+
- Each project group typically has:
12+
- A charter outlining the group's scope and goals.
13+
- Appointed shepherds and team liasons.
14+
- An associated repository.
15+
- Regular meetings.
16+
- Dedicated streams on Discord/Zulip/etc.
17+
- Define working groups to refer to the "domain working groups" that are created
18+
to explore particular domains, such as embedded, CLI, etc.
19+
- They have a charter and defined leads but operate more independently from
20+
the Rust teams.
21+
- Define community group as the term for groups not formally affiliated with the
22+
Rust project.
1223

1324
# Motivation
1425

@@ -54,6 +65,87 @@ Group" term, into three distinct terms.
5465
organising groups that are independent of the Rust Programming
5566
Language Organisation.
5667

68+
## Lifecycle of a Project Group
69+
70+
This is a high level overview of the complete process of a project group. While
71+
the flow is built around project groups, we expect that working groups would
72+
follow a similar process with only minor specifics changed. E.g. A working
73+
group does not have to find a liaison.
74+
75+
<p align="center">
76+
<img src="./resources/project-group-workflow.png"
77+
alt="A flow diagram showing each step of a project group"
78+
height="800px">
79+
<p align="center">Figure 1. Project Group Lifecycle</p>
80+
</p>
81+
82+
### Steps
83+
84+
1. Exploratory period.
85+
86+
- Initial discussions of the problem area.
87+
- Write a charter containing motivation, and some notes on
88+
possible solutions.
89+
- Find a person from the relevant team who's willing to act as a liaison.
90+
- Typically can find someone by creating a post on [internals] or pinging
91+
specific people from team to gauge their interest.
92+
93+
2. Obtain consensus to create group.
94+
95+
- Specify the liaison, and shepherd(s).
96+
- How consensus is reached would vary from team to team, some would require an
97+
RFC while others could decide in a meeting. (See [Future Work](#future-work))
98+
99+
3. Create infrastructure for group.
100+
101+
- GitHub repository under `rust-lang` for hosting work and discussions, such
102+
as for draft RFCs.
103+
- A Discord channel or a Zulip stream for communication.
104+
- Project group in [`rust-lang/team`], as well as a team on GitHub, for
105+
handling permissions.
106+
107+
4. Create a post on the Rust or Inside Rust blog announcing creation of
108+
the group.
109+
110+
5. The group works towards the goals laid out in their charter.
111+
112+
6. When active work has stopped a group is "archived".
113+
114+
- Archival is not necessarily a permanent state, it is only a reflection on the current
115+
status of the group. A group can be "restored" at a later stage.
116+
- Reasons to archive:
117+
- Nobody in the group has time anymore or higher priority things arose.
118+
- There's a blocking issue that can't be resolved.
119+
- Don't see any additional work to do in this area in the near future.
120+
- The work was done to a satisfactory state.
121+
- The group decided the idea wasn't so good after all.
122+
123+
7. Create a blog post announcing the archival of the group.
124+
125+
- The scope of this post will vary based on the scope of the group, but
126+
ideally it would include some of the following.
127+
- Overview of decisions, RFCs, and other output the group produced.
128+
- Thoughts on the process, how it worked (or didn't as case may be), any
129+
difficulties encountered, and what they would want to be improved.
130+
131+
8. Archive infrastructure.
132+
133+
- Archive GitHub repository to be read-only.
134+
- Archive chat channel(s) on any platforms.
135+
136+
9. (Optional) Restore group
137+
138+
- At any later point the group could be restored to active status if there are
139+
assigned liaisons and shepherds, and the group has consensus from the team
140+
that the group should become active again.
141+
- If significant time has passed, part of restoring the group should be to
142+
evaluate whether the past decisions and rationale are still applicable to the
143+
present.
144+
- If there is consensus to become active again, go to step 3.
145+
146+
[`rust-lang/team`]: https://github.com/rust-lang/team
147+
[internals]: https://internals.rust-lang.org
148+
57149
# Reference-level explanation
58150

59151
## Common Aspects of Working Groups and Project Groups
@@ -86,9 +178,9 @@ with what it is shared between them.
86178
- Initial membership should try to represent people who have already been
87179
participating regularly and productively in the respective area.
88180

89-
- Neither group has _"formal decision making power"_. Where "formal decision
90-
making power" is defined as being able to accept RFCs on `rust-lang/rfcs`.
91-
Similarly, neither group has representation on the Core team.
181+
- Neither group has _"formal decision making power"_: meaning that they are not
182+
able to accept RFCs on `rust-lang/rfcs`. Similarly, neither group has
183+
representation on the Core team.
92184

93185
- Groups are of course encouraged to create RFCs as well
94186
as advocate their concerns and desired changes to the Rust teams
@@ -135,14 +227,9 @@ of this include [Embedded][embedded-wg], [WebAssembly][wasm-wg], and
135227

136228
Creation of a working group is approved by the core team. Typically this has
137229
been done by the core team agreeing to approve the creation of new working
138-
groups and having a period of time soliciting applications from the community,
230+
groups, having a period of time soliciting applications from the community,
139231
and then approving a subset of those applications.
140232

141-
> **DRAFT NOTE** Should this application come in the form of an RFC? My
142-
> inclination is yes, however it could just create more churn and drama than
143-
> needed. Posting in a thread on internals as was done previously might
144-
> be enough.
145-
146233
#### Application Checklist
147234

148235
This not meant to be formal list of questions to be answer, however the
@@ -180,10 +267,7 @@ If a working group has demonstrated consistent productivity over a significant
180267
period time, and there is consensus that there is significant future work, it
181268
may become a Rust team. Conversely if there is consensus that the work is
182269
"complete" to the point that there's there is little benefit to continuing the
183-
working group, it may be wound down.
184-
185-
The wind down process of a working group involves communicating the wind down to
186-
the community and the archival or transfer of ownership of the relevant projects.
270+
working group, it may be archived.
187271

188272
## Project Groups
189273

@@ -218,6 +302,12 @@ team, it's up to each team decide their specific requirements. However we
218302
recommend using the [application checklist](#application-checklist) as the basis
219303
for process and if needed adding any extra requirements.
220304

305+
Process around project group membership is up to the shepherd's discretion.
306+
Typically, people who are productively contributing to the project group for
307+
some time will be added as members. It is not required for a project group to
308+
have alot of members though, some project groups may only have one or
309+
two members.
310+
221311
### Project Group Evaluation
222312

223313
Parent teams should add checking in with their project groups as part of their
@@ -236,18 +326,29 @@ groups laid, but are free create and experiment with their own structure. As
236326
such community groups are not officially endorsed by The Rust Programming
237327
Language Organisation.
238328

239-
## Retrospectives
329+
## Archival
330+
331+
The archival process of a group involves communicating the wind down to the
332+
community and the archival or transfer of ownership of the relevant projects.
333+
As well archiving any chat channels hosted by the Rust project.
334+
335+
### Retrospectives
240336

241337
While this RFC attempts to address some of the current organisational problems
242338
within the organisation, it also doesn't believe that this RFC will be a panacea
243339
to those problems or that we won't encounter more in the future. As part of
244340
that, we'd also like to introduce performing retrospectives with groups, once
245341
significant time has past or the group has been finished it's project.
246342

247-
This would involve a discussion between the members of the group, their parent
248-
team, and the Governance working group. The retrospective should produce a
249-
public blog post on the Inside Rust blog, however any feedback a member has that
250-
they would want to keep private would be omitted.
343+
This would involve a discussion between the members of the group, and ideally
344+
their parent team and the Governance working group. The retrospective should
345+
produce a public blog post on the Inside Rust blog, however any feedback a
346+
member has that they would want to keep private would be omitted.
347+
348+
The blog post should try to cover the output of the group, such as RFCs or
349+
projects, as well what the group thought worked and importantly what
350+
didn't work. This should help us iterate on this initial RFC and help us find
351+
and address issues that come up in the process.
251352

252353
# Drawbacks
253354

@@ -257,16 +358,25 @@ they would want to keep private would be omitted.
257358
to new terminology will likely also cause some confusion, though hopefully
258359
only in the short term.
259360

361+
# Future Work
362+
363+
- Ideally we'd prefer if every team obtained consensus to form groups through
364+
RFCs, as they an open process that allows us to easily keep track of
365+
decisions. However we recognise that the current RFC process is maybe too
366+
heavyweight for some teams currently. We're currently looking how we can
367+
simplify some of this process, see [wg-governance#38] for further information.
368+
369+
[wg-governance#38]: https://github.com/rust-lang/wg-governance/issues/38
370+
260371
# Unresolved questions
261372

262373
[unresolved-questions]: #unresolved-questions
263374

264375
- The term _"shepherd"_ term has been used extensively in the Rust project and
265376
the community to describe leaders of teams however there hasn't ever been a
266377
strict definition and this could come with different expectations of what is
267-
expected from a shepherd. This RFC does not attempt to define this term,
268-
however there are few resources that are helpful to understanding
269-
the terminology.
378+
expected from a shepherd. This RFC does not attempt to define this, however
379+
there are few resources that are helpful to understanding the terminology.
270380

271381
> - [Niko Matsakis' "AiC: Shepherds 3.0"][niko-sheps]
272382
> - [James Munns' "Shepherding v3.1"][james-sheps]

0 commit comments

Comments
 (0)