轉自:InfoQ作者:David Cassel譯者:平川
本文最初發佈於 THENEWSTACK 部落格。
阿爾布開剋日落(2022 年 10 月),David Cassel 拍攝
開源文字編輯器 Vim 的建立者 Bram Moolenaar 於 2023 年 8 月去世後,這個專案怎麼樣了?
為了確保專案得以繼續,社群默默地做出了巨大的努力。
2024 年 11 月底,在 VimConf 2024 大會上,Vim 維護者 Christian Brabandt 講述了這個故事。這是一個真實的鼓舞人心的故事,關於堅韌、毅力和紀念。
在東京,Brabandt 對聽眾說:”你們可以看到,開發工作並沒有停止。“
每天都有新的 pull 請求和問題需要稽核,所以“它仍然相當活躍。GitHub 上有很多活動在進行。“
2024 年 1 月,他們釋出了 Vim 9.1,並將其獻給了 Moolenaar。
自 2006 年以來,平臺顧問 Christian Brabandt 就一直活躍在 Vim 社群,貢獻了 Bug 報告、修復和一些新特性。他參與了 Vim 的正則表示式處理和加密支援等工作,還幫助建立每日 Appimage 並“遷移了主頁”。2023 年 8 月,“我突然成了 Vim 的主要維護者之一”。

Moolenaar 去世的訊息“讓我們所有人都非常震驚”,儘管在此之前幾周,Vim 的郵件列表已經“非常安靜”,“人們已經開始懷疑 Bram 出了什麼事?他在哪裡?”
“我們必須決定該怎麼做。“
Brabandt 首先承認,他們“失去了很多知識”,而不僅僅是 Moolenaar 的測試指令碼。
30 年前,Moolenaar 建立了 Vim,他的腦子裡“裝著很多知識,關於他最初希望 Vim 擁有的所有功能”。不僅如此,Moolenaar 還是專案的領導者。“基本上,是他決定了專案的戰略——他希望專案向何處發展,他希望它包含什麼,以及他不喜歡什麼”。
“我們必須重組,找到延續專案的方法。”
從一開始,我們就遇到了一個很大的問題。Vim 的 GitHub 賬戶,“Bram 是所有者。這意味著只有他才能做出某些決定——比如做出為其他維護者設定角色和許可權的最終決定…… 我們需要有這樣的權力才能繼續工作,並邀請其他維護者加入專案"。
幸運的是,GitHub 有一項 “已故使用者”政策,其中包括“預先指定的繼任者”。但遺憾的是,Brabandt 告訴聽眾,利用這項政策 “並不像聽起來那麼容易”,因為在填寫完相關檔案後,GitHub 賬戶 “基本上就失效了”。這對我們來說不是最好的辦法,因為 Bram 的家人可以訪問他的賬戶,我不想讓他們失去這項能力“。相反,為了方便邀請其他維護者,Moolenaar 的家人更改了許可權。
Brabandt 說,Moolenaar 去世後不久,GitHub 上就累積了“大量的 pull 請求。於是我開始檢視並匯入它們。當另一位長期貢獻者和核心維護者 Charles Campbell 決定退休時,我決定再邀請一些維護者…… 主要是那些長期為 Vim 做出貢獻的人。“
但是,除了原始碼,他們還必須管理專案的其他基礎設施。遺憾的是,那些工作沒有一個記錄在案的流程,“因此,我不得不自己找出這一切——如何管理——總的來說,困難重重”。
似乎所有可能出錯的地方都出錯了:
-
處理 Vim 漏洞報告的網站被一家人工智慧安全公司收購。Brabandt 說,“這家公司專注於人工智慧,而且只專注於人工智慧…… 開源漏洞報告幾乎立即就被關閉了”。於是,該專案轉向了 GitHub 安全諮詢。
-
Brabandt 瞭解到,Vim 主頁的基礎程式碼過去 20 年從未變過。它仍然包含 PHP 7 程式碼——儘管對 Php 7 的支援已於 2022 年 11 月終止。
-
2023 年 7 月,為 Vim 主頁提供託管服務的公司被開源中國收購,很快訪問者就開始遇到資料庫錯誤,而技術支援請求無人回覆。因此,在重組 Vim 專案的過程中,專案團隊也不得不為 Vim 主頁尋找新的託管服務,但“遺憾的是,這也意味著我們必須將主頁從 PHP 7 至少升級到 PHP 8”。
-
Brabandt 說,”FTP 伺服器仍由荷蘭 Unix 使用者組運營。這在上世紀 90 年代或 2000 年代初還可以。但現在,我認為人們通常都是從 GitHub 或主頁上下載。” 荷蘭 Unix 使用者組也不願意給 Brabrandt 開通訪問許可權。他說,“沒關係…… 因為我們後來決定淘汰舊的 FTP 伺服器。如果需要下載,可以透過 Vim 主頁完成“。
Brabandt 說,自從取消 FTP 訪問以來,他還沒有聽到過任何投訴。
直到 2024 年底,他們才意識到,幫助頁面上的電子郵件地址仍然是轉發到 Moolenaar 的郵箱賬號。“大概就在兩週前,我更改了這些地址,所以現在它們都轉發到了我的郵箱“。
眾所周知,Vim 鼓勵使用者向 Moolenaar 最喜歡的慈善機構荷蘭國際兒童保育基金(ICCF)捐款。Brabandt 說,Moolenaar 家族仍在維護 Bram 的 Paypal 賬戶(仍可從 Vim.org 上的連結訪問),用於接收捐款。Moolenaar 去世後,很多人向 ICCF 捐款,2024 年又有 9 萬歐元的捐款。Brabandt 也致力於確保這些捐款能夠按照預期使用,並表示近期內不打算建立任何 Vim 贊助專案。
有一項變化:Bram Moolenaar 曾允許 ICCF 捐贈者對 Vim 的未來功能進行投票,這項功能被關閉了。很難弄清楚哪些 ICCF 捐款應該與 Vim.org 使用者掛鉤。( Brabandt 說,我不知道 Bram 過去是怎麼做的,ICCF 的其他人也無法告訴我!")。實際上,大多數新增的增強請求和問題都來自其他渠道,比如 GitHub 和 Vim 自己的待辦事項列表。
那麼未來會發生什麼呢?Brabandt 告訴與會者,Vim 計劃在即將釋出的 Vim 9.2 中做出“更多可能引起爭議的改動”。其中包括支援 XDG 規範的基目錄規範(“至少有 10 年的時間,社群一直希望這樣做”),以及更好地支援 Wayland)。此外,還有一些新的選項和外掛,以及一些不可避免的 Bug 修復。
因此,在進行更改的同時,關於 Vim 的未來,Brabandt 悄悄地發表了一份重要的宣告。“不過目前,我認為 Vim 或多或少地處於維護模式。我認為,任何維護者都無法全職從事 Vim 或較大功能的維護工作“。舉例來說,他知道,Neovim 社群一直在做一些比較大的更改,比如支援解析庫 Tree-sitter,但將其新增到 Vim 將需要付出“巨大的努力…… 我不太確定我們能否做到,至少在短期內不能”。
不過,Brabandt 宣佈了另一個有價值的目標:確保社群的健康發展。也就是說,要歡迎新的貢獻者,讓他們能夠輕鬆地開始程式碼貢獻。Brabandt 甚至還引進了一些自動程式碼格式化工具,因為在此之前,Vim 的原始碼使用的是一種在 Brabandt 看來比較“奇怪 ”的特殊格式化風格。基本上,那是 Bram 的工作方式,這沒什麼問題,但對新使用者沒有幫助"。
隨後的一張幻燈片建議人們開展一些工作,包括:“Tree-Sitter 整合?”、 GTK 版的 Vim GUI 和更高階的終端功能。例如,Vim 的拼寫檢查程式碼“已經有好幾年沒動過了”。
Brabandt 說:“如果未來開發重大的新功能,那麼我們確實需要社群的幫助。“但他一直建議,在熟悉程式碼庫之前,新的貢獻者要“從小處著手”。
就目前而言,”大部分已合併的變更都是相對獨立的小特性集合,很容易進行測試,而且不會對程式碼的其他部分產生太大的影響。“
他們仍在使用兼顧“防禦性和安全性”的 C 語言編碼。Brabandt 說,現在不可能把所有東西都重構成 Rust 這樣的現代程式語言。他對所有變更都進行了全面的測試,他們每天都執行程式碼分析工具 Coverity。今後,他們將重構部分 “相當冗長、複雜和難以理解 ”的程式碼。(Vim 真的還需要 Python 2 的外部介面嗎?由於 Python 社群早在幾年前就轉向了 Python 3,Brabandt 認為,這是一個過時介面的例子,“在未來某個時候”可能會退出歷史舞臺)。
他們有一個重要的政策目標是確保 Vim 的向後相容性。當然,Brabandt 也吸取了過去的經驗教訓,在一張標題為“新 Vim 專案——未來”的幻燈片中,他提出了一個關鍵的“政策”要點:“更好地記錄(內部)流程”。
Brabandt 說,他是在檢視 Moolenaar 積壓的待處理 pull 請求時提出這些政策原則的。
他希望看到的另一項改進是更好地瞭解 Vim 社群,他甚至在考慮進行一次使用者調查。在演講的最後,Brabandt 向聽眾講述了他在 Moolenaar 辭世後瞭解到的東西:維護 Vim 是一項艱鉅的工作,而且是一項全職工作。“那不僅是編寫程式碼的問題,也是管理社群的問題。這就意味著要傾聽社群的聲音——“傾聽他們的要求,修復出現的 Bug,確保我們能夠跟上社群的步伐,滿足社群的需求”。
“這是一個開源專案——這意味著社群可以做出貢獻,也應該做出貢獻,同時幫助我們引導專案走向未來“。
Brabandt 說,這個健康的社群已經有了一個明確的訊號,那就是 Vim 大會本身。
原文連結:
https://thenewstack.io/vim-after-bram-a-core-maintainer-on-how-theyve-kept-it-going/