新功能被批評導致 Simh 維護者 “擺爛”,隨意修改開源許可證
Simh 是一個開源歷史計算機模擬器,可以仿真歷史上出現過的一些計算機硬件或軟件,比如 IBM 1401、惠普 2114 等。該仿真工具的原作者是 Bob Supnik ,但他沒有選擇開源,而是 Fork 了一個開源版本。該開源版本在 GitHub 上基于 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 ,馬克寫的話真的很繞)。
- 你嘗試添加的限制直接與前面的 BSD 許可證沖突。產生的集合根本不是合法有效的許可證,這意味著突然之間沒有人有權使用,更不用說修改 simH 的代碼了。
- SIMH 不是你馬克的私人玩具。如果你想擁有一個私人的 SIMH 變體,請自行分支。我不想按照你強加的條款將我的工作貢獻給 SIMH。
面對眾人的質疑,馬克在一一反駁之后終于詞窮了,最終表達了他的真實想法:
- 我不會更改許可,也不會回滾版本。
- 如果你們希望擁有一個完全開源的項目,可以 Fork 我更改許可證之前的版本,自己去發展。
也就是說,這個標記為 “歷史計算機模擬器” 的社區項目,或許將在 Mark 的一番騷操作之后分崩離析 —— 即使事情最終得到解決,也無法回到社區齊心的狀態了。
隨著事態一發不可收拾,已離開 simH 社區的原作者 Bob Supnik 出來收拾爛攤子。他在帖子中表示已與馬克進行了溝通,馬克仍堅持自己的許可證沒問題,并決定將 simH 閉源。因此 simH 項目需要立即 Fork ,并在原始的 BSD 許可下進入一個新的存儲庫重新運作開源事宜。
本文轉自OSCHINA
本文標題:新功能被批評導致 Simh 維護者“擺爛”,隨意修改開源許可證
本文地址:https://www.oschina.net/news/196583/simh-license-be-changed