新功能被批評導致 Simh 維護者「擺爛」,隨意修改開源許可證

2022-05-20 09:00:25

是一個開源歷史計算機模擬器,可以模擬歷史上出現過的一些計算機硬體或軟體,比如 IBM 1401、惠普 2114 等。該模擬工具的原作者是 Bob Supnik ,但他沒有選擇開源,而是 Fork 了一個開源版本。該開源版本在 基於 BSD 協定開源,由 Mark Pizzolato(注意這個馬克老哥,他擁有 Simh 開源倉庫的管理權,也是本文主人公) 、 Richard Cornwell 、Paul Koning 等核心維護者進行維護,社群的成員都可以為之開發新模組。

該專案已有近三十年的社群共同作業開發歷史,但近期 Mark Pizzolato 向 Simh 新增了一項有爭議的功能:在載入時修改磁碟映像檔案以新增後設資料。該功能隨即遭到社群其他開發者的批評,因為馬克的新功能導致 simH 可以在使用者不知情的情況下修改磁碟容器,這顯然是不合常理的。作業系統專案通常有「不破壞任何事物」的預設原則,比如 FreeBSD 的「最小驚訝原則」,以及 Linus 的口頭禪「不要破壞 Linux 的使用者空間」。也就是說,除非使用者主動要求後設資料,否則磁碟容器不應被作業系統修改。

然而,在被社群成員批評後,馬克完全沒有修改或完善功該功能的想法,反而直接「開擺」,在 5 月 16 號、18 號的了 simH 主倉庫的 BSD 開源許可證:

這改動寫得非常繞,咱們來簡單總結一下馬克的意思:

如果你用 simH 的時候改動或者刪除了我的 AUTOSIZE scp.c 和 sim_disk.c 功能,那我寫的程式碼就不對你開源。

在許可證中加入禁止改動程式碼的限制,這個想法非常美好。然而從馬克修改許可證的那一刻起,這個許可證就已經失效了,因為 BSD 規定   「……包括但不限於使用、複製、修改……軟體的副本……」 而馬克新增的禁止修改條件與前半段的 BSD 主許可衝突,一個自相矛盾的許可證是不被認可的,即使它只針對專案的部分程式碼。

而 simH 社群更是圍繞 Mark 修改開源許可證一事展開了激烈討論,相關貼文在已接近屠版。

同為核心開發者的 Richard Cornwell 直言自己大失所望,不想玩了,要求馬克從倉庫中移除自己開發的模組。

而另一位開發者 Paul Koning 對馬克的行為作了非常中肯、一陣見血的評價:

  1. 開源許可證適用於整個軟體,不適用於任何人編寫的程式碼行。
  2. 爺都理解不了你新增的許可證內容,不知道你想表達什麼(小編默默 +1 ,馬克寫的話真的很繞)。
  3. 你嘗試新增的限制直接與前面的 BSD 許可證衝突。產生的集合根本不是合法有效的許可證,這意味著突然之間沒有人有權使用,更不用說修改 simH 的程式碼了。
  4. SIMH 不是你馬克的私人玩具。如果你想擁有一個私人的 SIMH 變體,請自行分支。我不想按照你強加的條款將我的工作貢獻給 SIMH。

面對眾人的質疑,馬克在一一反駁之後終於詞窮了,最終表達了他的真實想法:

我不會更改許可,也不會回滾版本。

如果你們希望擁有一個完全開源的專案,可以 Fork 我更改許可證之前的版本,自己去發展。

也就是說,這個標記為「歷史計算機模擬器」的社群專案,或許將在 Mark 的一番騷操作之後分崩離析 —— 即使事情最終得到解決,也無法回到社群齊心的狀態了。

隨著事態一發不可收拾,已離開 simH 社群的原作者 Bob Supnik 出來收拾爛攤子。他在表示已與馬克進行了溝通,馬克仍堅持自己的許可證沒問題,並決定將 simH 閉源。因此 simH 專案需要立即 Fork ,並在原始的 BSD 許可下進入一個新的儲存庫重新運作開源事宜。

展開閱讀全文