2010年12月21日 星期二

讀書心得: Linux傳奇 (Rebel Code)

More about Linux 傳奇

Rebel Code 開源革命史

報導文學的傑作!上一次在讀完書後,心中湧現出類似的激動已經是四五年前讀『宇宙的寂寞心靈』的時候,這兩本書的特色就是雖然主題是科學技術,但是內容卻不是側重在技術,而是發生於當中的故事與人物,想要瞭解Open Source發展的人,我認為本書是非讀不可。

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

從自由軟體的開創者Stallman開始,直到最後Linux成為一方之霸,以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是這個世界上最偉大的軟體之一。