“後Bram時代”的Vim現狀

OSCHINA
↑點選藍字 關注我們
Vim 創始人及終身仁慈獨裁者(BDFL)Bram Moolenaar 於 2023 年的離世讓社群感到震驚,同時也引發了對專案未來的擔憂。
在 2024 年 11 月舉行的 VimConf 大會上,現任 Vim 維護者 Christian Brabandt 發表主題演講“Vim 專案的新生”(the new Vim project),介紹了社群如何重組以繼續維護 Vim,以及未來的發展方向。
來源:https://youtu.be/bopbmRyHQog?si=BHzt6g_yK0Xlc5PU

“後 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 在這一方面沒有遇到問題。一些電子郵件地址,如 [email protected][email protected] 等,原本被轉發到 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/
閱讀更多
END
熱門文章
效果媲美Cursor的開源替代:Roo-Cline
作業系統能知道自己是在虛擬機器中執行的嗎?
Deepseek團隊核心成員揭秘——清北應屆生撐起一片天
用Rust重寫近6萬行C++程式碼是怎樣的體驗?
2024年系統程式語言調查報告:Rust穩居榜首、Zig緊隨其後
分享在看點贊~Orz

相關文章