此篇文章原載於自由軟體鑄造場網站上的「法律專欄」,與林誠夏共同撰寫完成。
~~~~~~~~~~ 本文開始 ~~~~~~~~~~
GPL 授權條款有著許多不同於傳統軟體授權方式的相關規定,其中散布程式的時候必須提供源碼的規定,則是影響最大、也最常被違反的一項。這項義務與其他 GPL 條款中所規定的義務一樣,都是透過散布行為而被開啟,也就是說,程式被利用或移轉的方式若不是 GPL 條款所定義的散布行為,散布者就可以自由選擇是否要去遵守其他後續的相關義務規定。因此散布的內涵有著左右 GPL 義務規定是否被啟動的重要地位。
在單純的例子裡,大家都可以輕易理解什麼是散布,例如甲從網路下載了 GPL 程式 A 之後,再將程式 A 拷貝到朋友乙的電腦中,這時候程式 A 就是從甲的手中被散布到了乙的手中,因此依照 GPL 規定,甲負有將程式 A 源碼提供給乙的義務。但是隨著資訊科技的發展與商業交易行為的多樣化,使用者可能在利用銀行自動化設備與租借嵌入式裝置的同時,而間接利用到、或者甚至間接占有了 GPL 程式一段期間,例如前一陣子才停止網路電視服務的壹多傳媒,該服務出租網樂通機上盒給予客戶,客戶只要自行將顯示螢幕與網路線接到機上盒,就可以收看所提供的網路電視節目,這個機上盒為嵌入式的 Linux 作業系統,有利用到很多 GPL 程式,但是壹多媒體在最初時並沒有釋出機上盒的程式源碼,因而引發後續爭議,就是一個典型的例子。這種透過出租產品與提供服務,所造成程式碼移轉的行為,是否也屬於 GPL 所規定的散布程式碼的行為?針對這個問題,本文將會針對目前被廣泛採用的 GPL-2.0 與 GPL-3.0 說明相關規定,並嘗試釐清問題的癥結點,期望可以拋磚引玉的讓大家對這個議題,有一些基本的認識。
【GPL-2.0 與 GPL-3.0 均以占有程式碼為啟動義務的核心概念】
GPL-2.0 中關於散布程式必須提供源碼的規定是在第 3 條第 1 項,相關的主要內容如下:
“3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:……”
這一個條項規定使用者可以重製與散布 (distribute) GPL 程式與衍生程式的目的碼或可執行檔,但必須透過特定方式來提供程式源碼。GPL-2.0 針對「散布 (distribute)」一詞並沒有另外加以定義或說明,因為 GPL-2.0 制定於 1991 年,依照當時的資訊科技而可以想像到的程式碼移動態樣並不複雜,原則上只是很單純地透過一個儲存媒介轉換到另外一個儲存媒介,來改變其被占有的狀態,即使程式碼有可能透過當時並不普遍的學術網路來改變其儲存位置,這樣的過程也與儲存媒介轉換所差無幾,所以 GPL-2.0 採用「散布 (distribute)」一詞就足以含括當時程式碼移動的可能態樣,也足以達到 GPL 所蘊含的目的:「占有程式之人皆可以取得源碼來研究與改進程式。」因此在這樣的時空背景之下,「散布」一詞並沒有必要在 GPL-2.0 中進一步地被定義。
但是隨著科技進步與商業行銷的多元化,針對「散布」內涵的討論與爭議逐漸浮上檯面(註一),因此在 GPL-3.0 改版的過程中,也對於這一個詞進行置換,並且給予新的定義。
“6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:……”
以上文字截錄自 GPL-3.0 第 6 條第 1 項,這一條的內容與地位相當於 GPL-2.0 的第 3 條第 1 項,因此這兩條的文字結構非常類似,但是為了解決前一個版本在用詞上所產生的問題,以及避免不同司法管轄領域針對同一用詞有著不同解釋的歧異,所以 GPL-3.0 將一些定式的法律用語,置換為相對來說更通俗白話的語彙,以避免司法機構沒有深入了解 GPL-3.0 的授權架構,便逕依傳統因襲的方式來解釋這些重要名詞。因此在上面節錄的內容中會看到不同於二版的用詞,例如:”covered work” 是兼指 GPL 程式與被修改後的衍生程式;”convey” 則是用來替代二版的 “distribute”,並且擴大涵蓋到複製、散布、傳輸程式等等行為,簡單來說,除了執行與修改程式之外,任何一種可以讓他人複製程式或取得程式的行為,就是 “convey”(註二),而本文採用「傳遞」作為這個詞的中譯。所以,依照 GPL-3.0 這一條項的規定,只要使用者可以讓後手複製或取得 GPL 程式的話,那麼他就負有讓後手複製或取得程式源碼的義務。
這樣的用詞改變並且加以定義,可以看得出來「傳遞」的內涵較「散布」來的要廣,其甚至將散布的前置複製行為都囊括在內,顯示出 GPL-3.0 想要將協助後手占有程式碼的各相關行為都包括在內,因此 GPL-3.0 這些用語的變化其實是在強化 GPL 所欲達到的目的:「只要經合法途徑占有程式之人,皆可以取得源碼來研究與改進程式。」可知,「散布 (distribute)」與「傳遞 (convey)」等詞本身的內涵與定義已有分別,因此筆者以為,只要後手透過散布或傳遞行為,而到達占有程式的狀態,這樣的結果論就符合 GPL 的規定,後手就可以轉為具有索取程式源碼的狀態,至於這位後手本身是否有能力來進一步研究或修改程式源碼,則不是 GPL 授權條款所要規範的,因為即使後手本身沒有能力,但他可以尋找有能力之人,來協助他研究或修改 GPL 程式。因此租用含有 GPL 程式碼的智慧型手機、路由器、機上盒等等,只要是長期持有達致一個實質占有 (substantial possession) 的狀態,例如承租人一定期間持續性占有程式的結果,承租人便可以依據 GPL 來向出租人索取這些裝置或設備中所含有的 GPL 程式源碼,出租人亦有義務提供相關的程式源碼。
【包含 GPL-3.0 程式碼的一般性使用商品必須附隨提供源碼】
那麼,何謂「實質占有」就是一個後續應被釐清的重要概念。此處表述的「實質占有」,指的是使用人雖未直接透過商務契約取得該產品內嵌 GPL 程式碼的直接授權,然而,因為產品的使用狀態已讓使用人實質性等同占有了這些程式碼,而佐以 GPL 條款的相關規定,讓其跨越商務契約的形式規定,而進一步取得這些 GPL 程式碼的相關授權。此一相關規定可以參照 GPL-3.0 第 6 條第 5 項:若 GPL 程式是以被包含在「一般性使用商品 (User Product)」中的方式被傳遞的話,只要 GPL 程式碼的占有狀態與產品的使用權能 (use of the User Product) 均被移轉給後手,只要這個占有或被移轉的狀態是達到實質一般長期性使用的程度,則不論其移轉是基於什麼樣的名目,在傳遞這項商品的同時,也必須要提供程式源碼與安裝資訊給取得商品之人(註三)。這項規定的原文如下:
“If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information…….”
這裡的「一般性使用商品 (User Product)」,指的是任何包含有 GPL-3.0 程式碼的消費型裝置或設備,該產品的販售目的可能是給個人或家庭使用,而因一般消費者並沒有能與廠商個別議定契約的地位,所以 GPL-3.0 特別律定,只要是一般性使用商品,無論是什麼樣的硬體裝置或設備,其中若包含有 GPL 程式碼,並且這個裝置或設備的使用權能與程式碼的占有狀態均被移轉,即使是因為出租、借用設備或裝置等各種不同名義,程式源碼也視同已授權,一樣必須一併提供出來。因此在本文開頭所提到的網樂通機上盒的例子中,假若這個機上盒中所利用的是 GPL-3.0 授權的程式碼,出租時沒有一併提供 GPL 授權的程式源碼,就是違反 GPL-3.0,將會導致產品販售者原本所獲得的 GPL 授權全部自動終止的效果。
【暫時性使用人並非 GPL 程式碼實際占有人】
不過,在討論這個問題的時候,必須要區別暫時性的使用人與 GPL 程式碼實質的占有人。舉例來說:餐廳老闆丙向多媒體音樂公司丁租借了一台大型的投幣式音樂點唱機,為期半年,點播機的控制程式碼部份利用到 GPL-3.0 軟體,則透過租借點唱機放到餐廳的行為,丙是 GPL-3.0 程式碼的實質占有人,因此可以向丁索取源碼,而餐廳常客戊雖然經常投幣點唱、利用點唱機,不過戊只是暫時性的使用人,並不實際占有 GPL-3.0 軟體,所以也沒有權利向丙或丁來索取該點唱機的程式源碼。
同樣的道理,自由軟體基金會 (Free Software Foundation, FSF) 在其 FAQ 也曾明確表示:使用投票機來進行投票的選民,並沒有實質占有投票機,因為投票僅為暫時性的使用行為,因此投票者並未占有任何程式碼。所以選民對於投票機中運作的 GPL-3.0 程式並沒有索取程式源碼的權利,自然也沒有後續要求修改的權利(註四)。
【不具有維護與修改地位的占有人原則上仍應享有取得程式源碼的權利】
比較大的爭論點是,有論者指出,承租人雖然實際占有租賃的裝置與設備,但是一般的租賃契約僅允許其進行預設的使用行為,而不允許其修改與維護其中的程式碼,依商務契約預設的狀態是,一旦裝置或設備發生問題,仍必須通知出租人來處理,因此即使承租人取得源碼,但由於沒有維護、修改整個裝置或設備的地位,所以並無法真正達到 GPL 制定時所預設的目的:研究與改進程式的權利。也因此在這種租賃關係,與包含 GPL 程式碼的裝置或設備相關時,也並沒有提供程式源碼的必要。
然而,筆者對上述這樣的觀點持反向看法,因為若是從 GPL 授權條款的內容來進行分析,承租人依商務契約不能修改產品控制程式碼,這的確是普遍存在的慣約,不過,該產品與服務若是已然內嵌 GPL 授權的程式碼,則「散布」與「傳遞」時原則上都必須要尊重與依循原始軟體權利人的意思來進行,因此當 GPL 已經有明確規定,而授權人又選擇 GPL 作為軟體的授權條款時,GPL 條款就代表著授權人的意思,後續拿到這個軟體的使用者因此必須要遵守其中的規定,而不能因為後續施行上可能遭遇管控模式的困難,就將整體 GPL 的內容解釋為「在租賃關係中包含 GPL 程式碼的裝置或設備時,不需要提供源碼」。再者,若是刻意執前述論者的解釋態度,又使用到權利人對軟體自由理念較為堅持的自由開源軟體專案,則後續衍生司法爭議的可能性並不是沒有。
【結語】
軟體屬於無形的智慧財產,與傳統物權一般有形的實體財產不同,也因此其所適用的法律制度與論理邏輯會有所不同,再加上 GPL 是一個不同於以往的授權模式,因此在思索出租內含 GPL 程式碼的產品,是否屬於 GPL 所規定散布/傳遞行為的時候,必須將軟體與產品的法律關係加以適當地區別、分開觀察,以避免軟體授權人的授權意思受到誤解或限制。而本文舉例的壹多傳媒,後來亦從善如流釋出了網樂通機上盒的 GPL 程式源碼(註五),雖然其並未在散布機上盒的第一時間就同步釋出,但也算是為此議題開了一個不錯的先例,可以用來當作 GPL 散布/傳遞行為實質內涵的一個註腳。
本文所討論的內容僅為現實應用中所遭遇到問題的一部份,限於文章篇幅,還有其他相關的問題並未被納入討論,例如:今天租、明天還的超短租賃期間,是否並不包括在實質占有的內涵?所謂形式占有與實質占有之間的分野與通則如何介定,又如何讓這些規則能在個案中獲得實踐。因此筆者期待本文可以起拋磚引玉之效果,引發各方不同角度的思考,以彙集後續更深入的相關討論與迴響。
—-
註一:AGPL-1.0 這份授權條款的產生,就是因為部份自由開源軟體社群成員認為, GPL-2.0 的「散布」行為無法涵蓋網路應用程式提供者 (Application Service Provider, ASP) 透過網路應用 GPL-2.0 程式的行為,因此在 GPL-2.0 的基礎之上增添條款成為 AGPL-1.0,所增添的條款即規定 ASP 業者也必須要提供使用者程式源碼。進一步相關資訊可以參閱:葛冬梅,因應網路時代與雲端應用而生的 AGPL-3.0 授權條款,http://www.openfoundry.org/tw/legal-column-list/8809;葛冬梅,ASP 與自由/開放源碼軟體的散布條款,http://www.openfoundry.org/tw/legal-column-list/494。
註二:不過 GPL-3.0 在定義傳遞 (convey) 的同時,也有除外規定:若程式僅是透過網路與使用者互動,並沒有涉及程式碼的移轉,這樣的行為並不是屬於傳遞 (convey),因此透過網路提供 GPL-3.0 應用程式服務讓使用者來利用,服務提供者並沒有提供使用者程式源碼的義務。
註三:GPL-3.0 第 6 條第 4、5 項分別針對「一般性使用商品 (User Product)」、與「安裝資訊 (Installation Information)」有加以定義,其中針對「 一般性使用商品 (User Product)」的定義原文如下:”A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.”
註四:http://www.gnu.org/licenses/gpl-faq.html#v3VotingMachine。
註五:壹多傳媒於 2012 年中開始陸續停止服務、回收機上盒,因此在該公司官網上已經找不到相關頁面,原來可以下載到源碼的網址也已不存在。本文所附之圖為截自網路媒體報導內容的附圖,該篇報導網址如下:http://chinese.engadget.com/2011/03/09/nexttv-stb-now-open-its-kernel/。