# Discourse Migration Guide 

## Current Status of Migration: Discourse is back online at a new URL: [https://discourse.llvm.org](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](https://llvm.discourse.group/) 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/
1. Click on "Sign Up" in the top right corner.
1. 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](https://discourse.mozilla.org/t/how-do-i-subscribe-to-categories-and-topics/16024)
* You can reply to a post, including quoting other peoples texts
  ([tested](https://llvm.discourse.group/t/email-interaction-with-discourse/3306/4) on GMail).
* [Quoting previous topics in an reply](https://meta.discourse.org/t/single-quote-block-dropped-in-email-reply/144802)
* 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](https://docs.discourse.org/#tag/Posts/paths/~1posts.json/post)
automatically from a script or tool, you can use the
[Discourse API](https://docs.discourse.org/).

### Who are the admins for Discourse?

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

### What is the reason for the migration?

See
[this email](https://lists.llvm.org/pipermail/llvm-dev/2021-June/150823.html)

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

If needed categories can have individual [security
settings](https://meta.discourse.org/t/how-to-use-category-security-settings-to-create-private-categories/87678)
to limit visibility and write permissions. Contact the
[admins](https://llvm.discourse.group/about) 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](https://github.com/llvm/llvm-iwg/issues).
