聲明:本文來自于微信公眾號 CSDN(ID:CSDNnews),作者: 鄭麗媛,授權轉載發布。
提到開源,不少人都認為是免費+自由,其實并非全然如此。
每個開源工作者的追求不同。有的人只想專心寫代碼,不約束其他人對代碼的使用范圍,開源閉源皆可;有的人則希望其開源項目能得到更廣泛的分享與改進,使用其源碼的人也能堅持開源。
鑒于這種多樣性的追求,因此,為了維護開源工作者權益,保持其創作熱情,開源許可協議(開源許可證)就此誕生,用于規定使用開源項目時的權利及責任,即告訴使用者應該做什么,不應該做什么。
在眾多開源許可協議中,彼此之間是否可以兼容也不盡相同。上周三就發生了一起因開源許可協議不兼容引發的一場混亂:一個名為 mimemagic 的 Ruby 庫因包含了與其自身許可證不兼容的部分代碼,導致包括 Ruby on Rails 在內的五十多萬個項目受到影響。
MIT & GPL
在詳談之前,我們需要先了解與這起事件有關的兩種開源協議:MIT & GPL。
GPL
GNU GPL,全稱 GNU General Public License,即 GNU 通用公共許可證,簡稱為 GPL,為人熟知的 Linux 正是采用了 GPL 協議。
GPL 協議在于對代碼開源、免費使用和引用、修改,對衍生代碼開源及免費使用,但不允許修改后或衍生的代碼用作閉源的商業軟件。
另外,GPL 協議還具有較為特別的“傳染性”:無論代碼多少,但凡引用、修改遵循 GPL 代碼的軟件都必須開源和免費,并且要采用同樣的 GPL 許可證。
MIT
相對而言,MIT 則是較為寬松的許可協議。
MIT 許可證之名源自麻省理工學院(Massachusetts Institute of Technology, MIT),因此又稱麻省理工學院許可證,最初由麻省理工學院開發。
采用該協議的開源作者一般只想保留版權,因此沒有任何其它的限制。即無論是以二進制還是源碼形式發布,使用者須在發行版中包含版權聲明和原許可協議聲明,但這個發行版開源與否、商業化與否均由使用者自行決定,開源作者并不干涉。
而這次的事件就是由于在遵循 MIT 的項目中使用了部分 GPLv2 的代碼。
開源許可協議并不兼容
上周三,shared-mime-info 軟件庫的維護者 Bastien Nocera 告知 mimemagic 庫的維護者 Daniel Mendler:mimemagic 中包含了 shared-mime-info 的代碼。不巧的是,mimemagic 庫采用的是 MIT 許可證,而 shared-mime-info 遵循的是 GPLv2許可證,兩者并不兼容。
Nocera 在 Issues 的帖子中寫道:“使用 GPL 文件作為源代碼會讓你的整個代碼庫成為衍生代碼,因而需要使其全部采用 GPL 許可證,所以我認為在有人在純 MIT 代碼庫或閉源應用程序中使用它之前,改正這個問題非常重要。”
得知此事之后,Mendler 向 Nocera 表示感激,隨后立刻將 mimemagic 的最新版本0.4.0和0.3.6從 MIT 轉移至 GPLv2,并從 Ruby 開發者使用的軟件包注冊表 RubyGems.org 上撤回了之前的版本。此外,他還存檔了 mimemagic 的 GitHub 存儲庫,表示此后不再支持被積極開發。
mimemagic 維護者的動作之快,令開源許可顧問 Paul Berg 都不禁贊賞:“mimemagic 維護者令人欽佩的是,一旦發現問題,他們就會做出反應,而不是對此保持沉默并讓問題繼續存在。”
然而,這件事情并沒有就此結束,它引發了一場規模龐大、難以解決的混亂。
Ruby on Rails 都受到影響
截止目前,這件事影響了175個軟件包,涉及到578404個不同的軟件存儲庫,其中就包括Web 開發框架 Ruby on Rail,因為它使用了下架的 mimemagic 0.3.5 版本作為依賴項。
目前,Rails 團隊正在研究替換方案,由于 mimemagic 主要是 mime 類型數據映射數據庫,因此 Rails 可能會考慮采用 2-clause BSD 許可的 libmagic 或 mime 數據的 Ruby 轉換,但不論哪種方式實現起來都并非易事。
對此,Berg 還提出了一種可能——將 Rails 從 MIT 改為采用 GPLv2協議。不過考慮到使用 MIT 許可證的 Rails 的廣泛使用,眾多基于此框架開發的應用程序必定沒有遵守 GPL 協議,因而此方案會為這些項目帶來巨大影響,并不可行。
Berg 感慨道:“無論如何,鑒于 Rails 的受歡迎程度,它對行業至關重要,因此在短時間內解決此問題可能將是一份不小的工作。”
另外,除了 Rails 之外的那50多萬個項目也并非是立即受到影響,只是之后任何嘗試獲取從 RubyGems.org 撤下的 mimemagic 版本的構建過程都會失敗,除非在此之前就已經實現了依賴緩存機制。因此目前所有使用 mimemagic 的軟件項目都面臨采用 GPLv2協議帶來的影響。
上周四,mimemagic 團隊恰好印證了 Berg 的建議“mimemagic 可以嘗試替換代碼中的 GPL 部分,保留其 MIT 許可證”,撤回0.3.6和0.4.0版本,更新了0.4.1版本,該版本恢復了 MIT 許可證并刪除了 GPL 相關的代碼——the Freedesktop.org Shared Mime Types 數據庫,不過現在用戶必須自己提供 mime 類型數據庫了。
網友:我非常不喜歡 GPL
這件事的波及范圍較廣,因此眾多網友對此也進行了熱議。
評論1:
對于不太關注自由/開源軟件的人來說,這種類型的問題令人沮喪。當然,許可證很重要,但是普通用戶只是想讓事情正常運行。
評論2:
我真的非常不喜歡 GPL。或者更確切地說,我非常非常不喜歡那些對“衍生”的意思有不合理且籠統想法的人。