2010-12-21

讀書: Linux 傳奇 (Rebel Code)

Linux 傳奇

Rebel Code 開源革命史

報導文學的傑作!回想上一次讀書心中湧現出類似的激動,已經是四五年前讀『宇宙的寂寞心靈』。這兩本書的共同點就是雖然主軸是科學技術,但是內容述說的卻是這個行業中的的故事。技術是冰冷的,但是走在大時代洪流中的人,卻各個有血有肉。

原文書名叫做『Rebel Code』,直譯叫『叛碼』,副標題則是 Linux And The Open Source Revolution (Linux 與開源革命),一定要吐槽一下糟糕的中文譯名,副標題比爾蓋茲云云可說完全搞錯方向。這個書名非常有意思,因為這兒 Code 是個雙關,表面意思是代碼,背面意思是法典。恰恰代表了本書描寫的兩個對象,以 Linux 為首顛覆傳統開發方式大獲成功的開源軟體,以及一群奔放不羈、充滿理想的平凡人,運用自己的力量搖動世界成為典範的故事。

本書以自由軟體先驅 Richard Stallman 做起點,以 Linux 的發展作為主幹,譜成了長達十年、可歌可泣的故事。我看著好多個只曾在課本上見過的資訊大佬們,如 Linus 與 Tanenbaum,在網路群組上對作業系統設計架構針鋒相對互噴口水,頓時覺得這些名字不再是遙遠天邊的神,而是跟我們一樣活生生的人,而且這些人口水也很能噴,有趣的緊。

除了Linux之外,著名的開源項目 GNU、GCC、Apache、Perl、Mozilla 也都在書中占有一定篇幅,本書可以說是一個全面的開放源碼運動的紀錄。

大教堂與市集

全書的結構分為兩大段,前八章是 Linux 的成長過程,第十章後則是 Linux 一路攻城掠地。而位居中間的第九章是本書的一個高潮,全章以『大教堂和市集』一文為中心,深入淺出的分析了開源自由軟體成功的原因。

大教堂與市集代表兩種相互衝突的軟體開發觀點,大教堂是傳統的軟體開發觀:

『我相信最重要的軟體必須如建造一座教堂般,由個別的高手或一小群專家在光輝的孤立中小心翼翼地精雕細琢,時機未到之前,不會釋出測試版。』

但 Linux 完全顛覆了傳統,來自世界各地的烏合之眾打造了高品質的程式:

『儘早並經常發表新版本,授權每一件可以委託的事,不拒絕幾乎到混亂程度的程式,...Linux 的同好們似乎組成了喧鬧的大市集,以這個風格發展出來的Linux既一致又穩定,表面上看來真是一連串的奇蹟。』

大教堂和市集深切的探討了 Linux 成功的原因,並把成功的原因歸納成一系列的格言,每句格言都很有意思,不妨一讀。大教堂與市集全文

讀完書後,我自己的對開源的一點想法是,其實使用者並不管軟體本身開不開放,真正關心的是軟體到底合不合乎需要。而開放比封閉更容易貼近使用者的需求。每個人都曾經想過「如果OO軟體有XX功能就好了!」而專利軟體最糟糕的一點就是使用者對這個問題幾乎無能為力。開源軟體的架構下,每個人都可以自己動手添加功能或修復錯誤。當使用者同時也是開發者,兩個角色重疊,軟體最麻煩的需求分析的門檻就降到零了。

同時書中提到一個觀點,開源軟體的知識共享可以免去重複造輪子。Linux 之前,很多版本的 Unix 擁技術各據山頭,收取高額權利金,結果因為 Unix 版本太多,每家公司都要重新開發一次類似的功能,消耗整個軟體界的能量。最後的下場是便宜的 Windows NT 一來,風吹樹倒,整個 Unix 伺服器佔有率掉光光。不過本書也說明開源不是萬靈丹,並不是什麼專案開源之後都會成功。

另外一點,Linux 的成功與 Torvalds 本身個性有很大關係。Linux 發展之初,其實有兩個開源 Unix 互相競爭,分別是 Tanenbaum 撰寫的 Minix,以及 Torvalds 撰寫的 Linux。而勝出的關鍵就在 Torvalds 的個性極為開放,幾乎任何人送來的 patch 都來者不拒,還鼓勵大家這麼做。反觀 Tanenbaum 對修改 Minix 一直機機歪歪,步調緩慢。群眾自然湧向願意聆聽大眾聲音並改變的 Linux。

駭客精神

另外貫穿於全書之中令人敬佩的 - 駭客精神:把金錢擺到次位,一心追求最好的技術、最好的軟體。重視自由、分享、社群精神,關注軟體的創作、美、以及有趣。我覺得這才是整個開源運動最動人的地方。書中有句話『自由軟體即是關心社會』,讓我會心一笑。

本書出版於2000年左右,至今以過了十載,開源有許多後續發展,像十一章Linux系統採用的版本控制軟體 BitKeeper 終被拋棄,git誕生。2001年時被認為失敗的案例Mozilla,以Firefox之姿浴火重生,現在已經是鋒頭最健的開源項目之一。

差勁的中文版

最後我要抱怨 -- 本書的編輯很差,好好一本傑作就這樣被糟蹋了,書的目錄印錯,翻譯品質也很爛。譯者明顯是個電腦外行人,很多業內的通用譯名如 GPL、CVS、micro-kernel、CSS、DOM 都譯得亂七八糟,語句中明顯看的出來譯者自己也不知道在寫什麼,『妙不可言的人月』其實是著名的軟體工程著作『人月神話』,『HTML標識』應該叫『HTML標籤』,作業系統內核的字句名詞也錯誤百出,我建議本書的翻譯稿也應該開源一下。

對了,看完本書後,我真的覺得 GCC 是這個世界上最偉大的軟體之一。