窗外有自由 -- 給自己一個正確認識 Linux 的機會

(刊載於「資訊與電腦」雜誌, 2000/08)


Linux 的爆發力, 廣受媒體注意; 然而此爆發力更重要的, 是它背後蘊釀已久的自由軟體思潮與文化。 企業的資訊部門主管若想作出有前瞻性的決策, 或許更應該深入了解自由軟體文化, 而不是只看到針對爆發當時的各種細節報導。 許多批評 Linux 是短暫狂熱的文章, 就像是試圖要以單獨一張飛球的照片要判斷這些飛球的去向一樣, 缺乏時間軸的縱深。 試想: 17 年前 Richard M. Stallman 創立自由軟體基金會 [1]; 9年前 Linux Torvalds 以 GPL[2] 釋放 Linux 核心, 當時的自由軟體不論從技術面、親和力, 或商業支持的角度來看, 都乏善可陳。 當時如果以靜態的眼光試圖去預測未來的發展, 如何能夠想像接下來的「軟體界變天說」、資訊大廠的挹注資金, 以至今日資訊家電棄微軟就 Linux 的趨勢? 公元2000年, 或許是某些預言的世界末日, 但並不是軟體自由化現象的終點。 且讓筆者從電腦使用者的角度著眼, 打破「Linux 不值得信任」的迷思, 說明為何使用自由軟體才符合企業與個人的長遠利益。

軟體出了問題該找誰服務

這是不願意使用 GNU/Linux 的企業最常問的問題。 真巧, 這也是我想請教所有合法的MS Windows與MS Word用戶的問題。

你的應用程式出現「請與程式設計師聯絡」時, 你的文件中毒時, 或者你的 Windows 罷工時, 是誰幫你解決問題的呢? 是賣 Windows 或 Word 使用權給你的微軟公司嗎? 恐怕不是。筆者倒不是在指責微軟不替中Mellisa、CIH、ILoveYou 病毒的使用者善後 -- 他們的確沒有義務這麼作。 請打開 help\licence.txt 檔看看, 清楚明白地寫著微軟並不提供軟體產品之支援服務。 購買版權私有軟體 (proprietary software) , 買到的不是保障與服務, 而是使用權。

當然, 企業級的用戶可以在購買軟體使用權之外, 另外與軟體公司簽訂維護合約。 該與誰簽約呢? 如果我是MIS部門主管, 必然選擇與該軟體的製造商, 而不與其他任何廠商簽約。 這不是在替微軟或者... (呃, 台灣還用了那些其他軟體廠商的產品呢? 一下子還真不容易想出來) 在作廣告, 而是因為只有製造商握有該軟體的原始碼, 遇到問題時, 只有他們的工程師有機會深入探究問題的核心。

「軟體可以自由拷貝, 如果出了問題該找誰服務? 」 這樣的問題, 顯然把兩件事情混為一談了。 對於 GNU/Linux 等自由軟體的用戶而言, 軟體的使用權是免費的; 但如果需要技術服務那是另外一回事, 就像版權私有軟體用戶一樣, 必須另外購買。 即使你的 Linux CD 購自廠商, 也未必附贈有技術服務, 你所購得的往往只是方便, 精美的手冊和光碟片而已。 然而不同於版權私有軟體用戶的是: 自由軟體用戶有選擇技術服務廠商的自由。 美國的 Red Hat、 台灣的網虎, 或許是當地目前最具聲望的 Linux 技術服務廠商, 但是如果有一天他們的合約費高過頭了, 或是服務品質不佳, 還有很多自由軟體的 service providers 等著與你作生意。 因為自由軟體的程式原始碼不為任何單一公司所擁有, 後者的工程師一樣可以深入原始碼解決你的問題。[3] 甚至是微軟, 如果他們願意的話, 也可以出售 Linux 的服務合約 -- 因為他們的工程師也看得到 Linux 的原始碼。

事實上在國外, 自由軟體的服務合約市場已越來越成熟。 例如 IBM, HP, RedHat, Suse 等廠商都出售自由軟體的服務合約。 對消費者而言, 能夠從微軟處買到什麼樣的 MS Windows 服務合約, 就一樣可以從這些公司買到相同等級的 Linux 服務合約。 更好的是, 如果對這些公司提供的服務還不夠滿意, 你甚至還可以直接找軟體作者洽談第一手的程式修改服務 -- 沒有人或公司有能力擋在消費者與程式設計師之間。 當然程式設計師是否同意這麼做是另外一回事; 但這個可能性, 在專屬軟體的世界卻是完全不存在。[4]

當你同時使用數種不同的軟體時 (例如作業系統, 資料庫, 網頁伺服器), 自由軟體的優勢更明顯了: 如果你使用的是版權私有軟體, 而這些軟體來自不同的廠商, 那麼發生問題時更有可能因為廠商之間彼此指責反而沒有人可以負責 [5]; 然而如果你使用的是原始碼公開的自由軟體, 出售服務 (而非軟體) 的廠商就沒有任何藉口可以推卸責任了.

「使用自由軟體, 出了問題, 該找誰? 」對於這個問題, 我沒有答案, 因為選擇的自由在你, 消費者的手裏。

版本眾多, 相容性問題如何解決

有些人認為 Windows 是一個比較有保障的選擇, 因為它由單一公司掌控, 版本變化較小; 反觀 Linux, 有 Red Hat、Debian、Slackware, ... 等等眾多不同的版本, 其間的紛歧將造成相容性的問題, 對消費者終究是弊多於利; 對工程師而言更會使學習的負擔增加數倍。 如果我們把這樣的邏輯套到影音設備上, 得到的結論就是: 世界上的家庭劇院產品最好是由單一公司統一包裝出售, 不要有太多不同的版本; 如果把它用到電腦硬體上, 所得到的結論就是: PC最好只有一種廠牌, 才不會有不同PC之間不相容的情形; (咦, 這不正是蘋果電腦公司的做法嗎? ) 再把它用到汽車上, 所得到的結論就是: 全世界的汽車最好只由一家廠商來生產, 以免用 Ford Escort 學開車, 之後卻遇到 Nissan Sentra 就不會開了。

相容性問題的根源不在於有多少廠商生產多少種不同的產品來競爭, 而在於參與的廠商是否全力支援公開標準的通訊介面。 影音設備市場之所以活潑、消費者之所以可以享受選擇的自由, 是因為影音設備之間的連線、接頭不外那兩三種, 這些接頭的規格不為任何一家公司所獨有, 任何廠商都可以生產相容的產品。 各家產品可以在功能上不斷推陳出新地競爭; 但接頭規格卻必須在有實質需求, 且受到眾多廠商支持時, 才會更新。 PC 硬體市場也是這樣, 從 ISA 到 PCI 架構的這段時間當中, CPU、週邊設備的功能已經由於激烈的競爭而提升許多 (另一方面價格也下降許多。 請與 Mac 比較) ; 但相容性的格式卻沒有對消費者造成太大的困擾, 只要共同支援公開的PCI介面, 從來也沒聽說過主機板和週邊設備必須來自同一廠商這樣的理論。

軟體亦復如此, 不同的 Linux Distributions, 就像是不同廠牌的音響或不同廠牌的 PC, 把它拆成零件重新組合不僅是可行的, 有時甚至是必須的。 大部分與系統核心相關性較低的套件很容易就可以互換使用。 我的 486 筆記型電腦因為硬碟太小, 又沒有光碟機, 只能安裝slackware。 然而在上面安裝來自我桌上型電腦 Red Hat 的應用軟體, 也是一件輕而易舉的事情。 工程師只要學會操作命令列及 regular expression [6] 等組合性高的共通介面, 不論是從 Mandrake 換到 Debian, 甚或是從 Linux 換到 FreeBSD, 都應該像更換汽車廠牌一樣容易。

事實與先前似是而非的邏輯正好相反: 使用封閉通訊介面/檔案格式[7] 的軟體, 才是相容性的殺手; 而程式原始碼未公開的版權私有軟體, 正是部分廠商刻意安置封閉通訊介面/檔案格式地雷的最佳掩護。 不同版本的Word之間莫須有的不相容問題, 就是最明顯的例子。 [8] GNU/Linux 及其上的自由軟體, 不僅支援公開的標準, 連程式原始碼都公開了, 廠商難以刻意製造不相容的產品, 更缺乏如此做的動機, 除非它還沒有理解微軟的壟斷手法在自由軟體時代已經不適用了。 如果真有廠商刻意如此做, 其他廠商從修改過的程式原始碼立即可以看出如何解決不相容的問題。

如果你真的在意相容性的問題, 更應該盡快以開放的 GNU/Linux 取代封閉的MS Windows。

可是我還聽說...

「Linux 對硬體支援不佳、安裝困難、缺乏友善的圖形介面、欠缺應用軟體」 這些都是過時、片面、靜態的描述。 如果你有心了解當下事實的真象, 只消問任何一位熟悉 Linux 的工程師, 就會發覺即使單單從技術面考量, 微軟視窗在上述各項當中都已有許多細節遠遠落在 GNU/Linux + XFree86之後。 筆者認為更值得大家深思的, 是這類說法盛行的原因。

例如 ZIP drive 在上市一段時間之後, Linux 才能使用, 並且初期的驅動程式效率不佳。 然而仔細探究原因, 問題其實出在 IOMEGA 公司不願意公開 ZIP drive 的介面。 對於公開的標準, 如IDE、SCSI等, 自由軟體程式設計師很快就能根據 specification 寫出驅動程式; 但若買到使用 proprietary interface的硬體, 對他們而言, 就像買到沒有說明書電器一樣, 必須冒著燒毀電器的風險, 以嘗試錯誤的方式很辛苦地找出正確的操作順序。 硬體廠商不提供軟體操作介面的技術文件, 造成程式設計師必須額外投入逆向工程的時間精力以達相容的目的 (尚且不談法律問題), 最後吃虧的終究是消費者: 降低了作業系統選擇的自由度 -- 為的卻不是 (但看起來彷彿是) 技術層面的原因。

再以「難以安裝」為例, 試想如果一位使用者取得一部已安裝有 Linux 的電腦, 現在給他一片 Windows CD, 要他在保有 Linux 系統上既有資料的前提下, 把 Windows 裝在第二個分割, 那麼 Windows 的安裝又談何容易? 以這樣的邏輯來批評 Windows 難以安裝看似荒謬, 但相同的邏輯卻是許多 Linux 批評者未曾明說而直接視為理所當然的要求。 若再仔細深究, 你會發覺一部機器同時要安裝兩種以上的 OS 之所以困難, Windows 其實是最大的困擾來源。 筆者在 x86 架構上所使用過的數種作業系統當中, 唯有微軟系列的產品無法安裝在邏輯分割上, 對多個主分割支援不佳, 未提供可載入不同作業系統的真正多重開機管理程式, 卻又會暗中對 MBR (Master Boot Record) 作不必要的修改。 只有微軟。[9]

筆者的用意不是在貶低微軟的技術能力, 而是在指出「Linux 不好安裝」表象之下, 問題的真正根源。 一個綁匪可以對者關在囚房內的人質說: 「我提供你山珍海味, 你不需要其他食物。 有那一種食物可以像我提供的山珍海味一樣, 那麼方便地放在你的桌上呢? 」 但他不會指出其他食物之所以進不來, 是因為他刻意把它們阻擋在窗外。

他更不會告訴你山珍海味內是否施了鴉片, 讓你上癮之後, 即使重獲自由也非得繼續回來吃他的食物不可 [8]。 筆者認為食物是否美味還是其次, 即便綁匪所提供的美食確未下藥, 我還是必須堅持掙脫禁錮, 因為我的一輩子比一頓飯的時間要長得多。 你呢? 你的企業是否打算經營超過一個版本的 MS Word 的壽命呢?

堅持只願意看 "windows 能, 而 linux 不能" 的部分; 堅持對於 "linux 能, 而 windows 不能" 的部分視而不見, 是一件很可惜的事情.

[也請看看有那些事情是自由軟體能做而版權私有軟體不能或不方便做的?]

不管你把 Linux 說得多好, 現在流行的還是 Windows 啊!

沒錯, 現在流行的是 windows. Windows 之前流行的是 dos. 更早之前流行的是 Apple II 的 basic. 在那個「個人電腦」等同於「Apple II」的時代, 如果有人跳出來說個人電腦市場的主宰者將換成 wintel 組合, 有誰會相信呢? Wintel 組合之所以能夠打敗 Apple II, 又豈是因為它本來就佔有較大的市場呢?

[市場生態] 一時的流行未必是長遠的最佳選擇。 即使市場佔有率可以作為消費者選擇軟硬體品牌的參考因素, 這也是一項動態的因素。 不要忘記, 佔有率是一個比值, 當整個市場的大小成長數倍時, 舊市場的龍頭大有可能變得無足輕重。 新的競爭者毋須與舊龍頭正面交鋒, 往往只需要以其價格優勢即可進入 (應該說創造) 更低階更大圈, 舊龍頭無法進入的新市場。 而新競爭者的價格優勢從何而來? 軟硬體元件之間使用公開的資訊接駁管道, 廠商公平競爭, 消費者享有選擇元件的自由, 是電腦價格下降, 市場擴大的重要原因之一。 Macintosh 比起 Mainframe 的優勢在哪裏? 因素固然很多, 但 API 公開, 應用軟體來自眾多公平競爭的 ISV (Independent Software vendors) 是其中重要的一項。 Wintel 組合 (Windows + Intel) 比起 Macintosh 的優勢在哪裏? HPS 公開, 主機板, CPU, 介面卡, 來自眾多公平競爭的 IHM (Independent Hardware Manufactures) 以致 TCO (Total Cost of Ownership) 降低, 這是主要的因素之一。

GNU/Linux 向下可與多種不同的硬體平台組合, 向上則提供完全公開的各種資訊接駁管道 (連原始碼都公開了, 還有什麼介面隱藏得住呢?) 應用軟體研發商不需要付任何版稅即可支援 Gnome Office 的檔案格式。 有什麼力量可以阻止 GNU/Linux "勇敢地進入沒有電腦去過的地方" ("to boldly go where no one [computer] has gone before"), 像是中國, 印度, 中南美洲及非洲的偏遠地區呢? [10] 當我們驚覺新世紀的多數電腦使用者礙於法律限制, 都無法讀取我們的 .doc 檔的時候, 又將如何追得上更新的流行呢?

盲目追隨流行的表象, 而不去深究每一波流行的原因及它所帶來的問題, 恐怕是最能夠傷害企業永續經營的利刃之一。 蛋塔熱現象值得我們資訊人警惕。

自由的代價

讀者可以在 lwn.netslashdot.orglinuxtoday.com等網站上找到更多的事實。 如果你願意多上這些網站, 或許也會和筆者有一樣的結論: 不只是伺服器, 連桌上型電腦也應該盡快換成 Linux、FreeBSD 或 Hurd 等自由作業系統。 然而就像政治的世界當中, 爭取自由必須付出代價一樣, 全面改用 GNU/Linux 及其上的自由軟體也必須付出代價。 就像政治世界的自由, 有爭取過程的短暫痛苦, 和獲得自由之後伴隨而來的長期責任一樣, 改用自由軟體也有短暫的痛苦和長期的責任。 筆者不建議立即全面改用 Linux, 但是以下觀念與做法或可盡早實施:

  1. 從現在開始, 避免使用封閉的檔案格式與通訊協訂。 這兩者是部分版權私有軟體控制客戶的利器。 微軟內部的「萬聖節文件」[11] 不小心被揭露, 從他們自己的觀點來看, 更容易明瞭這個手段對消費者的傷害。 同樣道理, 避免使用介面不公開的硬體, 或者進一步站起來向這些廠商要求他們公開其產品的程式控制介面。
  2. 從現在開始改用跨平台的應用軟體。 一套侷限在單一作業平台執行的一般應用軟體, 就像一套只能擺在某戶特定公寓的家具, 或一付只能接在特定廠牌擴大器的喇叭一樣, 不論它本身品質多好, 對於永續經營的企業而言, 並不是值得長期信賴的解決方案。 Linux 的壽命會比 Windows 長很多, 但你希望企業的壽命更要長過 Linux 吧?
  3. 向拒絕轉換的技術人員說明學習 GNU/Linux 的優點。 尤其是打算長期從事技術工作的人員。 Linux 上的 GNU (革奴) 軟體及其他自由軟體一開始確實比較難上手; 但它們良好的組合力是很多資訊從業人員所忽略的重要優點。 把時間、投資在這樣的工具上, 才能讓新舊知識發揮相乘的效果, 才能讓解決問題的能力成指數成長, [6] 而不致讓技術人員自己淪為軟體廠商更新版本的犧牲品, 成為歷史上某一版的MCSE。[12] 事實上在 Linux 上所學習的技術, 如果搭配適當的軟體 [13], 移到 windows 下一樣有用; 只不過受限於 windows 對於 interprocess communication 支援的先天不足, 比較難伸展而已。
  4. 重視安全問題。不過我們要談的不是 「因為程式原始碼公開, 所以不安全」的問題。 那樣的想法叫「security by obscurity」, 研究資訊安全的專家都知道這是不成立的。 了解自由軟體文化的人, 認為其上資訊安全問題最弱的一環在系統管理者身上。 Linux 上解決安全問題的版本經常在問題發生後數小時至數日內釋出, 但若你的系統沒有更新, 就無法獲得保障。 其他軟體不急著追新; 但是應該給你的系統管理員足夠的「閒暇」 時間去注意最新的security patches。
  5. 改變「購買軟體, 附贈服務」的觀念。 Linux 及其上自由軟體可以自由拷貝, 但技術服務需要人力, 當然要收費。 鼓勵軟體廠商以更好的技術服務競爭, 而不是只以「附贈服務」的方式削價競爭, 才是消費者之福。

在台灣的資訊生態系內, 要完全揚棄 Windows, 改用 GNU/Linux, 短期之內恐怕不容易。 但是我們現在不這麼做, 遲早會被沒有微軟包袱的 「開發中國家」間接逼著做。[10] 與其到了逼不得已才勉強打破窗子, 不如現在就探出頭來真正認識窗外的世界, 主動作出理智思考後的判斷, 勇敢走出視框, 邁向自由。

參考資料

  1. http://www.fsf.org/
  2. http://www.cyut.edu.tw/~ckhung/a/c_83.php
  3. http://www.opensource.org/
  4. http://www.crmdaily.com/perl/story/22422.html
  5. http://slashdot.org/askslashdot/00/07/17/0459214.php
  6. http://www.cyut.edu.tw/~ckhung/a/c013.php
  7. http://www.cyut.edu.tw/~ckhung/a/c010.php
  8. http://www.cyut.edu.tw/~ckhung/a/c041.php
  9. http://www.cyut.edu.tw/~ckhung/l/index.php#ms_tricks
  10. http://www.linuxinsider.com/perl/story/31576.html
  11. http://www.opensource.org/halloween/
  12. http://www.examcram.com/studyresource/openforum/old_issues.asp?num=0 也請到 http://slashdot.org/article.pl?sid=00/03/15/0747210 找到被歸類為 "Score:5" 的讀者投書。
  13. http://www.cyut.edu.tw/~ckhung/a/c_90/cygwin.php
  14. http://www.eweek.com/article2/0,4149,1529889,00.asp