Hi takeshi,
不要客氣,只是有時候工作上排定的事務忙的時候,會稍遲才能回覆您的問題,這點還請見諒。
以下依您提出來的相關問題做一個簡要的回覆。
1、新編撰的Java Library大抵是自己重新寫就,但其中內含兩個Apache-2.0授權的重要元件、且此兩元件為函式庫的主要功能之一,而這樣的狀況、如果想將Java Library裡自行撰寫的部份採用GPL-2.0或LGPL-2.0授權釋出,需不需要將其中內含的Apache-2.0授權元件重新撰寫,或是洽詢其著作權利人重新授權,來與Library裡GPL-2.0、LGPL-2.0授權的部份取得授權相容性?
簡答:看狀況來定,就授權理論的方面、最好的作法還是將Apache-2.0授權的部份同步改授權,但是實務上也有很多直接保留Apache-2.0授權狀態的例子!
(1)如果自行撰寫的部份採用GPL-2.0或LGPL-2.0授權,但是與此二Apache-2.0元件之間的互動存取關係是一般所謂「動態連結(Dynamic Link)」的關係,則原則上兩種授權狀態是可以併存在一個專案裡的,因為這種狀態下、一個專案裡分別以GPL-2.0與Apache-2.0授權的元件,可以被視為獨立而分開運作(Separate and Independent)的程式。
(2)如果自行撰寫的部份採用GPL-2.0或LGPL-2.0授權,但是與此二Apache-2.0元件之間的互動存取關係是一般所謂「靜態連結(Static Link)」的關係,則原則上兩種授權狀態是不可以併存在一個專案裡的,因為這種狀態下,一個專案裡雖概念上有以GPL-2.0與Apache-2.0分開授權的兩部份,但由於運作上這些程式碼密不可分,所以會整個被解釋為核心元件的「衍生著作」,而再因為GPL-2.0授權的部份會有授權拘束的外擴性(Copyleft),則理論上此時整個專案的散布者、應將Apache-2.0元件的部份,透過重新撰寫或是另取得授權的方式,將其改為GPL-2.0或LGPL-2.0的授權元件,然而在許多不具營利性的社群專案,很多的專案開發者其實是逕予保留原來Apache-2.0的授權狀態,這是因為Apache-2.0授權的元件,本身必然也在散布上可取得元件的程式源碼,所以雖然沒有完全依照理論將其轉為GPL-2.0授權,但不容易引發太大的授權爭議,但是、如果是商業性的散布,則有時候便會看到GPL-2.0元件部份的撰寫者提出抗議的例子。
2、「再授權(sublicense)」與一般口語所說的「重新授權(relicense)」是同一件事嗎?還是兩者之間有什麼差別?
簡答:「再授權(sublicense)」與「重新授權(relicense)」不是同一個概念。前者、sublicense是一個法律詞彙,代表「被授權人轉以授權人的地位,將某個他從別人身上取得的權利,轉授權給其他的被授權人。」後者、relicense是一個口語詞彙,代表某個東西之前被授權過,但可能以改變對象的方式授權給其他人,或是以改變內容的方式,重新授權給同一個人。
(1)sublicense的內涵有兩個重點:
A、轉授原作者的權利給其他人
sublicensor轉授來自original licensor的權利給其他的licensee,例如A程式本來是作者甲以Apache-2.0授權釋出的,甲將這個A程式以Apache-2.0的方式散布給乙,而由於Apache-2.0允許sublicense,所以乙「可以用自己的名義」將這個A程式,或是修改A程式之後衍生的B程式,以GPL-3.0的方式「轉授權」給丙
B、轉授權的範圍不超過原作者本來的授權範圍
「sub-」這個字首在英文的字義裡有「附屬、次級」的意思,從這邊我們可以了解到,sublicensor轉授權給其他人的權力範圍,不會比他直接從original licensor那邊得到的權利還大;這也就是為什麼、如果一個C程式,原作者甲以MIT授權的方式釋出給乙,乙可以依「sublicense」的方式將原C程式、及衍生後的D程式,轉以Apache-2.0的授權方式釋出給丙,而丙也可以依「sublicense」的方式將D程式衍生後的E程式,轉以GPL-3.0的授權方式再釋出給丁,這個再授權的模型、在條款別方面是:MIT→Apache-2.0→GPL-3.0,那可不可以將Apache-2.0的元件「再授權」之後以MIT釋出呢?這是沒有辦法的,因為「再授權」的範圍,不能去大於「原始授權」的範圍,所以比喻來說,MIT授權方式裡的義務性要件可能有「Ⅰ、Ⅱ」兩款,所以這隻程式可以被再授權為Apache-2.0,因為Apache-2.0的義務性要求可能有「Ⅰ、Ⅱ、Ⅲ、Ⅳ」,恰恰涵蓋了原來MIT中的「Ⅰ與Ⅱ」,而之後的GPL-3.0的授權義務性要求有「Ⅰ、Ⅱ、Ⅲ、Ⅳ、Ⅴ、Ⅵ」,也可以涵蓋Apache-2.0中的「Ⅰ、Ⅱ、Ⅲ、Ⅳ」,所以說、為什麼Apache-2.0授權的元件不能被轉授權為GPL-3.0呢?這是因為Apache-2.0的義務性要求有「Ⅰ、Ⅱ、Ⅲ、Ⅳ」,但自由軟體基金會認為GPL-2.0的義務性要求只有「Ⅰ、Ⅱ、Ⅲ、Ⅴ、Ⅵ」,此處少了原本在Apache-2.0條款裡的「Ⅳ」要件,才會造成Apache-2.0的元件,在自由軟體基金會的解釋下,不能逕自「再授權」為GPL-2.0(但可以被散布者逕行再授權為GPL-3.0)。
(2)relicense的內涵也有兩個重點:
A、重新授權給不同的對象、或是重新授權給同一個對象但不同的授權內容
比方說、A程式本來是由甲以MIT的授權方式散布給乙,而丙知道乙有這隻程式,但乙並不願意散布給丙,那麼甲知道之後、可能口頭和丙說,那我再授權(re-license)一次給你好了!而或者、A程式本來是由甲以GPL-3.0的方式散布給乙,但乙認為以GPL-3.0的方式並不適合他商業利用,所以向甲詢問其他的授權方式,此時甲如果同意的話,可能便會「relicense」重新選擇MIT或是Apache-2.0的方式,再次授權這隻程式給乙。
B、再次授權會是一個全新的授權關係、全新的授權內容
relicense就是一個全新的授權關係,所以在對象上可以和原來的授權關係不同,在範圍上也可以大於或是等於或是小於原來的授權範圍。
3、如果透過Apache-2.0授權條款裡的「再授權(sublicense)」機制,不是可以將Apache-2.0的授權元件轉為其他的自由軟體授權方式嗎?那麼若是將原本Apache-2.0授權的元件,改為GPL-2.0授權的元件,便應該可以和其他以GPL-2.0或LGPL-2.0授權的Java Library直接相容?
簡答:依照上述「轉授權範圍不得超過原授權範圍」的原則,其實Apache-2.0的授權元件是沒有辦法被sublicense為GPL-2.0或LGPL-2.0授權的元件的,但是可以sublicense為GPL-3.0或LGPL-3.0授權的元件,所以走這個處理方式,應該就是將此二個Apache-2.0授權的元件,sublicense為GPL-3.0或LGPL-3.0的授權方式,再和以GPL-3.0或LGPL-3.0授權的Java Library直接相容。
4、目前License Wizard在GPL的部份,是不是只有處理到GPL-2.0的授權內容,而不及於GPL-3.0之後的版本?而其中「授權他人使用程式中的專利」這個子題,如果選否、是不是指的就是「未定義」,而不是「禁止」的意思?
簡答:是、目前OSSF製作的License Wizard,不論是2.3或是3.3版,精靈的指引內容都是以GPL-2.0與LGPL-2.0為範本,而還沒有拓展到GPL-3.0與LGPL-3.0上;而「授權他人使用程式中的專利」這句話,如果選否,可「同時解釋為未定義、但同時也代表禁止」的意思。
關於「授權他人使用程式中的專利」如果選否,解釋上為何同時代表「未定義與禁止」的意思?這部份我稍作解釋,因為智慧財產權的領域裡,原則上是「未經明示授權的部份均推定為未授權」,所以說若是一個自由軟體授權條款中,沒有明定的專利授權條款,那就代表此一程式的著作權人,就算一併將其專利權寫進程式裡,那麼依據自由軟體授權條款使用這隻程式的其他人,也只是在「著作權」的方面得到合法授權,但專利權的部份還是沒有得到授權!所以說若是該自由開源軟體授權條款中沒有專利條款,那麼依法律的預設,原作者就是沒有要將專利權利一併散布出去給他人使用。所以當初在設計這個License Wizard時,所著眼的其實是「授權他人使用程式中的專利」選「是」的對象,這些選「是」的條款、就是在條款內明定一併將著作權與專利權合併公眾釋出的條款。
而附帶一提,GPL-2.0/LGPL-2.0有沒有明示的專利授權條款,這部份是有爭議的,Richard Stallman本人認為透過「解釋」,GPL-2.0與LGPL-2.0是有專利授權的規定的,但很多人持不同看法,這部份進一步的資訊,可以參照我與葛冬梅小姐合撰的專文「GPL2 第 7 條淺評」:
www.openfoundry.org/tw/legal-column-list/894-gpl2-7-,這篇文章是肯定GPL-2.0可以透過解釋、得到有專利授權條款的結論,不過畢竟還是具有爭議性,故我們在設計License Wizard時,還是將GPL-2.0/LGPL-2.0的部份,定義為沒有專利授權的條款類別,以避免產生使用者誤認的狀況。
5、如果Jave Library要申請專利,那麼其所選用GPL的版本是2.0或是3.0會不會專利授權金能否收取的差異?
簡答:是的、會有很大的差異。GPL-2.0沒有大家共認「明定的」專利授權條款,所以也有一派的看法是,如果該GPL-2.0程式帶有專利,那麼使用者即使以GPL-2.0的授權規則來商業使用這些程式碼,仍然要與其專利權人洽談專利授權費用;然而、GPL-3.0預設規定是,若散布程式者將其專利權寫進該程式,則收後程式的後手一併從其手上得到了專利授權,只要後手運用此一程式的商業模式,不去逾越GPL-3.0的相關規定,則其便不需再向這些將專利寫進程式的散布者,再次洽談專利權的授權費用。
這部份的相關問題其實頗為複雜,進一部的相關資訊,亦可參照我在本年度11月撰寫的專文「備位啟動的自由開源專案軟體專利」:
www.openfoundry.org/tw/legal-column-list/8498-standby-software-patent-free-and-open-source
希望上述的這些資訊對您有所幫助!
20111216 1800 LUCIEN C.H. LIN