LLVM 项目博客

LLVM 项目新闻和来自一线的细节

改进 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 论坛 上讨论。