Community.o Workshop @ US LLVM Dev Meeting 2023

We will be using this thread as an umbrella for the topics discussed during this workshop.

Please include in your post:

  • The areas of improvement your group discussed
  • Tasks and ideas to combat these problem areas
  • How to measure or observe the impact of these tasks

If applicable, please post action items on Issues · llvm/Community.o · GitHub

Agenda for the Community.o Workshop @ LLVM Developers’ Meeting 2023

LLVM serves as a foundation for many of the developer tools the world uses. It’s vital that our community reflects this diversity. In this guided discussion-based workshop, we will highlight core topics for improving and promoting Community.o’s mission in the field of compilers and tools. Developers from all backgrounds and levels of involvement should join us to ensure a large set of perspectives is represented. We encourage all individuals who work on compilers and tools to attend, even if you are already not directly involved in LLVM.

1 Like

We had a discussion about a process to change your name within LLVM. I went through this myself earlier this year and took the following steps:

  • I changed which GitHub account I had associated with LLVM. I made this change by emailing Chris Lattner and asking for the change.
  • I created new Discourse and Discord accounts under my new name.
  • We do have a mailmap in the llvm-project repository, if I had made more substantial contributions to LLVM under my old username I would consider checking in an entry to that to allow folks to find those old ones.

We talked about documenting this so that others can follow along. I had considered documenting this back when I did it, but didn’t feel there was enough here for it to be useful. Also, I think for folks who have greater contributions under their old name, creating new accounts wouldn’t be the right option for them.

Discussion on starter bugs for getting involved in the community:

There is some initial interest in good first issues, but then the developer doesn’t finish it. We discussed the following solutions.

  • Add a template for github issues to add some pointers for how to get started/ask for help and make it clear in template where/who to direct questions.
  • Lots of this issues have assignees that aren’t actively working on the issue. This might lead to other interested devs not picking up the issue.
  • Ideas for good first issues: issue writers add a test that should work (but doesn’t), modernizing tests, combine unnecessary for loops / clearly defined cleanups
  • Bad first issues: anything contentious in the community, open-ended, anything infra-related

The success of any of these suggestions could be measured by the number of good first issues closed by new users.

We had a discussion on moderation and how folks should handle possible difficult or unproductive communications regarding LLVM.

  • Theres not really a concept of moderators for code reviews, however it should be known and explicit that code owners are also responsible for possible moderation issues.
  • Similarly when folks join in subscriber groups there should be clear description of what is considered unproductive discourse and how to follow up similarly to the expectation shared to moderators.
  • There seems to be lack of visibility of who our moderators are. This may be a good sign because they are able to keep conversations productive without visible tension. On the other hand, its good that folks know who to follow up with.
  • Folks should feel encouraged to publicly acknowledge the existance of the LLVM Code of Conduct especially on a public discussion that appears unproductive. This has been proven to be very effective.
  • Theres previous precident of an individual that folks can go to get advise or feedback when they deal with possible conflicts. We could introduce this concept for folks, especially new comers.

We had a discussion on “How to get people enthusiastic to teach people about compilers (e.g. at universities)?”

My notes aren’t very structured, but hopefully it does record the most interesting ideas from the discussion

  • We could make “packaged” courses available - using LLVM.
  • Compilers are “invisible infrastructure/very backend”. front-end seems more attractive.
    • One story: going down the stack, starting from apps, then going down the stack as you discover issues, e.g. code size.
    • Seeing more women at the app level relatively than in framework/infrastructure/backend stuff.
  • Would be great to have real starter kits for compiler stuff. Maybe in a compiler container.
    • The kaleidoscope example is really great.
    • Need someone to show how to build a simple compiler e.g. WWDC.
  • There’s an assumption that everyone programs in C/C++. Main language learned is Python, not C.
    • Could we do Kaleidoscope in Python? pip could be good.
  • Is there an LLVM talk about Kaleidoscope?
    • Youtube video teaching LLVM basics. For example every week or month a new issue to talk about it.
    • Some kind of quick thing - meetup, walk people through “how to make a commit”. Would like to start doing that in person.
  • Different paths for “build a very simple compiler” and “change a thing”.
    • Can you trick people learning compilers that way?
  • A CTF (capture-the-flag) for compiler stuff. Build the best register allocator in 24 hours?
  • Can we make a board game that secretely teaches you how to create a compiler system?
  • A visualization of the data structure would be really good.
  • A swift playground for LLVM, with a character, walking through IR data structures etc.
  • Swift has many different conferences; LLVM only 2 (US and Euro)
    • Could we build on LLVM socials for that?
    • Could we support LLVM user groups or similar at universities? Like for example linux user groups exist.
    • Content needs to be available, but needs to be driven by local volunteers.
  • why people at the table started being interested in compilers:
    • requires problem solving/puzzles to solve.
    • idea that you could create a cmopiler from a spec.
    • idea that you can build a compiler without dependencies on other things.
    • Diving deeper into the stack.
    • Started by working on devops on compilers, as a result learning about compilers.
    • always interested in low-levels and parsing, lexing etc. Picked an advisor because he is a great person. Their focus is on compilers.
    • Found an advisor, happened to be in HPC and compilers.
  • Intimidating because people don’t know where to get started. Don’t even know which question to ask to get started.
  • Pair programming has worked really well with newcomers trying to implement a compiler pass.
  • There is a mailing list. Posting there is intimidating. Office hours help with that.
    • Maybe have office hours focussed on beginner tasks.
    • Could we post sample questions that people have asked in the past?
    • Could we point llvm.org main page to beginners categories on Discourse and Discord?
  • LLVM website old. Could we make LLVM a “product”.
  • Would be really nice to have a docker image for each part of LLVM.
    e.g. c++abi vs clang vs lld vs …
  • Should we create a GSoC/Outreachy project for someone who doesn’t know (much) about
    compilers to try getting started on LLVM; and let us know the pain points and take action
    on fixing those?
  • Should we have a smaller “LLVM getting started” repo?
    • Is it possible to have a “git clone” that only checks out subdirectories really needed to build a smaller checkout.