GPL(General Public License)公用授權
主講人:葛冬梅、林誠夏 of 中研院自由軟體鑄造場http://www.openfoundry.org/
2007.12.18 by brad
GPL是事先單方宣告的法律文件,如果願意接受,才可使用以GPL保護的軟體,同時也代表一使用即表示同意GPL的約束(開放原始碼)。若違反GPL,則視為自始不受授權,亦即侵權行為。
GPL草擬者RMS(Richard M. Stallman)始創自由軟體的概念,回歸過去共享的時代。倡導基於開放原始碼而成立的四大自由的精神:使用、研究、改良、散佈 的自由。
(原始碼是相對於目的碼、機器碼而言,是可以讓人閱讀的程式碼。)
GPL雖主張不可收取權利金,但GPL3有提到兩種收費方式:一、可收取散佈的工本費。此乃為形成法律概念上的責任限制條款,畢竟是無償提供,那就可以卸責。就像餐廳免費提供的牛肉湯沒有牛肉,消費者也不會多說什麼。但就故意、重大過失而言,仍不可免責。如同免費的牛肉湯還是不可以讓人喝了生病。
二、提供擔保,以獲取價金。
可用何種方式營利?
1. 提供服務(例如教學)
2. 軟硬體結合
3. 雙重授權,社群依GPL,商用則收費(例如MySQL),商用則後手不受感染。此為開發者、社群、使用者三贏。
著佐權
GPL是著作權概念的衍申。有人將此copy left的概念翻譯成「著佐權」,相對來說,copy left是基於copy right著作權的觀念來發展,主要特性在於1.前手對後手的拘束 2. 感染性(授權攫取)。因此GPL可說是一種著作權的授權,但並非專利的授權。(GPL3有涉及專利授權的條款)
(所謂前手是指軟體的提供者,後手是收受軟體的人。)
(感染性是指凡新軟體有使用到受GPL保護的軟體,例如修改,或部份包含,或附加成組,則此新軟體亦自動受GPL保護/限制,必須開放原始碼。在法律基礎上,感染相當於原作者釋出改作權所要求的對價,否則視為侵權)
除了GPL這種很嚴格的約定,另有BSD,前手對後手幾無限制,只要求揭示原作者名字(顯名主義),以及責任免責的聲明。而介於極硬的GPL和超軟的BSD之間,另有調和式的約定,例如SUN CDDL:1.若有取用或修改,則感染 2.獨立附加成組,則不感染
GPL2定義的感染
1. 修改感染
2. 結合感染
「結合」意指做為一個整體一起散佈。這部分有爭議。原文有兩個情形:1. dynamic link v.s. static link, 2. with/without well defined interface但並未明確定義,因此在灰色地帶只能討論「感染風險的高低」,而不能忽視、掉以輕心。
若要使用,如何避免感染?
1. dynamic link
2. 另行發送用到GPL的部份,使其成為使用者自行取用的行為
3. (非正當)拖、提供過期碼、面目全非的混亂碼
若有GPL感染情形,應如何處理?
1. 標示出修改的地方
2. 保留GPL的聲明,並且附上GPL的文字說明(不可以只提供GPL網頁的連結)
3. 提供原始碼
4. 表列權利人的識別資訊(顯名主義)
而所謂提供原始碼,又是什麼意思呢?何時?如何?對誰來提供?
時間:有散佈事實時,就要提供原始碼
對象:提供給被散佈者(合法得到目的碼時)、並不是提供給每個人
方式:GPL2未定義。GPL3:隨附、經要求就提供(可經由實體(例如光碟)、或網頁下載、P2P的連結
地域:不限,但原作可排除對GPL不友善的地區
GPL3與GPL2的差別?
1. 自動復權。若未依規定利用程式,被授權人取得的授權將自動終止。GPL2沒有自動復權的規定,GPL3則規定自動復權的方法
2. 專利阻礙排除。必須將寫入程式內的相關專利授權。(GPL2僅涉著作權)
3. 提供原始碼期間:GPL2規定3年,而GPL3再加上so long as you offer spare parts or customer service
4. ASP (Application Service Provider)除外條款,例如Google以GPL的軟體提供服務但並未散佈,則不必提供原始碼。(Affero GPL 則對此規範)
5. 在一定範圍內可附加條款,例如LGPL3
6. 必須提供安裝資訊、編譯腳本,讓後續使用者有修改的機會
LGPL
為減低GPL的感染性,以促進利用,LGPL提出感染的「例外」。1. work based on…->感染(請自行主張微量取用以除外) 2. work that use…不感染。
(LGPL2和GPL2互相獨立不隸屬,因work that “use”,故僅函式庫(library)可用LGPL2)
(LGPL3是GPL3的選擇性附加條款,若函式庫僅用GPL3,則只要有連結就會感染,若加上LGPL3附加條款,則可不感染)
LGPL3尚有個案例示:例如若A程式以特殊呼叫方法(不公開方法)來利用B函式庫,則A程式自動被感染。又如果是結合的情形,應提供Corresponding Application Code,使Library修改後亦可用於原程式。(TiVo條款)
GPL3還未被完全接受,爭議仍多,社群多以GPL2為主。例如Linux kernal是依照GPL2,而GNU packages則是GPL3。