改进 LLVM 基础设施 - 第 1 部分:邮件列表
2003 年 LLVM 项目开源时,它还是一个小型项目,社区也很小。当时为项目选择的工具是在不同的时间和不同的情况下做出的。
如今,将近 18 年过去了,该项目发展壮大,而那些基础设施选择可能不再是今天最合适的方案。根据最近的一篇文章,LLVM 社区在 2021 年出现了创纪录的增长,共有 1400 位贡献者参与了 LLVM 项目。这真是令人难以置信的增长!虽然改变确实存在着切实的成本,但很明显,我们需要投资于对这些工具进行现代化改造,以支持 LLVM 目前和未来的发展。
最近,LLVM 项目将其源代码存储库和错误跟踪器迁移到了 GitHub,旨在扩大 LLVM 社区,并简化对该项目的贡献。虽然这些变化并不轻松,但项目所带来的好处 outweighs 迁移带来的时间和努力。迁移到 GitHub 之后贡献者的增长只是该变化带来的成果之一。
今年,为 LLVM 项目提供大部分基础设施的 LLVM 基金会将带头评估并确定项目使用的剩余工具和软件的改进措施。我们将研究邮件列表、聊天服务器、代码审查工具以及我们基础设施的其他部分。这是我们博客文章系列的第一部分,描述了 LLVM 基础设施即将发生的更改(如果有)。
项目沟通 - 邮件列表
在过去 18 年中,Mailman 和 IRC 始终是 LLVM 项目的主要沟通方式。随着项目的增长,我们为 Clang 等子项目添加了 邮件列表,但主列表 (llvm-dev) 保持不变。此列表旨在涵盖所有 LLVM 内容,包括从中间级优化到后端优化,再到众多 LLVM 后端。它一直是所有其他列表未涵盖主题的万能列表。由于 LLVM 的增长和项目规模,此列表的流量非常高,需要大量工作才能过滤掉可能感兴趣的信息。越来越明显的是,邮件列表可能不是最好的沟通形式,因为它缺乏便于过滤、回复和跟踪感兴趣主题的功能。
2019 年,LLVM 开始尝试使用 Discourse 作为邮件列表的替代方案。Discourse 是一个开源讨论平台,构建了大量现代功能,例如:
- 完全支持的电子邮件界面 - 如果你不喜欢使用 Web 或应用程序界面,Discourse 支持通过电子邮件进行交互。
- 类别和子类别 - 这将 LLVM 项目细分为更小的部分,用户可以订阅他们最关心的主题,而不必自己进行过滤。
- 单一帐户登录 - 用户可以使用其现有的 GitHub 帐户使用 Discourse 并访问所有类别。
- 动态通知 - 当用户被标记、收到新回复或离线时,系统会立即通知用户,并在离线时发送电子邮件。
- 简单 - Discourse 使用扁平论坛,其中回复会动态加载,并以直线形式向下流动页面。
- 移动支持 - 提供适用于 iOS 和 Android 的应用程序,但也可以使用 Web 界面。
- 更好的审核 - 社区可以通过标记进行自我审核,并将工作分散到更广泛的审核员群体中。
- 增强的垃圾邮件拦截 - 开箱即用的垃圾邮件过滤功能,可在垃圾邮件到达审核员之前将其消除。
- 安全性 - 它具有增强的信任系统,允许社区建立针对攻击者、不良行为者和垃圾邮件发送者的自然免疫力,并通过点赞和徽章强化积极行为。
当在 LLVM 邮件列表上广泛讨论迁移到 Discourse 的问题时,大多数社区成员都赞成这一举措。除了更现代的沟通方式,它还提供了上述功能。我们确实听到了一些人说他们会怀念与 Mailman 相比的一项功能:通过电子邮件直接回复某人的功能。但是,虽然这可能不适合所有人,但我们认为这是一项值得的权衡,可以带来其他好处,例如,为 LLVM 开发人员和一般用户提供更好的安全性。
迁移到 Discourse
鉴于上述讨论,我们计划将大多数邮件列表迁移到 Discourse。我们很高兴它将带来许多新功能,以帮助改进现有贡献者和用户的沟通,并使项目更容易被新人访问,因为大多数人都熟悉使用 Discourse 等论坛。
但是,虽然 Discourse 是社区讨论的绝佳解决方案,但目前尚不清楚它是否适合托管提交信息和提交后审查。因此,提交列表不会包含在最初迁移到 Discourse 的计划中 - 它们目前将保留在邮件列表中。
迁移到 Discourse 的计划将包括以下步骤:
- 1 月 7-9 日 - 将现有的 LLVM Discourse 重新配置为新的类别/子类别结构(见下文)。
- 1 月 10-20 日(这两周中的某个时间) - LLVM 邮件列表存档将迁移到 Discourse,并由 LLVM 社区志愿者进行完整性检查。此完整性检查可能需要一周或更长时间。
- 2 月 1 日 - 邮件列表(提交信息除外)将进入只读模式,所有用户都必须迁移到 Discourse。
- 2 月 1-4 日(大约) - 从 Mailman 到 Discourse 的最终合并完成。我们鼓励所有 LLVM 社区成员从 1 月 10 日开始使用 Discourse,以最大程度地减少邮件列表进入只读模式以及最终信息合并到 Discourse 后可能出现的任何中断。但是,请放心,所有邮件都将合并到 Discourse,您将能够在合并完成后继续进行在那里启动的任何线程。
LLVM 服务器上的 Mailman 存档可能最终会被删除,但对此还没有最终决定或截止日期。
从邮件列表到 Discourse 类别的映射
现有的 LLVM Discourse 将被修改为包含以下类别/子类别:
-
公告
-
Clang 前端
- 使用 Clang
- 构建 Clang
- 静态分析器
- clangd
-
子项目
- LLD 链接器
- Flang Fortran 前端
- LLDB 调试器
-
代码生成
- 通用基础设施
- AArch64
- ARM
- Mips
- PowerPC
- RISCV
- WebAssembly
- X86
- 其他
-
IR 和优化
- 循环优化
-
社区
- 女性编译器和工具
- 职位发布
- 美国开发者会议
- EuroLLVM
- Google 暑期实习计划
- Community.o
- LLVM 基金会
-
项目基础设施
- 发布测试人员
- 网站
- 文档
- GitHub
- 代码审查
- Discord
- 邮件列表和论坛
- IRC
- 基础设施工作组
- 策略
- LLVM 开发人员列表存档
-
运行时
- C
- C++
- OpenCL
- OpenMP
- 清理器
-
孵化器
- CIRCT
- mlir-npcomp
-
MLIR
- 公告
- 时事通讯
- TCP-WG
Mailman 存档将按如下方式映射:
邮件列表 | Discourse 中的类别 |
---|---|
All-commits | 目前没有迁移 |
Bugs-admin | 目前没有迁移 |
cfe-commits | 目前没有迁移 |
cfe-dev | Clang 前端 |
cfe-users | Clang 前端/使用 Clang |
clangd-dev | Clang 前端/clangd |
devmtg-organizers | 已弃用 |
Docs | 已弃用 |
eurollvm-organizers | 已弃用 |
flang-commits | 目前没有迁移 |
flang-dev | 子项目/Flang Fortran 前端 |
gsoc | 已弃用 |
libc-commits | 目前没有迁移 |
libc-dev | 运行时/C |
Libclc-dev | 运行时/OpenCL |
libcxx-bugs | 目前没有迁移 |
libcxx-commits | 目前没有迁移 |
libcxx-dev | 运行时/C++ |
lldb-commits | 目前没有迁移 |
lldb-dev | 子项目/lldb |
llvm-admin | 目前没有迁移 |
llvm-announce | 公告 |
llvm-branch-commits | 目前没有迁移 |
llvm-bugs | 目前没有迁移 |
llvm-commits | 目前没有迁移 |
llvm-dev | 项目基础设施/LLVM 开发人员列表存档 |
llvm-devmeeting | 社区/美国开发者会议 |
llvm-foundation | 社区/LLVM 基金会 |
Mlir-commits | 目前没有迁移 |
Openmp-commits | 目前没有迁移 |
Openmp-dev | 运行时/OpenMP |
Parallel_libs-commits | 目前没有迁移 |
Parallel_libs-dev | 运行时/C++ |
Release-testers | 项目基础设施/发布测试人员 |
Test-list | 已弃用 |
vmkit-commits | 已弃用 |
WiCT | 社区/女性编译器和工具 |
www-scripts | 已弃用 |
有关迁移到 Discourse 的帮助,请参阅 用户指南,并在 LLVM Discourse 论坛 上讨论。