1645c845dSTanya Lattner# Discourse Migration Guide 2645c845dSTanya Lattner 3645c845dSTanya LattnerThis document is intended to help LLVM users to migrate from the mailing lists to 4645c845dSTanya LattnerDiscourse. Discourse has two basic ways for interaction: Via the [web 5645c845dSTanya LattnerUI](https://llvm.discourse.group/) and via emails. 6645c845dSTanya Lattner 7645c845dSTanya Lattner## Setting up your account 8645c845dSTanya Lattner 9645c845dSTanya LattnerThe easiest way is to create an account using your GitHub account: 10645c845dSTanya Lattner 11645c845dSTanya Lattner1. Navigate to https://llvm.discourse.group/ 12645c845dSTanya Lattner1. Click on "Sign Up" in the top right corner. 13645c845dSTanya Lattner1. Choose "With GitHub" on the right side and log in with your GitHub account. 14645c845dSTanya Lattner 15645c845dSTanya Lattner## Structure of Discourse 16645c845dSTanya Lattner 17645c845dSTanya LattnerDiscourse's structure is similar to a set of mailing lists, however different 18645c845dSTanya Lattnerterms are used there. To help with the transition, here's a translation table 19645c845dSTanya Lattnerfor the terms: 20645c845dSTanya Lattner 21645c845dSTanya Lattner<table border=1> 22645c845dSTanya Lattner<tr><th>Mailing list</th><th>Discourse</th></tr> 23645c845dSTanya Lattner<tr><td><i>Mailing list</i>, consists of threads</td><td><i>category</i>, consists of topics</td></tr> 24645c845dSTanya Lattner<tr><td><i>thread</i>, consists of emails</td><td><i>topic</i>, consists of posts</td></tr> 25645c845dSTanya Lattner<tr><td>email</td><td>post</td></tr> 26645c845dSTanya Lattner</table> 27645c845dSTanya Lattner 28645c845dSTanya Lattner## Setting up email interactions 29645c845dSTanya Lattner 30645c845dSTanya LattnerSome folks want to interact with Discourse purely via their email program. Here 31645c845dSTanya Lattnerare the typical use cases: 32645c845dSTanya Lattner 33645c845dSTanya Lattner* You can [subscribe to a category or topic](https://discourse.mozilla.org/t/how-do-i-subscribe-to-categories-and-topics/16024) 34645c845dSTanya Lattner* You can reply to a post, including quoting other peoples texts 35645c845dSTanya Lattner ([tested](https://llvm.discourse.group/t/email-interaction-with-discourse/3306/4) on GMail). 36645c845dSTanya Lattner* [Quoting previous topics in an reply](https://meta.discourse.org/t/single-quote-block-dropped-in-email-reply/144802) 37645c845dSTanya Lattner* You can filter incoming emails in your email client by category using the 38645c845dSTanya Lattner `List-ID` email header field. 39*586759ceSTanya Lattner* 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. 40*586759ceSTanya Lattner 41*586759ceSTanya Lattner## Mapping of email addresses to Discourse categories 42*586759ceSTanya Lattner 43*586759ceSTanya LattnerUse 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. 44*586759ceSTanya Lattner 45*586759ceSTanya Lattner<table border=1> 46*586759ceSTanya Lattner<tr><th>Discourse Category</th><th>Email Address</th></tr> 47*586759ceSTanya Lattner<tr><td>Beginner</td><td>[email protected]</td></tr> 48*586759ceSTanya Lattner<tr><td>LLVM Project</td><td>[email protected]</td></tr> 49*586759ceSTanya Lattner<tr><td>IR & Optimizations</td><td>[email protected]</td></tr> 50*586759ceSTanya Lattner<tr><td>IR & Optimizations - Loop Optimizations</td><td>[email protected]</td></tr> 51*586759ceSTanya Lattner<tr><td>Code Generation</td><td>[email protected]</td></tr> 52*586759ceSTanya Lattner<tr><td>Code Generation - AMDGPU</td><td>[email protected]</td></tr> 53*586759ceSTanya Lattner<tr><td>Code Generation - Common Infrastructure</td><td>[email protected]</td></tr> 54*586759ceSTanya Lattner<tr><td>Code Generation - AArch64</td><td>[email protected]</td></tr> 55*586759ceSTanya Lattner<tr><td>Code Generation - Arm</td><td>[email protected]</td></tr> 56*586759ceSTanya Lattner<tr><td>Code Generation - PowerPC</td><td>[email protected]</td></tr> 57*586759ceSTanya Lattner<tr><td>Code Generation - RISCV</td><td>[email protected]</td></tr> 58*586759ceSTanya Lattner<tr><td>Code Generation - WebAssembly</td><td>[email protected]</td></tr> 59*586759ceSTanya Lattner<tr><td>Code Generation - X86</td><td>[email protected]</td></tr> 60*586759ceSTanya Lattner<tr><td>Clang Frontend</td><td>[email protected]</td></tr> 61*586759ceSTanya Lattner<tr><td>Clang Frontend - Using Clang</td><td>[email protected]</td></tr> 62*586759ceSTanya Lattner<tr><td>Clang Frontend - clangd</td><td>[email protected]</td></tr> 63*586759ceSTanya Lattner<tr><td>Clang Frontend - Building Clang</td><td>[email protected]</td></tr> 64*586759ceSTanya Lattner<tr><td>Clang Frontend - Static Analyzer</td><td>[email protected]</td></tr> 65*586759ceSTanya Lattner<tr><td>Runtimes</td><td>[email protected]</td></tr> 66*586759ceSTanya Lattner<tr><td>Runtimes - C++</td><td>[email protected]</td></tr> 67*586759ceSTanya Lattner<tr><td>Runtimes - Sanitizers</td><td>[email protected]</td></tr> 68*586759ceSTanya Lattner<tr><td>Runtimes - C</td><td>[email protected]</td></tr> 69*586759ceSTanya Lattner<tr><td>Runtimes - OpenMP</td><td>[email protected]</td></tr> 70*586759ceSTanya Lattner<tr><td>Runtimes - OpenCL</td><td>[email protected]</td></tr> 71*586759ceSTanya Lattner<tr><td>MLIR</td><td>[email protected]</td></tr> 72*586759ceSTanya Lattner<tr><td>MLIR - Announce</td><td>[email protected]</td></tr> 73*586759ceSTanya Lattner<tr><td>MLIR - Newsletter</td><td>[email protected]</td></tr> 74*586759ceSTanya Lattner<tr><td>MLIR - TCP-WG</td><td>[email protected]</td></tr> 75*586759ceSTanya Lattner<tr><td>Subprojects</td><td>[email protected]</td></tr> 76*586759ceSTanya Lattner<tr><td>Subprojects - Polly</td><td>[email protected]</td></tr> 77*586759ceSTanya Lattner<tr><td>Subprojects - LLDB</td><td>[email protected]</td></tr> 78*586759ceSTanya Lattner<tr><td>Subprojects - LLD</td><td>[email protected]</td></tr> 79*586759ceSTanya Lattner<tr><td>Subprojects - Flang</td><td> [email protected]</td></tr> 80*586759ceSTanya Lattner<tr><td>Subprojects - Bolt</td><td>[email protected]</td></tr> 81*586759ceSTanya Lattner<tr><td>Project Infrastructure</td><td>[email protected]</td></tr> 82*586759ceSTanya Lattner<tr><td>Project Infrastructure - Release Testers</td><td>[email protected]</td></tr> 83*586759ceSTanya Lattner<tr><td>Project Infrastructure - Website</td><td>[email protected]</td></tr> 84*586759ceSTanya Lattner<tr><td>Project Infrastructure - Documentation</td><td> [email protected]</td></tr> 85*586759ceSTanya Lattner<tr><td>Project Infrastructure - GitHub</td><td>[email protected]</td></tr> 86*586759ceSTanya Lattner<tr><td>Project Infrastructure - Code Review</td><td>[email protected]</td></tr> 87*586759ceSTanya Lattner<tr><td>Project Infrastructure - Discord</td><td>[email protected]</td></tr> 88*586759ceSTanya Lattner<tr><td>Project Infrastructure - Mailing Lists and Forums</td><td>[email protected]</td></tr> 89*586759ceSTanya Lattner<tr><td>Project Infrastructure - IRC</td><td> [email protected]</td></tr> 90*586759ceSTanya Lattner<tr><td>Project Infrastructure - Infrastructure Working Group</td><td>[email protected]</td></tr> 91*586759ceSTanya Lattner<tr><td>Community</td><td>[email protected]</td></tr> 92*586759ceSTanya Lattner<tr><td>Community - Women in Compilers and Tools</td><td>[email protected]</td></tr> 93*586759ceSTanya Lattner<tr><td>Community - Job Postings</td><td>[email protected]</td></tr> 94*586759ceSTanya Lattner<tr><td>Community - US LLVM Developers' Meeting</td><td>[email protected]</td></tr> 95*586759ceSTanya Lattner<tr><td>Community - EuroLLVM</td><td>[email protected]</td></tr> 96*586759ceSTanya Lattner<tr><td>Community - GSOC</td><td>[email protected]</td></tr> 97*586759ceSTanya Lattner<tr><td>Community - Community.o</td><td>[email protected]</td></tr> 98*586759ceSTanya Lattner<tr><td>Community - LLVM Foundation</td><td>[email protected]</td></tr> 99*586759ceSTanya Lattner<tr><td>Community - Newsletters</td><td>[email protected]</td></tr> 100*586759ceSTanya Lattner<tr><td>Incubator</td><td>[email protected]</td></tr> 101*586759ceSTanya Lattner<tr><td>Incubator - CIRCT</td><td>[email protected]</td></tr> 102*586759ceSTanya Lattner<tr><td>Incubator - Torch-MLIR</td><td>[email protected]</td></tr> 103*586759ceSTanya Lattner<tr><td>Incubator - Enzyme</td><td>[email protected]</td></tr> 104*586759ceSTanya Lattner<tr><td>Feedback</td><td>[email protected]</td></tr> 105*586759ceSTanya Lattner</table> 106645c845dSTanya Lattner 107645c845dSTanya Lattner## Mapping of mailing lists to categories 108645c845dSTanya Lattner 109645c845dSTanya LattnerThis table explains the mapping from mailing lists to categories in Discourse. 110645c845dSTanya LattnerThe email addresses of these categories will remain the same, after the 111645c845dSTanya Lattnermigration. Obsolete lists will become read-only as part of the Discourse 112645c845dSTanya Lattnermigration. 113645c845dSTanya Lattner 114645c845dSTanya Lattner 115645c845dSTanya Lattner<table border=1> 116645c845dSTanya Lattner<tr><th>Mailing lists</th><th>Category in Discourse</th></tr> 117645c845dSTanya Lattner 118645c845dSTanya Lattner<tr><td>All-commits</td><td>no migration at the moment</td></tr> 119645c845dSTanya Lattner<tr><td>Bugs-admin</td><td>no migration at the moment</td></tr> 120645c845dSTanya Lattner<tr><td>cfe-commits</td><td>no migration at the moment</td></tr> 121645c845dSTanya Lattner<tr><td>cfe-dev</td><td>Clang Frontend</td></tr> 122645c845dSTanya Lattner<tr><td>cfe-users</td><td>Clang Frontend/Using Clang</td></tr> 123645c845dSTanya Lattner<tr><td>clangd-dev</td><td>Clang Frontend/clangd</td></tr> 124645c845dSTanya Lattner<tr><td>devmtg-organizers</td><td>Obsolete</td></tr> 125645c845dSTanya Lattner<tr><td>Docs</td><td>Obsolete</td></tr> 126645c845dSTanya Lattner<tr><td>eurollvm-organizers</td><td>Obsolete</td></tr> 127645c845dSTanya Lattner<tr><td>flang-commits</td><td>no migration at the moment</td></tr> 128645c845dSTanya Lattner<tr><td>flang-dev</td><td>Subprojects/Flang Fortran Frontend</td></tr> 129645c845dSTanya Lattner<tr><td>gsoc</td><td>Obsolete</td></tr> 130645c845dSTanya Lattner<tr><td>libc-commits</td><td>no migration at the moment</td></tr> 131645c845dSTanya Lattner<tr><td>libc-dev</td><td>Runtimes/C</td></tr> 132645c845dSTanya Lattner<tr><td>Libclc-dev</td><td>Runtimes/OpenCL</td></tr> 133645c845dSTanya Lattner<tr><td>libcxx-bugs</td><td>no migration at the moment</td></tr> 134645c845dSTanya Lattner<tr><td>libcxx-commits</td><td>no migration at the moment</td></tr> 135645c845dSTanya Lattner<tr><td>libcxx-dev</td><td>Runtimes/C++</td></tr> 136645c845dSTanya Lattner<tr><td>lldb-commits</td><td>no migration at the moment</td></tr> 137645c845dSTanya Lattner<tr><td>lldb-dev</td><td>Subprojects/lldb</td></tr> 138645c845dSTanya Lattner<tr><td>llvm-admin</td><td>no migration at the moment</td></tr> 139645c845dSTanya Lattner<tr><td>llvm-announce</td><td>Announce</td></tr> 140645c845dSTanya Lattner<tr><td>llvm-branch-commits</td><td>no migration at the moment</td></tr> 141645c845dSTanya Lattner<tr><td>llvm-bugs</td><td>no migration at the moment</td></tr> 142645c845dSTanya Lattner<tr><td>llvm-commits</td><td>no migration at the moment</td></tr> 143645c845dSTanya Lattner<tr><td>llvm-dev</td><td>Project Infrastructure/LLVM Dev List Archives</td></tr> 144645c845dSTanya Lattner<tr><td>llvm-devmeeting</td><td>Community/US Developer Meeting</td></tr> 145645c845dSTanya Lattner<tr><td>llvm-foundation</td><td>Community/LLVM Foundation</td></tr> 146645c845dSTanya Lattner<tr><td>Mlir-commits</td><td>no migration at the moment</td></tr> 147645c845dSTanya Lattner<tr><td>Openmp-commits</td><td>no migration at the moment</td></tr> 148645c845dSTanya Lattner<tr><td>Openmp-dev</td><td>Runtimes/OpenMP</td></tr> 149645c845dSTanya Lattner<tr><td>Parallel_libs-commits</td><td>no migration at the moment</td></tr> 150645c845dSTanya Lattner<tr><td>Parallel_libs-dev</td><td>Runtimes/C++</td></tr> 151645c845dSTanya Lattner<tr><td>Release-testers</td><td>Project Infrastructure/Release Testers</td></tr> 152645c845dSTanya Lattner<tr><td>Test-list</td><td>Obsolete</td></tr> 153645c845dSTanya Lattner<tr><td>vmkit-commits</td><td>Obsolete</td></tr> 154645c845dSTanya Lattner<tr><td>WiCT</td><td>Community/Women in Compilers and Tools</td></tr> 155645c845dSTanya Lattner<tr><td>www-scripts</td><td>Obsolete</td></tr> 156645c845dSTanya Lattner</table> 157645c845dSTanya Lattner 158645c845dSTanya Lattner 159645c845dSTanya Lattner## FAQ 160645c845dSTanya Lattner 161645c845dSTanya Lattner### I don't want to use a web UI 162645c845dSTanya Lattner 163645c845dSTanya LattnerYou can do most of the communication with your email client (see section on 164645c845dSTanya LattnerSetting up email interactions above). You only need to set up your account once 165645c845dSTanya Lattnerand then configure which categories you want to subscribe to. 166645c845dSTanya Lattner 167645c845dSTanya Lattner### How do I send a private message? 168645c845dSTanya Lattner 169645c845dSTanya LattnerOn the mailing list you have the opportunity to reply only to the sender of 170645c845dSTanya Lattnerthe email, not to the entire list. That is not supported when replying via 171645c845dSTanya Lattneremail on Discourse. However you can send someone a private message via the 172645c845dSTanya LattnerWeb UI: Click on the user's name above a post and then on `Message`. 173645c845dSTanya Lattner 174645c845dSTanya LattnerAlso Discourse does not expose users' email addresses , so your private 175645c845dSTanya Lattnerreplies have to go through their platform (unless you happen to know the 176645c845dSTanya Lattneremail address of the user.) 177645c845dSTanya Lattner 178645c845dSTanya Lattner### How can my script/tool send automatic messages?** 179645c845dSTanya Lattner 180645c845dSTanya LattnerIn case you want to [create a new 181645c845dSTanya Lattnerpost/topic](https://docs.discourse.org/#tag/Posts/paths/~1posts.json/post) 182645c845dSTanya Lattnerautomatically from a script or tool, you can use the 183645c845dSTanya Lattner[Discourse API](https://docs.discourse.org/). 184645c845dSTanya Lattner 185645c845dSTanya Lattner### Who are the admins for Discourse? 186645c845dSTanya Lattner 187645c845dSTanya LattnerSee https://llvm.discourse.group/about 188645c845dSTanya Lattner 189645c845dSTanya Lattner### What is the reason for the migration? 190645c845dSTanya Lattner 191645c845dSTanya LattnerSee 192645c845dSTanya Lattner[this email](https://lists.llvm.org/pipermail/llvm-dev/2021-June/150823.html) 193645c845dSTanya Lattner 194645c845dSTanya Lattner### How do I set up a private mailing list? 195645c845dSTanya Lattner 196645c845dSTanya LattnerIf needed categories can have individual [security 197645c845dSTanya Lattnersettings](https://meta.discourse.org/t/how-to-use-category-security-settings-to-create-private-categories/87678) 198645c845dSTanya Lattnerto limit visibility and write permissions. Contact the 199645c845dSTanya Lattner[admins](https://llvm.discourse.group/about) if you need such a category. 200645c845dSTanya Lattner 201645c845dSTanya Lattner### What will happen to our email archives? 202645c845dSTanya Lattner 203645c845dSTanya LattnerThe Mailman archives will remain on the web server for now. 204645c845dSTanya Lattner 205645c845dSTanya Lattner### What are advantages of Discourse over the current mailing lists? 206645c845dSTanya Lattner 207645c845dSTanya Lattner* Users can post to any category, also without being subscribed. 208645c845dSTanya Lattner* Full text search on the Web UI. 209645c845dSTanya Lattner* Sending/replying via the Web UI (email is still possible). 210645c845dSTanya Lattner* View entire thread on one page. 211645c845dSTanya Lattner* Categories are a more light-weight option to structure the discussions than 212645c845dSTanya Lattner creating new mailing lists. 213645c845dSTanya Lattner* Single sign on with GitHub. 214645c845dSTanya Lattner* User email addresses are kept private. 215645c845dSTanya Lattner 216645c845dSTanya Lattner### I have another question not covered here. What should I do? 217645c845dSTanya Lattner 218645c845dSTanya LattnerPlease contact [email protected] or raise a 219645c845dSTanya Lattner[ticket on GitHub](https://github.com/llvm/llvm-iwg/issues). 220