1# Discourse Migration Guide
2
3This document is intended to help LLVM users to migrate from the mailing lists to
4Discourse. Discourse has two basic ways for interaction: Via the [web
5UI](https://llvm.discourse.group/) and via emails.
6
7## Setting up your account
8
9The easiest way is to create an account using your GitHub account:
10
111. Navigate to https://llvm.discourse.group/
121. Click on "Sign Up" in the top right corner.
131. Choose "With GitHub" on the right side and log in with your GitHub account.
14
15## Structure of Discourse
16
17Discourse's structure is similar to a set of mailing lists, however different
18terms are used there. To help with the transition, here's a translation table
19for the terms:
20
21<table border=1>
22<tr><th>Mailing list</th><th>Discourse</th></tr>
23<tr><td><i>Mailing list</i>, consists of threads</td><td><i>category</i>, consists of topics</td></tr>
24<tr><td><i>thread</i>, consists of emails</td><td><i>topic</i>, consists of posts</td></tr>
25<tr><td>email</td><td>post</td></tr>
26</table>
27
28## Setting up email interactions
29
30Some folks want to interact with Discourse purely via their email program. Here
31are the typical use cases:
32
33* You can [subscribe to a category or topic](https://discourse.mozilla.org/t/how-do-i-subscribe-to-categories-and-topics/16024)
34* You can reply to a post, including quoting other peoples texts
35  ([tested](https://llvm.discourse.group/t/email-interaction-with-discourse/3306/4) on GMail).
36* [Quoting previous topics in an reply](https://meta.discourse.org/t/single-quote-block-dropped-in-email-reply/144802)
37* You can filter incoming emails in your email client by category using the
38  `List-ID` email header field.
39* 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
41## Mapping of email addresses to Discourse categories
42
43Use 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
45<table border=1>
46<tr><th>Discourse Category</th><th>Email Address</th></tr>
47<tr><td>Beginner</td><td>[email protected]</td></tr>
48<tr><td>LLVM Project</td><td>[email protected]</td></tr>
49<tr><td>IR & Optimizations</td><td>[email protected]</td></tr>
50<tr><td>IR & Optimizations - Loop Optimizations</td><td>[email protected]</td></tr>
51<tr><td>Code Generation</td><td>[email protected]</td></tr>
52<tr><td>Code Generation - AMDGPU</td><td>[email protected]</td></tr>
53<tr><td>Code Generation - Common Infrastructure</td><td>[email protected]</td></tr>
54<tr><td>Code Generation - AArch64</td><td>[email protected]</td></tr>
55<tr><td>Code Generation - Arm</td><td>[email protected]</td></tr>
56<tr><td>Code Generation - PowerPC</td><td>[email protected]</td></tr>
57<tr><td>Code Generation - RISCV</td><td>[email protected]</td></tr>
58<tr><td>Code Generation - WebAssembly</td><td>[email protected]</td></tr>
59<tr><td>Code Generation - X86</td><td>[email protected]</td></tr>
60<tr><td>Clang Frontend</td><td>[email protected]</td></tr>
61<tr><td>Clang Frontend - Using Clang</td><td>[email protected]</td></tr>
62<tr><td>Clang Frontend - clangd</td><td>[email protected]</td></tr>
63<tr><td>Clang Frontend - Building Clang</td><td>[email protected]</td></tr>
64<tr><td>Clang Frontend - Static Analyzer</td><td>[email protected]</td></tr>
65<tr><td>Runtimes</td><td>[email protected]</td></tr>
66<tr><td>Runtimes - C++</td><td>[email protected]</td></tr>
67<tr><td>Runtimes - Sanitizers</td><td>[email protected]</td></tr>
68<tr><td>Runtimes - C</td><td>[email protected]</td></tr>
69<tr><td>Runtimes - OpenMP</td><td>[email protected]</td></tr>
70<tr><td>Runtimes - OpenCL</td><td>[email protected]</td></tr>
71<tr><td>MLIR</td><td>[email protected]</td></tr>
72<tr><td>MLIR - Announce</td><td>[email protected]</td></tr>
73<tr><td>MLIR - Newsletter</td><td>[email protected]</td></tr>
74<tr><td>MLIR - TCP-WG</td><td>[email protected]</td></tr>
75<tr><td>Subprojects</td><td>[email protected]</td></tr>
76<tr><td>Subprojects - Polly</td><td>[email protected]</td></tr>
77<tr><td>Subprojects - LLDB</td><td>[email protected]</td></tr>
78<tr><td>Subprojects - LLD</td><td>[email protected]</td></tr>
79<tr><td>Subprojects - Flang</td><td> [email protected]</td></tr>
80<tr><td>Subprojects - Bolt</td><td>[email protected]</td></tr>
81<tr><td>Project Infrastructure</td><td>[email protected]</td></tr>
82<tr><td>Project Infrastructure - Release Testers</td><td>[email protected]</td></tr>
83<tr><td>Project Infrastructure - Website</td><td>[email protected]</td></tr>
84<tr><td>Project Infrastructure - Documentation</td><td> [email protected]</td></tr>
85<tr><td>Project Infrastructure - GitHub</td><td>[email protected]</td></tr>
86<tr><td>Project Infrastructure - Code Review</td><td>[email protected]</td></tr>
87<tr><td>Project Infrastructure - Discord</td><td>[email protected]</td></tr>
88<tr><td>Project Infrastructure - Mailing Lists and Forums</td><td>[email protected]</td></tr>
89<tr><td>Project Infrastructure - IRC</td><td> [email protected]</td></tr>
90<tr><td>Project Infrastructure - Infrastructure Working Group</td><td>[email protected]</td></tr>
91<tr><td>Community</td><td>[email protected]</td></tr>
92<tr><td>Community - Women in Compilers and Tools</td><td>[email protected]</td></tr>
93<tr><td>Community - Job Postings</td><td>[email protected]</td></tr>
94<tr><td>Community - US LLVM Developers' Meeting</td><td>[email protected]</td></tr>
95<tr><td>Community - EuroLLVM</td><td>[email protected]</td></tr>
96<tr><td>Community - GSOC</td><td>[email protected]</td></tr>
97<tr><td>Community - Community.o</td><td>[email protected]</td></tr>
98<tr><td>Community - LLVM Foundation</td><td>[email protected]</td></tr>
99<tr><td>Community - Newsletters</td><td>[email protected]</td></tr>
100<tr><td>Incubator</td><td>[email protected]</td></tr>
101<tr><td>Incubator - CIRCT</td><td>[email protected]</td></tr>
102<tr><td>Incubator - Torch-MLIR</td><td>[email protected]</td></tr>
103<tr><td>Incubator - Enzyme</td><td>[email protected]</td></tr>
104<tr><td>Feedback</td><td>[email protected]</td></tr>
105</table>
106
107## Mapping of mailing lists to categories
108
109This table explains the mapping from mailing lists to categories in Discourse.
110The email addresses of these categories will remain the same, after the
111migration.  Obsolete lists will become read-only as part of the Discourse
112migration.
113
114
115<table border=1>
116<tr><th>Mailing lists</th><th>Category in Discourse</th></tr>
117
118<tr><td>All-commits</td><td>no migration at the moment</td></tr>
119<tr><td>Bugs-admin</td><td>no migration at the moment</td></tr>
120<tr><td>cfe-commits</td><td>no migration at the moment</td></tr>
121<tr><td>cfe-dev</td><td>Clang Frontend</td></tr>
122<tr><td>cfe-users</td><td>Clang Frontend/Using Clang</td></tr>
123<tr><td>clangd-dev</td><td>Clang Frontend/clangd</td></tr>
124<tr><td>devmtg-organizers</td><td>Obsolete</td></tr>
125<tr><td>Docs</td><td>Obsolete</td></tr>
126<tr><td>eurollvm-organizers</td><td>Obsolete</td></tr>
127<tr><td>flang-commits</td><td>no migration at the moment</td></tr>
128<tr><td>flang-dev</td><td>Subprojects/Flang Fortran Frontend</td></tr>
129<tr><td>gsoc</td><td>Obsolete</td></tr>
130<tr><td>libc-commits</td><td>no migration at the moment</td></tr>
131<tr><td>libc-dev</td><td>Runtimes/C</td></tr>
132<tr><td>Libclc-dev</td><td>Runtimes/OpenCL</td></tr>
133<tr><td>libcxx-bugs</td><td>no migration at the moment</td></tr>
134<tr><td>libcxx-commits</td><td>no migration at the moment</td></tr>
135<tr><td>libcxx-dev</td><td>Runtimes/C++</td></tr>
136<tr><td>lldb-commits</td><td>no migration at the moment</td></tr>
137<tr><td>lldb-dev</td><td>Subprojects/lldb</td></tr>
138<tr><td>llvm-admin</td><td>no migration at the moment</td></tr>
139<tr><td>llvm-announce</td><td>Announce</td></tr>
140<tr><td>llvm-branch-commits</td><td>no migration at the moment</td></tr>
141<tr><td>llvm-bugs</td><td>no migration at the moment</td></tr>
142<tr><td>llvm-commits</td><td>no migration at the moment</td></tr>
143<tr><td>llvm-dev</td><td>Project Infrastructure/LLVM Dev List Archives</td></tr>
144<tr><td>llvm-devmeeting</td><td>Community/US Developer Meeting</td></tr>
145<tr><td>llvm-foundation</td><td>Community/LLVM Foundation</td></tr>
146<tr><td>Mlir-commits</td><td>no migration at the moment</td></tr>
147<tr><td>Openmp-commits</td><td>no migration at the moment</td></tr>
148<tr><td>Openmp-dev</td><td>Runtimes/OpenMP</td></tr>
149<tr><td>Parallel_libs-commits</td><td>no migration at the moment</td></tr>
150<tr><td>Parallel_libs-dev</td><td>Runtimes/C++</td></tr>
151<tr><td>Release-testers</td><td>Project Infrastructure/Release Testers</td></tr>
152<tr><td>Test-list</td><td>Obsolete</td></tr>
153<tr><td>vmkit-commits</td><td>Obsolete</td></tr>
154<tr><td>WiCT</td><td>Community/Women in Compilers and Tools</td></tr>
155<tr><td>www-scripts</td><td>Obsolete</td></tr>
156</table>
157
158
159## FAQ
160
161### I don't want to use a web UI
162
163You can do most of the communication with your email client (see section on
164Setting up email interactions above). You only need to set up your account once
165and then configure which categories you want to subscribe to.
166
167### How do I send a private message?
168
169On the mailing list you have the opportunity to reply only to the sender of
170the email, not to the entire list. That is not supported when replying via
171email on Discourse. However you can send someone a private message via the
172Web UI: Click on the user's name above a post and then on `Message`.
173
174Also Discourse does not expose users' email addresses , so your private
175replies have to go through their platform (unless you happen to know the
176email address of the user.)
177
178### How can my script/tool send automatic messages?**
179
180In case you want to [create a new
181post/topic](https://docs.discourse.org/#tag/Posts/paths/~1posts.json/post)
182automatically from a script or tool, you can use the
183[Discourse API](https://docs.discourse.org/).
184
185### Who are the admins for Discourse?
186
187See https://llvm.discourse.group/about
188
189### What is the reason for the migration?
190
191See
192[this email](https://lists.llvm.org/pipermail/llvm-dev/2021-June/150823.html)
193
194### How do I set up a private mailing list?
195
196If needed categories can have individual [security
197settings](https://meta.discourse.org/t/how-to-use-category-security-settings-to-create-private-categories/87678)
198to limit visibility and write permissions. Contact the
199[admins](https://llvm.discourse.group/about) if you need such a category.
200
201### What will happen to our email archives?
202
203The Mailman archives will remain on the web server for now.
204
205### What are advantages of Discourse over the current mailing lists?
206
207* Users can post to any category, also without being subscribed.
208* Full text search on the Web UI.
209* Sending/replying via the Web UI (email is still possible).
210* View entire thread on one page.
211* Categories are a more light-weight option to structure the discussions than
212  creating new mailing lists.
213* Single sign on with GitHub.
214* User email addresses are kept private.
215
216### I have another question not covered here. What should I do?
217
218Please contact [email protected] or raise a
219[ticket on GitHub](https://github.com/llvm/llvm-iwg/issues).
220