---
# System prepended metadata

title: 9/21 Rustc Contributor Program

---

# 9/21 Rustc Contributor Program

### Introductions of new Members
    - Santiago, PM for ::explore
    - Manish, work with Felix and Wes on public announcement of the program, 
        * Inside Rust blog post

### General Update from last meeting - Doc

#### What do we need for first trial run?

Our goal is to produce something of value and get some feedback. We want to do...

- 1 session of ::new sessions, which requires:
    * recruit cohort participants  -- jan will do it
    * make blog post / public announcement -- wesley/pnkfelix to author
    * develop curriculum -- today's goal: syllabus
    * teach the sessions -- today's goal: who will reruit person?
    * staff the office hours -- today's goal: who will reruit people?
- 3-4 sessions of ::grow sessions, which requires:
    * picking the sessions -- today's goal: who will drive this list of topics
    * developing the curriculum, running the session
- however many ::explore

After that, retrospective to evaluate how it went.


### MCP
    - Read the MCP (including new edits from Manish)
    - MCP discussion
    - Blockers if any
    - Approval of MCP (reflected by actions on the github issue)

https://github.com/rust-lang/compiler-team/issues/557

Time commitment for compiler-team people?

Consensus:

* Role of MCP is to help recruit folks from compiler team
    * to do that it needs more details
* We will edit it as we evolve plans with expected time commitments, syllabus, etc 
* The point where we aim to second is...
    * where we have enough people to run some sessions
* We don't need a seconded MCP to do things like create streams etc

### Curriculum for ::new and ::grow session that follows ::new
    - Discussion and decision on who will develop curriculum for ::new?
    - Discussion and decision on who will develop curriculum for ::grow
        that follows ::new?
    - Topics that must be included in ::new
    - Topics that must be inxluded in ::geow for ::new grada
    - Decision on when we can expect response from curriculum devs on
        when it can be delivered
    - Progress on recruiting volunteers for office hours, 2 per session
    
* oli developing a doc that covers the basics of getting started, covers, can form the basis for a ::new syllabus
    * building compiler
    * running tests
* would be useful to have new readings as part of the session
* for ::new, topics we want
    * building compiler
    * running tests
    * high-level concepts from the compiler (AST, HIR)
    * add a test
    * github conventions, especially rust-specific ones
        * how to claim an issue
        * how to open a PR, r? a team, etc
        * PR workflow
            * no merge commits
            * ...
* rustc-dev-guide is the current canonical source:
    * https://rustc-dev-guide.rust-lang.org/contributing.html
* pnkfelix to own `::new` curriculum, based on oli's work + other pieces described here
* blockers to get the process going
    * giving access to the cloud desktops (can take a few days)
* emerging consensus
    * give them setup steps they can do before-hand
    * but give them a space to fix the problems
        * (e.g., async Zulip stream, office hours)
        * office hour right before session for procrastinators :)
* Niko's proposal
    * record a video with setup instructions once
    * have office hours to follow up
    * do remaining sessions in person :) 
        * with office hours interspersed
* People:
    * Oli: authoring instruction doc with setup
    * Felix: to own content and instruction
    * Manish happy to participate for office hours
        * but unfamiliar with cloud desktop
        * but we'll need to recruit more people
    
### ::grow
    - Discussion and decision on number of ::grow sessions for first pilot
    - Discussion and decision on topics for ::grow
    - Discussion and decision on where pernos.co will be included in the program
    
* Run 3 to 4 sessions as part of pilot
* Brainstorm topics
    * Debugging rustc, how to understand what's going on <-- could be a candidate to immediately follow new
        * e.g., `RUSTC_LOG`, `-Ztreat-err-as-bug`, `RUST_BACKTRACE=1`, bisection
        * spelunking rustc -- orient around specific goals, things you might want to find
        * *but who?*
    * Writing a lint -- reach out to clippy team
    * The many ways rustc represents types (nikomatsakis)
        * AST, HIR, `Ty<'tcx>`, astconv
    * Using pernosco to explore code you're unfamiliar with
        * pnkfelix gave one at code reading club
    * Diagnostics
        * how to make pretty diagnostics
    * Tours of other areas of the code?
        * parser
        * ast -> HIR lowering
        * how does HIR work
        * name resolver
        * type inferencer
        * type checker
        * borrow checker
        * metadata :scream: 
* pernosco
    * ability for instructor upload traces to limit pernosco accounts required
    * maybe not a good fit for the pilot
* grow tasks
    * write out topics we intend to cover
        * try to have some variety of durations so we get more data
    * find instructors for each topic
    * find office hours volunteers
    * schedule them and announce the plans publicly
    * publish recording to youtube
    * need to have people signup (evite?), distribute link
        * select how we will limit size
* maximum size of grow cohort
    * 10? 20?
* need two things
    * someone to manage content (rustc knowledge needed)
    * more general PM tasks (scheduling, recording, evite etc) -- no rustc knowledge needed
* general plan
    * write-up a task summarizing outcome of this meeting and where help is needed
    * post to various zulip streams (perhaps tweaked)
        * #t-compiler/major-change-proposals -- the topic for the MCP in particular
        * #t-compiler 
        * #general ?
        * #RustcContributor::new / #RustcContributor::grow
    
    
### ::explore
    - discussion of how it will connect to the rest of the program 
        (e.g., each session run will include a retrospective)
    - discussion of the needs of explore (e.g., signup process, acceptance?)

* write-up for what it is, how it will run (spastorino / nikomatsakis)
* basic idea is 
    * run it on a cadence, have a few months planned in advance
    * no prep required
    * "come and talk about a part of the code you know well that others don't"
        * or jointly explore if nobody does :) 
* benefits from having this in program
    * can do retrospective
    * collecting artifacts, videos etc
    * rustc-dev-guide is the place for written stuff
    * `RustcContributor::*` is the place for more interactive content

### Working with PMs
    - Discussion with Jan and Santiago
    - Recommendations for progress reporting
    - Discuss development of ::new application and acceptance process
    - Templates for instructors
    
* `RustcContributor::admin` ?
* Discussions we can have
    * how are we going to collect progress from people involved, how do we publicly distribute it
    * what are acceptance criteria for new cohort (offline discussion)
* Templates for instructors
    * this will be more of an output from the program

### Compute desktops requirements
    - Admin account to execute rr traces with pernos.co on behalf of cohorts
    - cohort needs for ::new, ::grow, ::explore

(covered earlier)

### Number of Zoom licenses needed for 1st pilot
    - Number of instructors for ::new, ::grow and office hours
    - PMs and others

we have budget for this, let's do it!

---

I know a 2 hour meeting is a big block of time, but given the people who will be present I believe it is vital that we use this time to make decisions so that people building different parts of the program can begin their individual tasks. These decisions will require discussion, so hopefully we'll have enough time to clear blocking decisions. The PMs will then be in a position to track and report on our progress.

If you have any questions before the meeting, don't hesitate to private msg me on Zulip. If you think I've missed a topic that we should consider, private msg me.

NOTE: this meeting will be recorded for use by this group only. It will be password protected and available soon after the meeting. Private msg Jan if you need the password.

---
Add your name and your comments/questions below:




