此篇文章與葛冬梅共同發表,原載於自由軟體鑄造場電子報第162期。
筆者在工作上,接觸過不少國內的軟體開發者有這樣的疑問:自己的程式 A(以下簡稱 A)採用甲款自由軟體授權條款釋出,但是之後想要採用另外一份不同的乙款條款來授權的話,是否可以將專案原來的甲款授權方式撤銷 (revoke),然後改為新的乙款授權條款來授權?雖然部份授權條款並沒有明文說明這方面的規定,目前也沒有司法判決明確禁止這樣的行為,不過因為自由軟體授權條款具有授權給公眾利用後不間斷散布的特性,因此從條款的授權架構與軟體社群的運作習慣分析之,筆者並不認為自由軟體授權專案具有嗣後撤銷性。本文將以目前最廣為應用的自由軟體授權條款 GPL 第 2 版(以下簡稱 GPL2)為例,說明公眾授權條款的特性以及嗣後撤銷授權所可能產生的問題,以解釋為何自由軟體著作權人不宜逕行撤銷原授權,而必須採取其他的方式轉換專案的授權方式。
【依照目的性解釋 GPL2 並不允許撤銷授權】
詳細翻閱 GPL2 的條款內容,可以發現,這份條款裡面並沒有任何明示允許或明示禁止權利人撤銷授權的文字敘述(但GPL3已有明文禁止撤銷授權的規定,註一),但是從目的性解釋的觀點來看,GPL2 規劃的是一種「權利散布嗣後不會被撤銷的狀態」,我們可以從 GPL2 第 4 條的授權規定了解這個觀點(註二),在 GPL2 專案的散布過程中,若是中間散布者因不遵守 GPL2 授權條款的規定而罹於「失權(right termination)」,那麼經由失權者得到此一 GPL2 專案的後續使用者,依 GPL2 第4條的規定,並不會因為上游散布者的失權,而導致自己的授權也受到影響。從這點可以看出,GPL2 授權條款預設的是一種「不會向後失效的授權態樣」,所鼓勵的是「程式碼被不斷傳散利用」的立場,從這樣的目的性解釋來看,GPL2 這樣的自由軟體授權條款,自然不當允許權利人在將程式碼向公眾進行廣泛授權後,又復自行撤銷授權。
【撤銷 GPL2 在實際運作上將引發的問題】
而一般法律上所謂的撤銷授權表示,是指將 A 的狀態恢復到跟沒有採用 GPL2 授權之前一樣,也就是說,若同意公眾授權條款的權利人能夠嗣後撤銷其授權,則此 A 專案在法律狀態上自始都沒有以甲授權條款散布過,這樣的事後撤銷行為,將會涉及非常多的使用者與開發專案,範圍之廣可能會引發相當大的問題。這是因為 GPL2 允許得到 A 專案的使用者可以自由地使用與散布程式,因此在權利人意圖撤銷 A 專案原先的甲授權狀態時,該專案可能已經被廣泛地散布到全球各地,所以當 A 的授權狀態改變時,所影響到的使用者範圍將是全球性的,此外許多使用者與開發者現實上根本無由得知 A 專案的甲條款授權條件已被撤銷,所以若是此 A 專案的權利人能嗣後任意撤銷原專案的授權,亦將連帶造成許多善意使用者在不知情的狀況下侵權利用該專案。
而任意撤銷自由軟體專案授權會帶來的另一個問題,則是影響其他自由軟體專案的開發穩定性。因為 GPL2 允許自由修改,所以 A 極有可能已經被其他的社群開發者加以修改後,跟其他的程式結合成為一個更大的自由軟體專案。一旦 A 專案的權利人嗣後自行更改授權,這些利用到 A 的自由軟體專案,可能因為更改後的授權條款與專案中其他程式的授權內容不相容,進而需要費時耗工調整軟體架構、改寫授權狀態不再穩定的程式碼。因此撤銷原自由軟體專案的授權方式,將會影響到原合法利用 A 專案的自由軟體專案與這些專案的使用者。此外,由於自由軟體具有站在巨人肩膀上進行接力開發的特性,所以因事後撤銷授權所可能引發的授權紊亂將是多不勝數,此為第二個需要慎重考量的重大弊病。
【使用者的信賴共識應該受到保護】
GPL2 自 1991 年發佈以來,至今已經過了 19 個年頭,在這期間全球自由軟體的使用者已經發展出一種對於 GPL2 授權態度的信賴感:只要利用到 GPL2 的程式碼,就表示不需要支付著作權的授權金費用,可以自由使用、修改與散布程式原始碼,並且不需要擔心著作權人是否會改變心意、撤銷授權。這樣的信賴感並非僅存在一年、兩年,或者是僅在少數人身上,而是經年累月地被絕大多數的軟體社群參與者所深信不疑著。因此雖然 GPL2 的授權文字並沒有明文禁止著作權人撤銷其授權的意思表示,但是筆者認為自由軟體透過全球性的長年實際運作,所產生跨國性的信賴共識必須要加以肯定,並受到保護,否則對於長年利用 GPL2 程式的使用者與其他自由軟體專案的開發者來說,將會遭受不合理的突襲,而對於那些無法得知授權狀態已經改變的使用者來說,這也是不公平的對待。
此外,在我國民法關於贈與契約的規定中,也可以看到信賴利益保護的類似規定。GPL2 並不是民法定式的有名契約,但若將其與附負擔的贈與契約相比較,此兩種型態的法律行為裡,都有著當事人一方擔負一定責任後即可無償受惠的關係,因此我們可以參考贈與契約的相關規定來類推 GPL2 的嗣後撤銷性:依據我國民法規定,若丙表示要將某一幅名畫送給丁,只要丁已經拿到這幅畫,原則上,丙就不能因為後悔或需要賣畫償還卡債等等理由,來要求丁歸還已經因贈與而收受的名畫,而若丙還沒有將畫拿給丁,則原則上丙可以在交付前撤銷這個贈與契約。但是,交付前的撤銷亦有其例外規定:若是丙丁之間的贈與契約經過公證,也就是經過一個公開確認的程序,那麼甲是不能因反悔而嗣後撤銷這個贈與契約的,即使此時畫作並未交付,也一樣不能撤銷(註三)。所以由此論述,既然法律可以保護丁對於公證過贈與契約的信賴,讓丁不用擔心丙會隨時反悔、撤銷契約,那麼透過近二十年全球自由軟體社群實際運作而產生「著作權人不會嗣後撤銷 GPL2 授權方式的信賴共識」,也就更應該要被跨國性的尊重與保護。
【自由軟體專案的授權方式原則上應禁止被嗣後撤銷】
前述關於 GPL2 授權禁止嗣後撤銷的論理,原則上也可以套用到其他的自由軟體授權條款上,例如:LGPL、BSD、MIT 與 Apache 2.0 等。但以上的立論並不表示,自由軟體專案的權利人嗣後完全無法異動該專案的授權模式,實務上若是著作權人對於原本的程式想要採用另外一種授權方式時,通常會將程式碼適度修改、更改該專案的版本號後,再透過其他的授權條款來釋出這個新版本的程式碼,例如原本的 A 是 1.0 版,經修改之後成為第 1.1 版,此時權利人能夠使用其他的自由軟體授權條款或收取授權金的商業授權方式來授權 1.1 版,但原 1.0 舊版則延續以甲條款來進行公眾授權,這樣的話,就可以在顧及使用者對於自由軟體授權信賴共識的前提下,也達到權利人嗣後轉換專案授權方式的目的。
註一:GPL3 第 2 條第 1 項第 1 句:"All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met."
註二:You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
註三:請參閱我國民法第 408 條第 1 項:「贈與物之權利未移轉前,贈與人得撤銷其贈與。其一部已移轉者,得就其未移轉之部分撤銷之。」,同條第 2 項規定:「前項規定,於經公證之贈與,或為履行道德上義務而為贈與者,不適用之。」