rust-lang / compiler-team

A home for compiler team planning documents, meeting minutes, and other such things.
https://rust-lang.github.io/compiler-team/
Apache License 2.0
386 stars 69 forks source link

Rustc Contributor Program Major Change Proposal #557

Closed doc-jones closed 1 year ago

doc-jones commented 2 years ago

Rustc Contributor Program

Purpose

We propose to run with a pilot version of the RustcContributor program described in this document. The pilot program targets the rust compiler specifically. Assuming it is successful, we expect it to evolve into a permanent program, and to broaden its reach to the stdlib and potentially other Rust projects. The goal is to create a structure for helping people to onboard and contribute to the Rust compiler.

The RustcContributor plan

The plan has three parts that target different experience levels:

Support from the compiler team

To support the program, we will need compiler team members to participate in various ways

Running the program itself

Organizing the project will also be a lot of work. With the support of the Rust foundation, we have recruited several people willing to serve as program managers for the pilot program. These people will...

Assuming the pilot is successful, we will eventually formalize this group into a team of some kind that can continue in a sustained fashion going forward.

First rustc, then expand

This program began as the "rustc reading club", with the idea that we would gather folks to sit down and read rustc code. We found that bridging the experience gaps for that exercise was too difficult, and thus we are proposing this more structured program.

Although this program builds on previous work, it is still very much experimental. A pilot will be run with the support of the Compiler Team and what we learn may be applied to other parts of rust-lang in the future.

Another expansion area of the program will provide alternate paths for graduates of the ::new program to follow. Some will decide to contribute in ways other than writing code. For example, some may want to contribute to the rust-dev-guide, and others may want to take on PM roles. These are additional paths that will be available to participants in the program.

The Rustc Contributor Program will run experimental cohorts described below. This first pilot will consist of ::new, ::grow, and ::explore cohorts.

Curriculum for ::new and ::grow

It is vital that the curriculum for ::new, and ::grow sessions that support graduates of ::new, are more prescribed to aid the instructors of these parts of the program. This will enable more compiler team members to participate as instructors. In areas where the level of expertise for instructors is lower the curriculum should be stronger and more prescribed.

RustcContributor::new

  1. Goals: Those who join a ::new cohort will learn the basics of being a contributor to rustc including the general structure of the compiler, the contribution submission process (e.g., build, diagnostics, and testing processes). Cohorts will also be introduced to documentation for the compiler like the rustc-dev-guide.
  2. Inputs
    • Cohort members will already know how to write code in Rust.
    • PM to guide the operations of ::new.
    • Compiler team instructors.
    • Mentors to staff office hours - 2 per session.
    • Defined curriculum.
    • Selection process.
    • Compute resources.
  3. Outcomes
    • Cohort members who attend all sessions of ::new will be prepared to join ::grow cohorts that are designed for new contributors.
    • Videos will be produced of some parts of ::new sessions. Q&A will not be recorded.

RustcContributor::grow

  1. Goals: Those who join a ::grow cohort will have an instructor-led series of tasks at a prescribed experience level (e.g., completed ::new, contributors to other areas of rust-lang) that allow them to understand a compiler module or process. One example of a ::grow cohort will focus on learning Pernosco for inspecting new (to them) code. A different session on Pernosco will focus on using the tool for debugging. Another example might be learning salsa or possibly the name resolver.
  2. Inputs
    • A qualified instructor recruited by the compiler team leads.
    • Prerequisite guidelines from the instructor.
    • Mentors to staff office hours - 2 per session.
    • Introduction to relevant documentation.
    • An appropriate set of tasks to meet the goals and outcomes for the session.
    • Compute resource.
  3. Outcomes
    • Cohort members who attend all sessions of an instance of ::grow will understand how to inspect and understand the module presented and confidently choose issues for contribution.
    • Videos will be produced of all ::grow sessions and shared publicly.

RustcContributor::explore

  1. Goals: Existing compiler contributors will use ::explore to build self forming cohorts to jointly poke at some compiler module that they want to understand better. Alternatively, compiler contributors will recruit a module expert/maintainer to lead them through a tour of the code and answer questions. This differs from ::grow as it requires expert level understanding of the compiler to join the cohort.
  2. Inputs: need thoughts of Felix, Wes and Niko here
  3. Outcomes: same as above
    • Videos

Measuring Success

  1. Goals: We need multiple checks to determine the progress of ::new, ::grow, and ::explore.
  2. Inputs
    • Retrospective for each cohort of ::new and ::grow at the end of the session.
    • Participation in a future ::grow cohort following completion of ::new.
    • Automated checks for contributons.
    • Survey 3 mos. following completion of ::new and ::grow.
  3. Outcomes
    • Data to provide insight into how the program is doing, reporting to stakeholders and the community, and/or changes that may need to be implemented.

Current Filled Roles

Development Tasks - some of these will be the result of early sessions

rustbot commented 2 years ago

This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed.

cc @rust-lang/compiler @rust-lang/compiler-contributors

sladyn98 commented 2 years ago

Hello, reading this issue seems like this program, has not yet been announced yet. I would like to volunteer to be part of the ::new program as a new contributor to the rust compiler, not sure if there is a timeline for this cohort to being. But excited to see this come to fruition.

doc-jones commented 2 years ago

Hello there @sladyn98! There is a stream on Zulip called RustcContributor::new where you can express your interest and also to get updates. I'm writing one right now. :)

apiraino commented 1 year ago

Closing MCP as per MCP process.

Seems the initiative started anyway and streaming are happening on Zulip on these streams:

apiraino commented 1 year ago

Reopening since the RustcContributor initiative MCp will be be updated after the pilots have completed (Zulip comment)

rustbot commented 1 year ago

This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed.

cc @rust-lang/compiler @rust-lang/compiler-contributors

pnkfelix commented 1 year ago

We discussed this MCP during today's T-compiler planning meeting, see: https://rust-lang.zulipchat.com/#narrow/stream/238009-t-compiler.2Fmeetings/topic/.5Bplanning.5D.202023-06-02/near/363063611

We decided that we are going to close this, not as a way to say "do not do this", but rather as a way to say "the team is not investing effort directly into this right now."

(I have some additional opinions on better ways to approach this going forward, you can see the linked zulip chat for some of those thoughts. But this github issue is for tracking administrivia, not technical details, so I'll leave it at that.)

but, p.s.: closing the MCP does not mean "no one is allowed to do anything in this space".

sladyn98 commented 1 year ago

Thanks to everyone that invested efforts in this program I had the privilege of attending some sessions and it has helped me bootstrap the compiler and get started on a bunch of PRs I am still a newbie by all means so If anyone is still interested or ever has ideas in this space, I would be interested in becoming a mentee and learning more.