首页    新闻    小组    威客    人才    下载    博客    代码贴    在线编程    论坛
Vim 项目现状
2025年1月16日 12:52 | 阅读 56 次

Vim 创始人及终身仁慈独裁者(BDFL)Bram Moolenaar 于 2023 年的离世让社区感到震惊,同时也引发了对项目未来的担忧。

在 2024 年 11 月举行的 VimConf 大会上,现任 Vim 维护者 Christian Brabandt 发表主题演讲 “Vim 项目的新生”(the new Vim project"),介绍了社区如何重组以继续维护 Vim,以及未来的发展方向。

“后 Bram 时代” 的 Vim

Brabandt 首先回顾了他与 Vim 的渊源:他自 2006 年起参与 Vim 项目,并表示他的首次提交是在 7.0/7.1 版本时期(大约在 2006 年)。起初,他主要贡献小补丁和修复,后来逐渐贡献了更大的功能,比如 gn 和 gN 命令(结合搜索和可视模式选择)、使用 libsodium 改进的加密支持,维护 Vim 的 AppImage 等。他提到,由于个人和工作的原因,他在 2022 年左右减少了对项目的参与。

这一情况在 2023 年 8 月发生了变化,因为 Moolenaar 去世了。Moolenaar 维护 Vim 已超过 30 年;尽管在前几年他已将 Brabandt 和 Ken Takata 加入为共同维护者,但大部分开发仍由他主导。他去世后,许多知识随之流失,但 Brabandt 和其他人接手了继续保持项目活力的重任。

当时,Moolenaar 是 Vim GitHub 组织的唯一拥有者,只有他的账号可以更改某些设置。起初,贡献者尝试通过 GitHub 的已故用户政策来为组织添加拥有者。然而,这一过程相当复杂,最终的结果是 Moolenaar 的账号会被禁用。由于希望家人仍然能够访问该账号,他们放弃了这一方法,而是选择根据组织变更的需要,由家人授予必要的访问权限。

Charles Campbell(昵称 “Dr Chip”),一位为 Vim 做出贡献超过 25 年的开发者,也在 Moolenaar 去世后不久决定退休。他离职后,维护团队的规模有所扩大,Yegappan Lakshmanan 加入了团队,随后 Dominique Pellé、Doug Kearns,以及 GitHub 用户 “glepnir”、“mattn” 和 “zeertzjq” 也相继加入。

不仅仅是源代码

Brabandt 强调,维护 Vim 不仅只是源代码,还有许多其他方面需要管理,比如 Vim 的网站、FTP 服务器、安全漏洞披露、在 Reddit 和 Stack Exchange 等其他平台上的 Vim 社区等。

Vim 的网站也需要改进,其设计和大部分代码在很长一段时间内几乎没有变化 —— 直到 2023 年,它仍基于 PHP 5。在最近的一些情况下,网站不够稳定,因此他在 2024 年开始寻找新的托管服务商。这一迁移过程包括将 PHP 升级到版本 8,并为此重写了一部分代码。Brabandt 对 Mark Schöchlin 表示感谢,是他主动承担了这部分工作。

他承认网站的设计自 2001 年以来几乎没有变化,看起来并不现代化,这可能会让新用户感到困惑。虽然已经尝试过重新设计,但第一次尝试并不成功。他更注重保持一致性,不希望吓跑长期用户。

DNS 也是一个棘手的问题 ——vim.org 域名由 Stefan Zehl 管理,但 Moolenaar 还拥有其他一些域名,比如 vim8.org、vim9.org 等。

幸运的是,SSL 证书已由 Let’s Encrypt 管理,因此 Brabandt 在这一方面没有遇到问题。一些电子邮件地址,如 bram@vim.org、bugs@vim.org 等,原本被转发到 Moolenaar 的个人邮箱,现在这些地址已更新为转发到 Brabandt 的邮箱。

FTP 服务器由 NLUUG 托管,但他决定将其停用,并表示到目前为止还没有收到任何投诉。

沟通交流渠道

他还谈到社区围绕 Vim 邮件列表的活动,这些邮件列表托管在 Google Groups 上。

2024 年 5 月,他收到 Google 的自动消息,通知 vim-dev 邮件列表的所有内容因垃圾邮件或恶意软件被屏蔽。这引发了一些麻烦,虽然列表在一天左右得以恢复,但问题的具体原因至今未明。他们曾考虑将邮件列表改为自托管,但这样做的一个问题是所有用户都需要重新注册。

如今,邮件列表的活跃度已经不如以往,大部分社区讨论都转移到了 Reddit 和 Stack Exchange 上。

安全漏洞披露也是需要关注的一项内容。几年前,问题曾通过 Huntr 平台报告。许多尚未解决的问题现已处理完毕。但在 2023 年,Huntr 被另一家公司收购,该公司专注于 AI 技术,并关闭了通用的开源漏洞报告服务。

目前,Vim 通过电子邮件或 GitHub 接收安全问题报告,并通过 GitHub 的安全通告发布漏洞信息。团队还设立了一个专用于尚未公开的安全问题的私密邮件列表,相关邮件会转发至所有维护者。

Brabandt 还在提交信息中引入了 [security] 标签来标记安全修复。这类提交会在 oss-security 列表上公布(最近的一次是在 10 月),并通知发行版维护者。

维护模式

Brabandt 随后展示了贡献图表,以证明 Moolenaar 去世后开发并未停止。在 Moolenaar 健康状况恶化期间,项目开发有所放缓,但在他整理未完成的 PR 时出现了一个高峰。9.1 版本于 2024 年 1 月 2 日发布,以纪念 Moolenaar—— 这距离他去世约四个月。

9.1 版本包括对虚拟文本的改进(该功能允许补全建议等内容出现在编辑区域内,但不属于实际文本的一部分)、平滑滚动和 OpenVMS 支持。

在 9.1 之后,他开始引入更多可能引发争议的更改,例如支持 XDG 基目录规范。现在,Vim 不再需要在顶级主目录中创建文件:~/.vimrc 或~/.vim/vimrc 仍然有效,但如果两者都不存在,则 $XDG_CONFIG_HOME/vim/vimrc 也会生效。另一个此类更改是 Wayland 支持。这一支持尚未完成,他表示不确定剪贴板支持的剩余问题是 Vim 的 Bug 还是 Wayland 的问题。

随着他清理 PR 积压问题,他开始制定合并 PR 的策略,优先确保充分测试。现在,测试通过持续集成(CI)运行。他还提到,良好的文档非常重要。

Vim 支持许多语言接口,包括 Python 2 和 3、Ruby、Lua、Tcl 和 MzScheme。但 Brabandt 不确定这些语言接口中有多少仍然真正需要。例如,Python 2、Tcl 和 MzScheme(无法与该语言的最新版本构建)可能需要放弃以减少维护负担。其他需要改进的领域包括 GUI(GTK 4 已推出一段时间,但 Vim 尚未使用它)、高级终端功能支持,以及拼写检查功能(自 Vim 7 以来几乎没有变化)。团队希望支持 tree-sitter 语法解析器,但这一功能存在争议,因此他认为它不太可能很快出现在 Vim 中。

他了解 Neovim 中出现了一些重要变化,但他不确定其中有多少可以被引入 Vim。虽然 Vim 进行了少量更改,但重大变更需要社区的支持。他不希望进行向后不兼容的更改,并且对可能导致问题的变更保持谨慎。他表示,在处理 PR 时必须考虑全局情况,尤其是用户的期望。目前,他表示 Vim 处于某种程度的维护模式。

他还提到已创建了一个内部存储库,用于跟踪利益相关者并确保如果他出现问题,其他维护者可以接替他的工作。

Brabandt 建议那些新加入项目的人从小的贡献开始,并熟悉代码库。他向开发者提供了一些建议,认为在使用 C 时采用防御性风格非常重要,以确保不会引入新的 Bug。他推荐使用 Coverity 这类静态分析工具扫描缺陷。他提到,Vim 的某些代码库部分非常复杂,如果可能的话,需要重构为更易于管理的单元。

维护 Vim 是一项全职工作,他表示,这不仅仅是维护代码,还包括维护社区 —— 管理期望并倾听用户需求。他必须了解社区的愿望:希望 Vim 成为何种工具?是 IDE 吗?还是与旧版本 Vim 完全兼容的工具?如何让 Vim9 脚本(Vim 的新脚本语言)更广泛地使用?如何确保 Vim 社区的健康发展?他以感谢所有 Vim 的贡献者结束了他的演讲,并回答了一些问题。

问答环节

一位观众提问 Vim 和 Neovim 的维护模式有何不同。由于大多数 PR 仍由 Brabandt 合并,这是否意味着他成为了 Vim 的新 BDFL?

Brabandt 明确否认自己是 BDFL。目前,他之所以合并大部分更改,是因为每次更改需要递增版本号,而多人同时合并可能会导致冲突。然而,在他休假期间,他已将主要维护权交给 Lakshmanan。他强调,这依然是一个社区项目,所有决策都基于社区意见。只是目前其他维护者选择不亲自合并更改,而是将这一职责委托给他,他对此表示认可。

另一位观众询问语言障碍问题,因为 Vim 社区中有许多日本成员以及其他多语言用户。Brabandt 回答说,作为一个国际项目,Vim 的主要工作语言是英语。他提到,现在有了 ChatGPT 和翻译工具,跨语言合作变得更加方便。但仍有部分用户无法很好地用英语表达,这增加了理解他们需求的难度。

原文:https://lwn.net/SubscriberLink/1002342/a8d8a17f30968b93/

(文/oschina)    




评论 (0)
游客请输入验证码
最新评论
0
0
收藏