Journeypeople (a draft)

Author

If you’re looking for someone to blame for the ideas in here, you can blame nikomatsakis. =) If you’re looking for someone to praise, then the meta wg team, since a lot of these ideas were drawn from others’ suggestions.

Links

Summary and goals

This document is a proposal for how to structure the compiler team. There are several goals: 
  • To add more levels and titles, so that we can more clearly recognize people for their efforts.
  • To clarify the expectations (and benefits) at each level.
  • To establish stronger mentorship pathways and create a clearer path for getting onto the compiler team.

Path to membership (draft)

  • Working group participant — a working group participant is basically somebody who has come to work on something for the first time. They have no particular privileges. They are assigned to issues using  the triagebot and (typically) work with a mentor or mentoring instructions. Gradually, they gain more experience, and they are nominated for…
  • Compiler team regular — a compiler-team regular is someone who has been around for a while. 
  • They have r+ privileges, and are asked to use them where appropriate.
  • They can be added to “review rotation” — or be asked to review?
  • Compiler team member-in-training — this is the final step before being added to the team. A member-in-training generally works with a compiler team member on some notable project. This might be coding work but it could be more organization or design-oriented. The project should demonstrate a deep understanding of some area of the compiler, but it need not be “new feature work” — refactorings etc would also make sense.
  • The member and project should be proposed beforehand to the team.
  • The member-in-training would be committing to work on the project, and the mentor is committing to meet with them regularly and play some part.
  • Compiler team member — a full and active member of the team 
  • Expectations?

Decision making


Name

I think the name “journeypeople” is not great. I would prefer a name that can be put on a business card. Some possibilities: 
  • Compiler Team Junior Member
  • Compiler Team Apprentice
  • Compiler Team Specialist (drawing on Army ranks)
  • Compiler Team Participant
  • Compiler Team Intern
  • Compiler Team Member
  • Here, I am pondering that perhaps we should rename the current “team members” to something like “senior members” or “full members”.
  • But this feels like a change where we would want to coordinate more across teams.

This is tied up perhaps in the overall structure of the compiler team. (In particular, I think it might behoove us to distinguish a few more rules.)

Vision

A journeyperson should be someone who
  • has participated in a compiler WG consistently and is ready to get more broadly involved;
  • is ready to commit a certain amount of time on an ongoing basis;
  • interesting in roles that go beyond merely hacking on PRs, but include other maintenance work;
  • would like to eventually become a full time member.

An ambitious proposal

In the most ambitious version of this proposal, each journeyperson would be paired with a full member (their “mentor”). Their mentor would commit to spending a certain amount of time mentoring, roughly like an intern mentor. They would mentor the journeyperson through a particular task or set of tasks. At the end of this, the journeyperson should be someone who can consider themselves an “expert” in a particular area of the compiler — or at least knowledgeable enough to answer most questions.

After doing one internship, or maybe two, journeyperson would be eligible for promotion to a member of the compiler. The expectation is that they would be added to the team, but this is not a guarantee. 

Challenges

A less ambitious proposal?

I was going to write a less ambitious variant here, but the more I think about it, the less I want to.