Login  |  繁體中文
感謝您對「自由軟體鑄造場」的支持與愛護,十多年來「自由軟體鑄造場」受中央研究院支持,並在資訊科學研究所以及資訊科技創新研究中心執行,現已完成階段性的任務。 原網站預計持續維運至 2021年底,網站內容基本上不會再更動。本網站由 Denny Huang 備份封存。
也紀念我們永遠的朋友 李士傑先生(Shih-Chieh Ilya Li)。

讓人既愛又頭痛的 GNU GPL

GNU General Public License(以下簡稱 GPL)是第一份以「軟體自由 (Software Freedom)」為號召目標而成文的「自由軟體授權條款 (Free Software License)」,也是目前最廣被使用的自由開源軟體授權條款 (Free and Open Source Software License) 之一。它的誕生緣由,是因為自由軟體之父 Richard M. Stallman(以下簡稱 Stallman),為了其所推動的自由作業系統開發計畫-GNU Project (The GNU Operating System) 尋找適當的授權方式,於是在 1989 年草擬出 GPL-1.0,其後並於 1991 年發布目前最為人通用的 GPL-2.0。從規劃內容來說,GPL 授權條款整個架構與理念,就是源自於 Stallman 所宣示的軟體使用者四大自由(註一):

  • 【自由 0】使用的自由:可以不受任何限制使用該軟體。
  • 【自由 1】研究的自由:可以研究該軟體的運作方式,並使其符合個人需求。
  • 【自由 2】散布的自由:可以自由地複製該軟體並散布給他人。
  • 【自由 3】改良的自由:可以自行改良該軟體並散布改良後的版本,以嘉惠眾人。

為了實現上述進階的研究自由與改良自由,使用者必須可以取得軟體的程式原始碼 (Source Code)。而任何一個符合上述四大自由的軟體就可以被稱為自由軟體。而要落實這四大自由,Stallman 接著設計了一套不同於當時既有模式的著作權授權機制-Copyleft。Stallman 為 GNU Project 建立的 Copyleft 機制的最大特色有二:

  1. 使用者可以免授權金地執行、重製與散布這些程式,並且同樣以免授權金的條件,取得其程式原始碼;
  2. 任何基於這些程式原始版本所開發出來的修正版本 (modification) 或衍生版本 (derivative work),於再散布時、仍然必須採用完全相同的授權方式。

透過 Copyleft 這種預告後向後循環拘束的機制,GNU Project 轄下、以及其他著作權利人以 GPL 授權條款釋出的軟體專案,不僅僅最初原始程式版本是以免授權金、開放原始碼的方式進行散布,就連之後所產生出來的修改版本也一樣。所需要特別注意的是,所謂 Copyleft 的授權模式仍然是奠基在著作權制度 (copyright) 之下,要將作品以 Copyleft 機制散布出去,首要條件就是這個散布人本身即為此作品的原始創作人或是合法被授權人,可以說、自由開源軟體仍然是享有著作權保護的客體。

Stallman 為 GNU Project 所推行的 Copyleft 授權機制,落實為書面的條款文字內容,就成為了 GPL 授權的條款內容,它的要點項目包括:

  1. 散布 GPL 程式目的碼 (object code) 之人(例如:燒成光碟給他人),便有責任提供同一程式之原始碼。倘若使用者先行散布了該程式的目的碼,則得到目的碼之人、即可在取得目的碼之時向其另外索取程式原始碼,而此程式原始碼的提供行為,僅能收取傳送與提供上必要的工本費用。
  2. 原 GPL 授權程式不論是原始版本或是修改版本,於再散布時一律僅能使用 GPL 授權條款來進行散布。
  3. 散布 GPL 程式時,須以不收取授權金的方式讓後手使用者能自由執行、重製、修改與散布程式。然而、授權金名目之外的其他費用可以合理的收取,例如重製或散布時所需的工本費用,將程式客製化調整或是優化的服務費用,又或者是為後續使用者提供程式合用性、可用性擔保而另外收取的擔保費用。
  4. 不附隨擔保(no warranty),如果 GPL 程式的散布行為採取不收取任何費用的方式進行,那麼依照 GPL 授權條款的預設,此時散布者原則上並不對程式後續的使用者提供任何形式的擔保,不過如上所述,特定的散布者取用 GPL 元件進行商業販售時,可以自行對其客戶提供額外的擔保。

GPL 因為基於 Copyleft 的循環授權機制所發展出來,所以其授權規則會隨著程式的修改、衍生,以及再散布而不斷的傳散下去,再加上條款當中規定,擷取 GPL 授權程式碼,融入其他軟體專案來進行使用,此種利用行為如果專案中的其他元件對 GPL 授權程式碼有緊密的互動性與相依性的話,則整個軟體專案會被 GPL 授權條款解讀為 GPL 授權程式的衍生著作,而嗣後必須一體適用 GPL 授權條款來進行後續釋出(註二)。所以有人戲稱 GPL 這樣的授權擴散規則,像是病毒一般具有感染效應 (viral effect),會將同一專案裡的其他元件也感染成為 GPL 的授權狀態。而此種外擴性的授權特性,雖然維持了 Stallman 對於軟體自由自由開放的理念,卻也一定程度剝奪了 GPL 程式碼取用者,對於衍生作品授權方式的選擇自由,所以 GPL 可說是集毀譽於一身的授權條款。這樣的特性對於認同軟體自由理念的程式開發者,以及單純下載程式免費使用者來說,是相當受到歡迎的,但是對於那些想要使用 GPL 授權程式碼,卻因種種原因而不願意第一時間將後續開發的程式原始碼提供出來的人來說,卻是相當頭痛的,因為遵照 GPL 這條授權規定,勢必他們得要割愛去另外尋找合適的替代元件。此外,還有一些人不清楚這樣的規定,便逕自使用了 GPL 授權的程式碼,之後才知道必須開放原始碼,此種再要進行產品販售策略的調整,往往可說事倍功半、為時已晚。

GPL 目前較多程式採用的為第二版,其中當然有許多適用上的問題,因此由 Stallman 所創辦的自由軟體基金會 (Free Software Foundation, FSF) 已著手草擬第三版(於 2007 年 6 月 29 號,自由軟體基金會已發布了籌劃與修訂逾年的 GPL 第三版,詳見註三),期待修改出來的版本能更加完善與便利使用。不過上述 GPL 令人既愛又頭痛的特性,應該還是會被新版條款繼續保留,畢竟就是因為這樣擴張性的授權特性,使得 GPL 授權條款引領趨勢、獨樹一格,許多相關的軟體專案也因為得以加入更多的開發能量並廣泛地流通,並且持續受到越來越多參與者的認同與支持。


註一:有關 GNU Project 的緣起與 GPL 產生背景請參見右列頁面:https://www.gnu.org/philosophy/philosophy.html

註二:關於 GPL 授權條款所蘊含的授權外擴性與拘束性機制,請參照,林誠夏,GPL 條款對於衍生程式的判定標準與其授權拘束性的擴散範圍(上),https://www.openfoundry.org/tw/legal-column-list/8446-the-license-inheritance-bounds-of-gnu-gpl-01,自由軟體鑄造場電子報,第 181 期;GPL 條款對於衍生程式的判定標準與其授權拘束性的擴散範圍(下),https://www.openfoundry.org/tw/legal-column-list/8447-the-license-inheritance-bounds-of-gnu-gpl-02,自由軟體鑄造場電子報,第 183 期。

註三:關於新版 GPL-3.0 的內容介紹,請參照,葛冬梅,在四大自由精神之下強化的 GPL-3.0,https://www.openfoundry.org/tw/legal-column-list/1108--gpl3,自由軟體鑄造場電子報,第 85 期。



OSSF Newsletter : 第 33 期 中介軟體(Middleware)(下)
Tags: Copyleft,   四大自由,   基本概念,   授權拘束性,   GPL,  
Category: Legal Column