使用者工具

網站工具


essays_and_articles:openfoundry_legal_column_selected_collections_2011:在源碼之外_編譯與安裝資訊的提供

這是本文件的舊版!


在源碼之外-編譯與安裝資訊的提供

葛冬梅/文 2009-08-22

依據 GPL 規定,散布 GPL 程式的人,必須要提供程式源碼給拿到 GPL 程式的人。按照字面意義,所謂的源碼就是程式修改源頭的原始碼 (Source Code),也就是其他開發者可以很方便接續修改這個程式的形式。不過 GPL 在定義源碼範圍的時候,特別提到、若是該專案為一個可執行程式的話,完整的源碼還包括了介面定義檔、控制編譯過程的腳本與安裝資訊,GPL-3.0 更進一步規定,這裡所謂的源碼包含可以讓程式編譯、安裝起來的所有原始資訊,按照這樣的規定,所有該程式相關的必要編譯工具組 (toolchain),也都包括在這個定義範圍之內,進入散布時必須提供的清單之列(註一)。可是有關程式元件相關的額外資訊,其實並不皆為程式運作時必要的附加物,甚至有些是使用者自己撰寫,完全沒有引用或包含到 GPL 元件的程式碼,在這樣的情況下,許多人常常便會產生疑問:此時使用者自行撰寫的額外資訊,也都必須要依照 GPL 的義務性要求提供出來嗎?

討論這個問題我們可以切成兩個不同立場來看!首先、從自由開源軟體推動社群的理念角度來看,其撰寫 GPL 程式的目的,是為了讓有能力的程式開發者,可以自行研究與修改該程式,讓程式因此變得更好用,並且也不會在接續修改、後續散布的過程中,讓後手將相關的程式源碼封閉起來。為了達到這個目的,除了讓使用者可以修改程式外,還必須要讓開發者可以編譯程式,並且安裝起來,這樣開發者才可以知道修改後的程式執行起來效果如何。在此種思維下,若一個可執行程式採用 GPL 授權的話,除了單純的程式源碼,使用者在散布程式的時候當然必須一併提供該程式的安裝與編譯資訊,以及必要的相關工具,以讓拿到程式的後手開發者,可以盡興地修改、研究這個 GPL 授權程式與其衍生程式(註二)。

然而、從一般商用自由開源軟體廠商的角度來看,其取用 GPL 元件加入自己的商業產品時,固然因為授權條款明確的規定,其對直接自 GPL 程式衍生出來的程式碼,必須要擔負一併提供程式源碼的義務,然而其在遵循此項義務時也會產生疑惑,那就是:針對該 GPL 元件與其他元件互動的優化與調校資訊,有時並不直接涉及程式碼的引用與改作,這部份的額外資訊,也會被列入必須提供的清單之列,而喪失掉公司商品競爭的優勢嗎?而 GPL 授權條款這樣的進階要求,又具不具有法律上的強制拘束力呢?

其實、中道的就這個議題來做分析,GPL 授權條款就此議題的義務性要求,確實較諸著作權法的預設幅度還要廣,然而、以契約條款補充法律預設條文的不足,本就是私法經濟下契約自由主義所容許的大原則,也就是說、如果程式的使用者不同意 GPL 授權條款此項要求,其仍然具有拒絕使用 GPL 授權元件的自主權,而倘若程式的使用者,已將 GPL 授權的程式碼編寫進自己維護的專案裡,那麼基於著作權法的預設規定-「權利人保留所有權利 (all rights reserved)」,取用他人擁有著作權利的程式碼必然要預先得到其合法授權,所以使用者取用 GPL 授權程式碼的行為,已經是以「意思實踐」的形式,來公開承諾接受 GPL 授權條款的諸般義務性要求,此時、以 GPL 授權條款的內容來論,其就狹義程式碼之外的編譯與安裝資訊提供義務,既已明文列示要求,那麼這樣的義務性條款如果不是顯失公平的話,那原則上便應會被全球各地的司法機構所共同肯認,而認為具有契約義務的執行效力。

這樣的話,一般 GPL 程式的使用與再散布者,對於所提供的資訊應該要做到什麼樣的的詳細程度呢?最佳狀態,當然是附上一個步驟一個步驟的編譯與安裝資訊,甚至連相關的工具組也一併附上。而最低程度,筆者以為必須要做到,一般具有相關領域基礎知識的程式開發者,皆可以循著該程式源碼所提供的資訊,將所提供的程式源碼編譯、安裝並執行起來,而若是這樣的標準也沒有達到,那就表示所提供的資訊太過簡略。比喻來說,這些編譯與安裝資訊就好比是學生上課的筆記,有的學生筆記做得詳細,缺課同學借來看,如同親臨上課一般,詳盡的編譯與安裝資訊就像是這種筆記。有的上課筆記比較簡單,只有大綱與重點說明,缺課同學借來看雖然無法馬上就理解吸收,但是經過一番思考,與搜尋、參考相關資料之後,仍然可以理解老師上課的內容,若所附上的編譯與安裝資訊可以達到這樣的效果,筆者以為這就達到了最低標準。而有的上課筆記非常簡略,只有重點、大綱,甚至只有一些關鍵字,這樣的內容只有做筆記的同學自己可以看得懂,缺課同學拿到之後,除非詢問原來做筆記的同學,否則根本無法理解筆記的內容,若所提供的編譯與安裝資訊也是這樣簡略,對於其他開發者來說,有如無字天書,並無法達到協助他人安裝執行程式的目的,這是筆者認為最易引發授權糾紛與爭議的狀況。

另外關於工具組的利用方式,筆者想要特別說明。有人以為所提供的工具組,僅是單純作為工具使用,所以有沒有提供原始碼都不重要,其實若所提供的工具組也是採用 GPL 授權的話,當然必須要依照 GPL 的規定,將原始碼也提供給後手開發者,這並不會因為工具組所帶有的工具特性而受到影響。若所提供的工具組不是採用自由軟體方式授權,那當然也必須遵守這個工具組的授權內容,授權內容不允許提供原始碼給他人的話,當然就不需要提供。

自由軟體強調的是開放、分享的精神,希望透過互相分享、討論的方式,來達到研究、修改,進而改善程式的目的,基於這樣的理念,許多開發者將自己的原始碼免費地提供給他人利用,所要求的回報不外乎就是尊重,而尊重的具體表現就是遵守授權條款的遊戲規則。雖然 GPL 的對於提供編譯與安裝資訊這方面的規定,不見得具有法律上的強制力,但是若從自由軟體整體的發展環境來說,筆者認為在提供原始碼的同時,也應該要提供這些資訊,甚至是相關的工具組給開發者,如此才可以將自由軟體的開發帶入良性、正面的循環中,讓自由軟體的開發整體朝向正面來推進。


註一:GPL2 第 3 條第 2 項:“The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.”。 GPL3 第 1 條第 4 項也有相對應的規定:“The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.”

註二:為了便利開發者研究、修改與改善程式,除了附上詳細清楚的編譯與安裝資訊之外,詳細的說明文件也是不可或缺的一環。透過這些文件與資訊的提供,自由軟體開放、共享的精神才能真正體現,將軟體的開發與改善帶進一個良性的循環。不過說明文件的提供與授權不在本文討論之列,因此文中並未提及,在此一併說明。對於這一議題有興趣者,可以參考:林珈宏,自由軟體說明文件的授權選擇,自由軟體鑄造場電子報第 127 期。

essays_and_articles/openfoundry_legal_column_selected_collections_2011/在源碼之外_編譯與安裝資訊的提供.1330764268.txt.gz · 上一次變更: 2019/01/16 03:38 (外部編輯)