Skip to content

Commit 34b5580

Browse files
committed
add an initial draft of compiler-team-contributors
1 parent 95cb861 commit 34b5580

File tree

1 file changed

+244
-0
lines changed

1 file changed

+244
-0
lines changed
Lines changed: 244 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,244 @@
1+
- Feature Name: (fill me in with a unique ident, `my_awesome_feature`)
2+
- Start Date: (fill me in with today's date, YYYY-MM-DD)
3+
- RFC PR: [rust-lang/rfcs#0000](https://github.com/rust-lang/rfcs/pull/0000)
4+
- Rust Issue: [rust-lang/rust#0000](https://github.com/rust-lang/rust/issues/0000)
5+
6+
# Summary
7+
[summary]: #summary
8+
9+
Introduce an intermediate level of member for the compiler team, the
10+
**compiler team contributor**.
11+
12+
# Motivation
13+
[motivation]: #motivation
14+
15+
This proposal is part of a larger effort to introduce more structure
16+
into the compiler team's makeup. This structure should make it easier
17+
to become a part of the compiler team, by laying out a clear path to
18+
membership and by offering more official roles.
19+
20+
## Background: Access to infrastructure
21+
22+
In addition to recognition, the levels in this document control access
23+
to other bits of our infrastructure. It is worth spending some time
24+
reviewing those bits of infrastructure.
25+
26+
### bors r+ privileges
27+
28+
The bors bot has a central list of folks that have "r+" privileges.
29+
These are people who can leave comments instructing bors to land a PR.
30+
31+
While the bors permissions are very crude (you either have privileges
32+
or you don't), we have historically asked people to use their
33+
permissions in specific ways (self-policed).
34+
35+
One reason that it is convenient to have r+ privileges is a purely
36+
adminstrative one: they allow you to re-approve PRs after they have
37+
been rebased, which is a common need. (Typically this is done by
38+
writing `@bors r=username`, where `username` is the name of the
39+
original reviewer.)
40+
41+
Apart from these adminstrative re-reviews, the expectation is that
42+
people with r+ privileges will begin by reviewing only simple PRs from
43+
parts of the compiler that they understand well. As their knowledge
44+
grows, they can approve more and more complex PRs.
45+
46+
### highfive queue
47+
48+
One great way to help move the compiler along and to gain experience
49+
in its internals is to be added to the highfive queue. People on this
50+
queue are automatically assigned to do reviews for fresh
51+
PRs. Obviously, it only makes sense to be added to the queue if you
52+
have r+ privileges.
53+
54+
Often, it makes sense to be added to the queue *even if* you are not
55+
that familiar with the compiler. This is because it lets you do
56+
initial reviews of PRs, thus gaining experience with lots of parts of
57+
the compiler. If you don't feel like you fully understood the PR, then
58+
-- after your initial review -- you can then re-assign the PR to
59+
someone more senior.
60+
61+
### rust-lang org membership
62+
63+
There are a number of things that you can't do in GitHub unless you
64+
are a member of the GitHub organization. Typically, one becomes a
65+
member of the organization by being added to a team, and these teams
66+
in turn are granted privileges to repositories in the organization.
67+
Most notably:
68+
69+
- you cannot be assigned to issues unless you have at least *read* access to a repository;
70+
- you cannot modify labels without *write* access (I think);
71+
- you cannot be a member of a *team*, which means you cannot be addressed via some
72+
alias like `@rust-lang/compiler-team`;
73+
- you do not get the little "member" badge appearing next to your name when you comment.
74+
75+
The last point is potentially important: by being made a member of the
76+
org, you are to some extent representing that org, as you are
77+
visibility identified as a member. These can be important in terms of
78+
the code of conduct, as we wish for representatives of rust-lang to
79+
take extra care in their public interaction. In particular, this
80+
implies we might not want to allow **anyone** to make themselves a
81+
member of the org.
82+
83+
### triagebot
84+
85+
The triagebot is an "upcoming" piece of infrastructure that should allow any GitHub user
86+
to make some changes to issues on rust-lang repositories. In particular, one would be
87+
able to instruct the triagebot to do the following:
88+
89+
- adjust labels on issues
90+
- assign oneself to the issue
91+
92+
Because the triagebot can be used by anyone, and not just org members, assigning
93+
works as follows:
94+
95+
- the issue is *officially* assigned to the triagebot (as far as
96+
Github is concerned, that is)
97+
- the issue header is edited to indicate that it is assigned to the
98+
user in question
99+
100+
This is a bit less good than being assigned to the issue as an org
101+
member, since it means that your username and picture do not appear
102+
next to the issue, but it's still pretty decent and should suffice for
103+
most purposes.
104+
105+
# Guide-level explanation
106+
[guide-level-explanation]: #guide-level-explanation
107+
108+
## The path to membership
109+
110+
People will typically start as a **working group participant,** which
111+
is basically somebody who has come to work on something for the first
112+
time. They don't know much about the compiler yet and have no
113+
particular privileges. They are assigned to issues using the triagebot
114+
and (typically) work with a mentor or mentoring instructions.
115+
116+
Once a working group participant has been contributing regularly for
117+
some time, they can be promoted to the level of a **compiler team
118+
contributor**. This indicates that they are someone who contributes
119+
regularly.
120+
121+
- Contributors have r+ privileges and can do reviews (they are
122+
expected to use those powers appropriately, as discussed
123+
previously).
124+
- Contributors are members of the organization so they can modify
125+
labels and be assigned to issues.
126+
- Contributors will be asked if they wish to be added to highfive rotation.
127+
- Contributors will be listed on the [compiler expert map](https://github.com/rust-lang/compiler-team/blob/9d8c387ddbd01ced14eaab480cddb00c2d723f36/experts/MAP.md),
128+
which lists folks who are familiar with each area of the compiler.
129+
- Contributors are listed on the rust-lang.org web page and invited to
130+
the Rust All Hands.
131+
132+
As a contributor gains in experience, they may be asked to become a
133+
**compiler team member**. This implies that they are not only a
134+
regular contributor, but are actively helping to shape the direction
135+
of the team or some part of the compiler (or multiple parts).
136+
137+
- Compiler team members are the ones who select when people should be
138+
promoted to compiler team contributor or to the level of member.
139+
- Compiler team members are consulted on FCP decisions (which, in the
140+
compiler team, are relatively rare).
141+
142+
### Not just code
143+
144+
It is worth emphasizing that becoming a contributor or member of the
145+
compiler team does not necessarily imply writing PRs. There are a wide
146+
variety of tasks that need to be done to support the compiler and
147+
which should make one eligible for membership. Suchs tasks would
148+
include organizing meetings, participating in meetings, bisecting and
149+
triaging issues, writing documentation, working on the
150+
rustc-guide. The most important criteria for elevation to contributor,
151+
in particular, is **regular and consistent** participation. The most
152+
important criteria for elevation to member is **actively shaping the
153+
direction of the team or compiler**.
154+
155+
## Alumni status
156+
157+
If at any time a current contributor or member wishes to take a break
158+
from participating, they can opt to put themselves into alumni status.
159+
When in alumni status, they will be removed from Github aliases and
160+
the like, so that they need not be bothered with pings and messages.
161+
They will also not have r+ privileges. **Alumni members will however
162+
still remain members of the GitHub org overall.**
163+
164+
People in alumni status can ask to return to "active" status at any
165+
time.
166+
167+
People in alumni status are still members of the team at the level
168+
they previously attained and they may publicly indicate that, though
169+
they should indicate the time period for which they were active as
170+
well.
171+
172+
## Automatic alumni status after 6 months of inactivity
173+
174+
If a contributor or a member has been inactive in the compiler for 6
175+
months, then we will ask them if they would like to go to alumni
176+
status. If they respond yes or do not respond, they can be placed on
177+
alumni status. If they would prefer to remain active, that is also
178+
fine, but they will get asked again periodically if they continue to
179+
be inactive.
180+
181+
# Drawbacks
182+
[drawbacks]: #drawbacks
183+
184+
Why should we *not* do this?
185+
186+
# Rationale and alternatives
187+
[rationale-and-alternatives]: #rationale-and-alternatives
188+
189+
This RFC represents, effectively, the smallest extension to our structure
190+
that could possibly work. One could imagine more elaborate structures along a few dimensions.
191+
192+
**More senior levels of membership.** One concern is that the set of
193+
**members** of the compiler team may grow too large for things like
194+
FCP (where each person must check their box) to be feasible. This
195+
could be resolved by moving away from FCP-based decision making (which
196+
is rarely used in the compiler anyhow), but it may also be worth
197+
considering another level of membership (e.g., a **senior
198+
member"). Senior members could be used for FCP-level decisions, which
199+
would presumably be relatively rare. At present there is a kind of
200+
implicit amount of "seniority" amongst members, where the opinions of
201+
people who have been around for longer are obviously given great
202+
weight, but formalizing this could have value.
203+
204+
**Specialists and organizers.** Right now, we don't draw a distinction
205+
between people who write code and those who (for example) perform more
206+
organizational roles (as of the time of this writing, we don't have
207+
any members who perform more organizational roles exclusively, but
208+
that is a likely future development). There will definitely be
209+
contributors who would rather not participate in the more
210+
organizational aspects of running the team, but would prefer to simply
211+
write code. As the team gets more and more organized, it seems likely
212+
that we may want to recognize this distinction, just to avoid things
213+
like pinging folks with organizational questions when they are not
214+
interested in that. But we could also address this by growing more
215+
kinds of groups within the set of members, such that one rarely pings
216+
the full set of members.
217+
218+
# Prior art
219+
[prior-art]: #prior-art
220+
221+
It would be good to include some survey of how other open source
222+
organizations manage themselves here.
223+
224+
# Unresolved questions
225+
[unresolved-questions]: #unresolved-questions
226+
227+
**Are "contributor" and "member" the best names to use?** The term
228+
"member" is used pretty universally amongst subteams to refer to
229+
"decision makers", so I wanted to stick to it, but I was tempted by
230+
other terms like "member" and "senior member".
231+
232+
**What set of privileges should be retained in alumni status?** For
233+
example, should you still have r+ privileges? I'm inclined to say no.
234+
235+
**What level of inactivity merits one for alumni status?** The RFC
236+
presently says 6 months, but that number was pulled out of a
237+
(metaphorical) hat.
238+
239+
# Future possibilities
240+
[future-possibilities]: #future-possibilities
241+
242+
In the future, it would be good to add an "active mentorship" plan for
243+
helping people move from contributor to full member.
244+

0 commit comments

Comments
 (0)