# Discourse Migration Guide

## Current Status of Migration: Discourse is back online at a new URL: https://discourse.llvm.org. The old one still works as well. We are aware of an issue with reply by email to emails from before the merge. We will update once we know more.

This document is intended to help LLVM users to migrate from the mailing lists to Discourse. Discourse has two basic ways for interaction: Via the web UI and via emails.

## Setting up your account

The easiest way is to create an account using your GitHub account:

1. Navigate to https://llvm.discourse.group/

2. Click on “Sign Up” in the top right corner.

3. Choose “With GitHub” on the right side and log in with your GitHub account.

## Structure of Discourse

Discourse’s structure is similar to a set of mailing lists, however different terms are used there. To help with the transition, here’s a translation table for the terms:

Mailing list | Discourse
--- | ---
Mailing list, consists of threads | category, consists of topics
thread, consists of emails | topic, consists of posts
email | post

## Setting up email interactions

Some folks want to interact with Discourse purely via their email program. Here are the typical use cases:

- You can subscribe to a category or topic

- You can reply to a post, including quoting other peoples texts (tested on GMail).

- Quoting previous topics in an reply

- You can filter incoming emails in your email client by category using the `List-ID` email header field.

- You can create topics through email using the email address that is specific to the category. Each category description shows the email address to use, or you can use the mapping below.

## Mapping of email addresses to Discourse categories

Use these email addresses to create a topic by email in the specific discourse category. You must have a Discourse account associated with the email address you are sending from or the email will be rejected.

Discourse Category | Email Address
--- | ---
Beginner | beginners@discourse.llvm.org
LLVM Project | llvmproject@discourse.llvm.org
IR & Optimizations | IR.Optimizations@discourse.llvm.org
IR & Optimizations - Loop Optimizations | IR.Optimizations-Loops@discourse.llvm.org
Code Generation | codegen@discourse.llvm.org
Code Generation - AMDGPU | codegen-amdgpu@discourse.llvm.org
Code Generation - Common Infrastructure | codegen-common@discourse.llvm.org
Code Generation - AArch64 | codegen-aarch64@discourse.llvm.org
Code Generation - Arm | codegen-arm@discourse.llvm.org
Code Generation - PowerPC | codegen-powerpc@discourse.llvm.org
Code Generation - RISCV | codegen-riscv@discourse.llvm.org
Code Generation - WebAssembly | codegen-webassembly@discourse.llvm.org
Code Generation - X86 | codegen-x86@discourse.llvm.org
Clang Frontend | clang@discourse.llvm.org
Clang Frontend - Using Clang | clang-users@discourse.llvm.org
Clang Frontend - clangd | clangd@discourse.llvm.org
Clang Frontend - Building Clang | clang-build@discourse.llvm.org
Clang Frontend - Static Analyzer | clang-staticanalyzer@discourse.llvm.org
Runtimes | runtimes@discourse.llvm.org
Runtimes - C++ | runtimes-cxx@discourse.llvm.org
Runtimes - Sanitizers | runtimes-sanitizers@discourse.llvm.org
Runtimes - C | runtimes-c@discourse.llvm.org
Runtimes - OpenMP | runtimes-openmp@discourse.llvm.org
Runtimes - OpenCL | runtimes-opencl@discourse.llvm.org
MLIR | mlir@discourse.llvm.org
MLIR - Announce | mlir-announce@discourse.llvm.org
MLIR - Newsletter | mlir-news@discourse.llvm.org
MLIR - TCP-WG | mlir-tcpwg@discourse.llvm.org
Subprojects | subprojects@discourse.llvm.org
Subprojects - Polly | polly@discourse.llvm.org
Subprojects - LLDB | lldb@discourse.llvm.org
Subprojects - LLD | lld@discourse.llvm.org
Subprojects - Flang | flang@discourse.llvm.org
Subprojects - Bolt | bolt@discourse.llvm.org
Project Infrastructure | infra@discourse.llvm.org
Project Infrastructure - Release Testers | infra-release-testers@discourse.llvm.org
Project Infrastructure - Website | infra-website@discourse.llvm.org
Project Infrastructure - Documentation | infra-docs@discourse.llvm.org
Project Infrastructure - GitHub | infra-github@discourse.llvm.org
Project Infrastructure - Code Review | infra-codereview@discourse.llvm.org
Project Infrastructure - Discord | infra-discord@discourse.llvm.org
Project Infrastructure - Mailing Lists and Forums | infra-mailinglists@discourse.llvm.org
Project Infrastructure - IRC | infra-irc@discourse.llvm.org
Project Infrastructure - Infrastructure Working Group | infra-iwg@discourse.llvm.org
Community | community@discourse.llvm.org
Community - Women in Compilers and Tools | wict@discourse.llvm.org
Community - Job Postings | community-jobs@discourse.llvm.org
Community - US LLVM Developers' Meeting | devmtg-US@discourse.llvm.org
Community - EuroLLVM | devmtg-euro@discourse.llvm.org
Community - GSOC | gsoc@discourse.llvm.org
Community - Community.o | community-dot-o@discourse.llvm.org
Community - LLVM Foundation | foundation@discourse.llvm.org
Community - Newsletters | newsletters@discourse.llvm.org
Incubator | incubator@discourse.llvm.org
Incubator - CIRCT | circt@discourse.llvm.org
Incubator - Torch-MLIR | torch-mlir@discourse.llvm.org
Incubator - Enzyme | enzyme@discourse.llvm.org
Feedback | feedback@discourse.llvm.org

## Mapping of mailing lists to categories

This table explains the mapping from mailing lists to categories in Discourse. The email addresses of these categories will remain the same, after the migration. Obsolete lists will become read-only as part of the Discourse migration.

Mailing lists | Category in Discourse
--- | ---
All-commits | no migration at the moment
Bugs-admin | no migration at the moment
cfe-commits | no migration at the moment
cfe-dev | Clang Frontend
cfe-users | Clang Frontend/Using Clang
clangd-dev | Clang Frontend/clangd
devmtg-organizers | Obsolete
Docs | Obsolete
eurollvm-organizers | Obsolete
flang-commits | no migration at the moment
flang-dev | Subprojects/Flang Fortran Frontend
gsoc | Obsolete
libc-commits | no migration at the moment
libc-dev | Runtimes/C
Libclc-dev | Runtimes/OpenCL
libcxx-bugs | no migration at the moment
libcxx-commits | no migration at the moment
libcxx-dev | Runtimes/C++
lldb-commits | no migration at the moment
lldb-dev | Subprojects/lldb
llvm-admin | no migration at the moment
llvm-announce | Announce
llvm-branch-commits | no migration at the moment
llvm-bugs | no migration at the moment
llvm-commits | no migration at the moment
llvm-dev | Project Infrastructure/LLVM Dev List Archives
llvm-devmeeting | Community/US Developer Meeting
llvm-foundation | Community/LLVM Foundation
Mlir-commits | no migration at the moment
Openmp-commits | no migration at the moment
Openmp-dev | Runtimes/OpenMP
Parallel_libs-commits | no migration at the moment
Parallel_libs-dev | Runtimes/C++
Release-testers | Project Infrastructure/Release Testers
Test-list | Obsolete
vmkit-commits | Obsolete
WiCT | Community/Women in Compilers and Tools
www-scripts | Obsolete

## FAQ

### I don’t want to use a web UI

You can do most of the communication with your email client (see section on Setting up email interactions above). You only need to set up your account once and then configure which categories you want to subscribe to.

### How do I send a private message?

On the mailing list you have the opportunity to reply only to the sender of the email, not to the entire list. That is not supported when replying via email on Discourse. However you can send someone a private message via the Web UI: Click on the user’s name above a post and then on `Message`.

Also Discourse does not expose users’ email addresses , so your private replies have to go through their platform (unless you happen to know the email address of the user.)

### How can my script/tool send automatic messages?**

In case you want to create a new post/topic automatically from a script or tool, you can use the Discourse API.

### Who are the admins for Discourse?

See https://llvm.discourse.group/about

### What is the reason for the migration?

See this email

### How do I set up a private mailing list?

If needed categories can have individual security settings to limit visibility and write permissions. Contact the admins if you need such a category.

### What will happen to our email archives?

The Mailman archives will remain on the web server for now.

### What are advantages of Discourse over the current mailing lists?

- Users can post to any category, also without being subscribed.

- Full text search on the Web UI.

- Sending/replying via the Web UI (email is still possible).

- View entire thread on one page.

- Categories are a more light-weight option to structure the discussions than creating new mailing lists.

- Single sign on with GitHub.

- User email addresses are kept private.

### I have another question not covered here. What should I do?

Please contact iwg@llvm.org or raise a ticket on GitHub.