第 133 期 在原始碼之外:編譯與安裝資訊的提供─自由軟體鑄造場電子報─智邦公益電子報
enews.url.com.tw · February 07,2012[法律源地] 在原始碼之外:編譯與安裝資訊的提供
葛冬梅/文 2009/08/22
依據 GPL 規定,散布 GPL 程式的人,必須要提供原始碼給拿到 GPL 程式的人。按照字面意義,所謂的原始碼就是原始碼,也就是其他開發者可以很方便修改這個程式的形式。不過 GPL 在定義原始碼的時候,特別提到,若是一個可執行程式的話,完整的原始碼還包括了介面定義檔、控制編譯的腳本與安裝資訊, GPL3 更進一步規定,這裡所謂的原始碼包含可以讓程式編譯、安裝起來的所有原始碼,按照這樣的規定,所有相關的編譯工具組(toolchain)都包括在提供的清單之列(註一)。可是這些額外的資訊與原始碼,其實並非程式的本體,甚至有些是使用者自己撰寫出來的,完全沒有利用或包含到 GPL 程式,在這樣的情況下,使用者還必須要將這些資訊提供出來嗎?
GPL 撰寫的目的是為了讓有能力的程式開發者,可以自行研究與修改程式,讓程式因此變得更好用,為了達到這個目的,除了讓使用者可以修改程式外,還必須要讓開發者可以編譯程式,並且安裝起來,這樣開發者才可以知道修改後的程式執行起來效果如何。在這樣的思維下,若一個可執行程式採用 GPL 授權的話,除了單純的原始碼,使用者在散布程式的時候必須一併提供相關的資訊,讓拿到程式的後手開發者,可以盡興地修改、研究 GPL 程式,編譯腳本與安裝資訊就是具有協助開發者研究與修改程式的功用(註二)。
不過這樣的規定不見得完全具有法律上的強制力。GPL 之所以可以要求其他開發者將原始碼提供出來,是因為開發者在自己撰寫的程式中用到了 GPL 程式碼,因此 GPL 程式著作權人可以要求這個後手開發者,所撰寫的所有程式碼全部採用 GPL 來授權,否則就請不要用 GPL 程式碼。這就是「拿人的手短、吃人的嘴軟」,否則就請自力更生,不要依賴 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 條第 3 項也有相對應的規定:"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 期。
關鍵字:工具組,toolchain,安裝,編譯,原始碼,GPL,source code,
[名家專欄] 微軟潰堤在即,合作夥伴應借鏡英特爾
朝陽科技大學資管系 洪朝貴老師/文 2009/08/14
微軟就快不行了;臺灣的資訊產業及大學的資訊科系有沒有作好準備?微軟帝國的瓦解,將會像水壩潰堤,或是像雷曼兄弟的破產一樣,對社會產生巨大的衝擊。每一位電腦用戶,都會受到影響;但是其中特別是資訊業者,以及與微軟關係密切的合作媒體﹑ 校長﹑ 教授﹑ 週邊廠商﹑ 非資訊產業的資訊長,將遭受到最大的衝擊。目光長遠,微軟包袱較輕的公司組織或個人,會考慮像 Google 或 IBM 或 RedHat 或 Canonical 一樣,大量甚至全面擁抱自由軟體;至於包袱沈重的微軟長期合作夥伴或依附微軟生存的小廠商,至少可以學學 Intel。本文針對後面這類的企業,提出一些忠告。腳踏兩條船,也許是不確定年代的最保險投資。
[本文亦摘錄轉貼於 zdnet;隔天發現一篇類似觀點的英文文章,稍微節譯幾句:「從華碩的小筆電戰術看微軟失去主導權」]
高階市場有蘋果(微軟間接承認),低階市場有 Linux(微軟直接點名),微軟正面臨兩面夾殺。連續第二季財報不理想( 中文 )只是病癥;如果不消除 病灶(過去的核心價值;現在的核心問題),不改變 與網路為敵 的態度,那麼這類令投資人憂心的事件,才只是開始而已。請搜尋「Microsoft decline」,看看更多的預測分析。相反地,也請搜尋「Microsoft prospect」 之類的正面詞彙,看看能找到什麼樂觀的前景。仍舊堅持認為微軟還是會主導未來十年的資訊市場嗎?我無力再談,只能送給這些朋友一個連結作為最後的回應: 微軟下沈事件列表。微軟潰堤,沒有「會不會發生」 的問題,只剩下「何時會發生」 的問題。
您也同意微軟前途堪憂。但貴公司與微軟有密切的合作關係,或是貴公司的存在,根本就是依附著微軟。接下來該怎麼辦?
如果我與微軟有利害關係,當然也不會公開挑戰微軟。但這並不妨礙小心翼翼地開拓更多元的合作關係。請想想「Wintel」一詞。我會以微軟最親密的戰友 -- Intel -- 為師。早在 2000 年時,Intel 對 Linux 的投資,就已 被風險資本家看好 -- 而且還說錢不是重點。九年之後,事實證明:重點是 Intel 在 Linux 世界變成舉足輕重的公司,成為 Linux 核心第二大貢獻者。Intel 一方面支持專為自家 CPU 設計的 Linux -- moblin;另一方面則與 Nokia 合作開發 oFono 平臺;最近更 收購 Wind River -- 嵌入式 Linux 的要角之一。
這些「小事」,對 Intel 有什麼意義?微軟幾乎完全掌控了目前的電腦市場;它把所有硬體廠商的生死,跟它自己綁在一起。(特別是 Intel)微軟不喜歡低價產品(例如 netbook),因為那會突顯它的作業系統不合理的高價 -- 請搜尋 「Windows 7 pricing dilemma」。但是強行將電腦整體售價拉高,刻意唱衰小筆電,傷害的不只是消費者,還會因為限制市場的拓展,而傷害硬體廠商。道理很簡單:單價越高,市場越小。這彷彿是微軟用自己的肉身當做一個的大壩,把本來想買低階電腦的消費者阻擋在壩後,不只讓硬體廠商快渴死了,甚至還把這些廠商抓來一起幫忙阻擋消費者。與網路為敵,與大眾利益為敵的微軟,到最後,不得不變成與自己的合作夥伴為敵 -- 與硬體廠商在 PC/筆電售價上唱反調。收成不好的時機,魔神不得不要求膜拜者以自己的族人作為祭品,讓魔神果腹。如果你曾是微軟的合作夥伴,現在它卻轉頭犧牲你的市場,來換取它的利潤,甚至直接犧牲你,想改吸你的血,你該怎麼辦?譴責微軟?指望政府?別傻了。民主國家的政府所能反應的,最多不過就是國人集體的態度而已。如果多數廠商都心甘情願地被奴役,政府當然更不可能跳出來挑戰微軟。
您只有一條路。您只能問自己:「我的合作夥伴,除了微軟,有沒有替代方案?我面對微軟,有沒有談判的籌碼?」 Intel 有。華碩有。其他較小的系統整合商也可以有 -- 如果他們願意 推出無硬碟電腦,並搭配 百毒不侵救命碟 或任何類似的隨身碟開機技術。大學校長兩年前沒有;時至今日 仍然沒有。可以想見未來幾年,(私立)大學校長們還是要持續被微軟騷擾,持續被資訊人權貴消遣。
當然,Intel 並沒有正面挑戰微軟。直到今天,Intel 還是必須在公開場合說:「一如往常,我們與微軟合作」 -- 就算只是口惠實不至,也不能公開忤逆微軟。九年前,Intel 甚至必須 挨微軟的悶棍而默不作聲。(更倒楣的卻是 OEM 廠商。詳連結內文。)本文所謂 「因應微軟潰堤」,並不是要鼓吹貴公司熱血作為反微軟的烈士。只是希望大家能睜開眼睛,認清世界大局,別再迷信微軟大神,跟著它被拖垮。隨著微軟的處境越來越艱困,隨著上層的合作伙伴或者逃脫或者被吸乾,它必須開始轉而向油水較不豐厚,但也較容易下手的合作夥伴(或客戶)下手。[置入性行銷:這一期 (411 期,2009/08/08) 的 IT Home 封面故事,有一些例子,說明微軟及其他軟體廠商如何竭澤而漁,在最壞的時機壓榨老客戶。] 貴公司在微軟帝國生態系裡面,佔什麼樣的位置,扮演什麼樣的角色?將會被用什麼方式犧牲?與微軟密切合作的企業/組織/學校/CIO,如果不懂得自問這些問題,如果沒有經營長遠的替代方案,如果只會幫著微軟補破堤,那麼堤防潰決時,您,可能就是最前線的受害者。小公司尋找微軟的替代方案,有一個好處,就是不像 Intel 那麼顯眼,那麼容易被微軟盯上。現在就開始,低調尋找替代方案,尋找替代微軟的合作廠商,是您最保險的出路。筆者私下聽到有一些「小廠」(相對於微軟)已經在進行了。如果您在檯面上還沒有看到局勢在改變,那是因為鮮少人敢公開講,而不是因為局勢還站在微軟這邊。九年前低調投資 Linux 的 Intel,就是最好的例子。
尋找什麼樣的替代合作廠商?請看看 Intel 從九年前開始,到今天更加碼的選擇是什麼?這種類型的替代方案,有很高的勝算。自由軟體時代的市場,跟微軟時代的市場,兩者的產品或個人價值所在的決勝點,可能會很不一樣。從腳踏兩條船開始,碎步改變,很辛苦也很漫長,甚至可能需要揚棄舊的商業模式;但不改變,就只有伴隨微軟下沈一途。微軟最親密的戰友,九年前就已經開始做了;您和微軟有多親密?打算什麼時候開始做呢?
※ 本文已徵得洪朝貴老師同意轉載,原文請見其部落格