Eclipse基金會發布了新版的Eclipse公共許可(Eclipse Public License,EPL),簡稱EPLv2。EPL是Eclipse基金會默認使用的軟件許可。此次更改涉及了部分特性,但主要目的是為了在保持和開放源代碼促進會(Open Source Initiative)指南相兼容的同時,兼容GPL及更早期的許可,使其可在美國之外使用。EPLv2將替代EPLv1,而EPLv1已具有13年的歷史,很大程度上基于以前的通用公共許可證(CPL,Common Public License)。
為深度解讀新版許可,InfoQ采訪了Eclipse基金會的執行董事Mike Milinkovich,他也是開放源代碼促進會的前董事會成員。Milinkovich指出:
Eclipse社區開始在物聯網領域啟動大量運行時項目,因此必須要鏈接采用GPL許可的代碼并做互操作。
但是Milinkovich還補充道,EPLv2兼容GPL并不意味著所有的項目也應遵守GPL。項目牽頭人可以決定一個新項目是否與GPL兼容,并有權在得到所有貢獻者明確同意的條件下,后期更改在許可上的決策。
EPLv1的一個主要問題在于它是和美國立法明確關聯的。確切地說,就是紐約州法律和美國版權法案(US Copyright Act)。一方面,與特定管轄區的關聯,增加了對美國以外侵權行為提出訴訟的難度,因此可能會妨礙美國以外的開發商使用EPLv1。另一方面,要將這兩個許可應用到其它相關的軟件上,還存在著一些微妙的問題。
EPLv1的應用受限于先前已得到許可的代碼,以及“衍生作品”(Derivative Work)。“衍生作品”是一個法律術語,簡而言之,根據美國版權法案的解釋,“衍生作品”被定義為“采用了重映射、轉換和采納形式的所有工作”。EPLv1明確表明,“衍生作品”并不適用于與EPLv1許可的代碼一并分發但是采用了不同軟件許可的其它軟件模塊。
GPLv2和GPLv3許可所提供的權利和義務,已經擴展到那些“基于”GPL許可程序的工作,或是與GPL許可的程序“一并分發”的工作。如果要鏈接使用不同許可發布的代碼,這一差別非常重要。
根據自由軟件基金會(Free Software Foundation)的主張,如果代碼A鏈接到由GPL許可的代碼B(靜態或動態皆可),意味著代碼A是基于代碼B的;如果代碼C鏈接到由EPLv1許可的代碼D,并不會使代碼C成為代碼D的“衍生作品”。這就意味著,GPL的權利和義務可從代碼B擴展到代碼A,而EPLv1的權利和義務將不會從代碼D擴展到代碼C。這導致了兩種許可在行為上的差異,進而也不相互兼容。
在EPLv2推出之前,項目可以通過EPLv1和Eclipse分發許可(EDL,Eclipse Distribution License)(EDL是New BSD License的一個變體)的雙重許可克服這一局限。New BSD License是一種寬松軟件許可(Permissive License),兼容GPL。正如Milinkovich所說:
BSD許可實質上移除了EPL許可的社區友好著佐權(Copyleft)特性。EPLv2在維護了EPL著佐權規的同時,允許對GPL許可的兼容。
Milinkovich希望那些目前依然采用EPLv1許可的項目,尤其是Eclipse基金會所管理的項目,能逐漸遷移到EPLv2許可。JUnit 5等一些項目已經使用了EPLv2許可。但是Milinkovich指出,對于那些在Eclipse基金會管理下但當前仍未采用EPLv1許可的項目,例如Eclipse Ceylon和Eclipse MicroProfile,可根據項目自身的需要繼續使用當前的軟件許可。
鑒于EPLv2許可是新近推出的,因此開發人員、項目和企業依然處于適應階段。Eclipse基金會正在創建了一個FAQ頁面,但是截至本文發稿時為止,FAQ依然在完善中。此外,雖然EPLv2宣稱是OSI兼容的,但它并未出現在OSI的官方網站上。這些問題有望在不遠的將來得到解決。
查看英文原文: Eclipse Foundation Renews the Eclipse Public License