RFC - Setting up LLVM “office hours” and mentoring

Hi everyone,

We are exploring the idea of setting up “office hours” and mentoring with experienced people and mentors in the LLVM project.

The idea is that experienced LLVM contributors would make themselves available regularly (e.g. somewhere between once a week and once a month) to guide and support people with less experience. We hope this will lower the barrier for people to grow their skills in specific areas, or in how to contribute or use LLVM technology in general.

After having discussed this idea with code owners, it seems there is appetite for a number of different formats:

  1. Focused 1-1 mentoring, where a mentoring relationship is formed between a mentor and a mentee.
  2. Something that reflects “office hours”, i.e. an experienced person is available for a chat on a set schedule and anyone that shows up can ask questions. Multiple people with questions can be on the call at the same time.
  3. Experienced people documenting how and when they typically can be reached in online chat channels (e.g. Discord/IRC) and what topics their expertise is in.

Number (3) is obviously already happening, but probably many people don’t know who is available where and when, and with what expertise. Documenting this better would be a low-cost way to lower the barrier to find available experts.

A large number of code owners already expressed willingness to try out option (2).

I’ve seen a few people also express interest to be the mentor for option (1).

One could argue that the online meetups that are already happening are a variant of option (2).

In summary, the positive feedback I’ve received from many people suggests that we should go ahead and try and make mentoring and office hours a reality. I think the following are next steps needed to make this a reality:

  • We need a place to document the availability of mentors, office hours, online sync-ups and experts on chat channels clearly. Ideally this should be very easily discoverable from the LLVM home page.
    • As the details of who is available when and on what medium will likely change continuously, it’ll be important for individuals to be able to add/update/delete details.
    • We could take inspiration from Awesome Rust Mentors on what could be listed, such as area of expertise, languages spoken, maybe an indication of usual time zone, etc.
  • It’d be great if we could have a single online calendar showing all of the public meetings (so options (2), and online sync-ups).

A few more detailed thoughts I’ve had are:

  • I’m thinking that the mentor/host/expert gets to choose the communication channel used, such as Zoom, Google meet, Jitsi, Discord, IRC, or one of the many other options.
  • I’m imagining that some experts will focus on a particular deep/niche expertise (e.g. alias analysis); and other experts may be more broad (e.g. “AMA”/“any beginning contributor question”).

If you have further constructive ideas to progress this, or would volunteer to help explore the details on how to implement this, please let us know by replying.

Thanks,

Kristof

12 Likes

I think this is a great idea. When can we start? I’m interested in doing “office hours” for questions about the releases. Personally, I think Discord would be a good platform for this, either in the Release channel or in a separate Office Hours channel.

Thanks for the encouragement!
The “only” things that need to get organized, I think, are mechanisms to publish the available office hours:

  1. Find a way to publish a calendar of what sessions are available when. To be able to maintain this calendar well, I was thinking that this calendar should be editable by anyone who organizes an “office hour” or one of the other variants of sync-ups. I’m afraid I don’t know of a mechanism for a shared calendar that scales easily that way. My preliminary investigations/thoughts so far are:

    • For now, the best approximation I can think of is to store an ICS file for each individual series of "office hour"s somewhere in a sub-directory of llvm-project/llvm/docs at main · llvm/llvm-project · GitHub. That way, everyone with commit access to LLVM could modify them. Hopefully that’s a reasonable approximation of “everyone who organizes an office hour series should have the ability to update the corresponding public calendar”.

    • ICS files don’t seem to be trivial to write by hand, but it also doesn’t seem to be overly hard to copy paste from a template and adapt values by hand, so I guess that part could work.

    • I’m also assuming that when the content of an .ics file published at a fixed URL is changed that calendar software somehow can detect that and fetch the updates (I’m actually not sure about that, have not investigated it yet).

    • Ideally, we should also show a calendar widget at some place on the website that aggregates all data in the ICS files, so that on the website there is an overview of all “Community activity”. As a side thought, we could also show e.g. in-person meetups across the world, dev-meetings etc in there.

  2. We probably need a “list view” somewhere on the website that enumerates all available office hours. This could be modeled after the existing list view for online sync-ups at Getting Involved — LLVM 15.0.0git documentation

  3. We’ll need some documentation on the above mechanisms so that someone volunteering to run an office hour series can advertize it in the central location easily.

I’m afraid I currently have limited experience and time to explore the above, so if anyone has suggestions or ideas, I’m all ears!
My investigations so far suggest that there is no de facto default way to achieve something like what I described above. We may need to write a little bit of tooling ourselves to automate the most manual or error-prone parts of keeping published information in sync and correct. But I hope we can avoid writing custom tooling as much as possible.

In summary, I think there is nothing stopping you from setting up a specific “office hours”, apart from there not really being a default way to advertize it at the moment.

Maybe your specific “release questions” office hours could be started without any of the above ideas implemented, by announcing it on Discourse and adding an entry describing it to Getting Involved — LLVM 15.0.0git documentation?

1 Like

Hi @kbeyls , I think that this is a great initiative, thanks for driving this!

I don’t mean to side-track this discussion, but it sounds like the main challenge at the moment is finding a good way to have a shared calendar. This could be worked around by not publishing one at all :slight_smile: The idea behind a shared calendar is only really required for Option (2), but I think that a mix of Option (1) (2) and (3) might work better. Personally, I’d rather make myself available on ad-hoc basis with the idea that I’d always respond within e.g. one day.

I looked at Awesome Rust Mentors again and perhaps publishing something similar would be sufficient? And if people want to make themselves available at a particular time, it could be mentioned in a document like that. Or, the idea of a “shared calendar” could be re-visited later (when people have better idea what works well and what does not work that well).

In other words, one could first compile a list of people willing to make themselves available (with their topics of interest/expertise, timezones and preferred forms of communication). Next (at some unspecified later time), a shared-calendar could be introduced.

Just my 2p!

-Andrzej

1 Like

You’re absolutely right of course @banach-space . I was probably too focused on getting all things setup rather than looking at how to incrementally implement this.
I plan to have a patch review up soon that documents office hours on the LLVM website, and leaving the problem of having a shared calendar for later.

Thanks!

Kristof

I’ve just posted ⚙ D120036 Create office hours documentation. for review, which introduces a table on the website listing office hours that are available. Please do have a look there and make suggestions there or here on how to further improve the proposed structure and wording for documenting available office hours.

1 Like

Thank you for starting this discussion!
The ideas proposed sounds great to me and kicking off with independent office hours seems like a good place to start.

Here’s one possible alternative to the office hours documentation: use a separate page with the name/time/date/calendar information. Either include the list of topics of rely on CREDITS.txt for areas of focus.
I’m inclined to prefer the option in D120036 at this point, but if it gets too long I’d switch to either a subpage to the GettingInvolved or a file alongside the CREDITS/CODE_OWNER pages.

Thanks for the review, @alina. I’ve just committed the patch.
Others who are interested in hosting an office hour should now be able to easily add their own info too.

Indeed, if the list gets too long, we can explore other options such as having the list on a separate page.
I think that once the list has a few more entries, we should explore if we should call out the list more clearly from the llvm.org front page.

Thank you @kbeyls!