跳到主要內容

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

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是這個世界上最偉大的軟體之一。

留言

這個網誌中的熱門文章

讀書心得: 你以為你以為的就是你以為的嗎?

當初想要接觸哲學的時候,挑上的第一本書就是「你以為你以為就是你以為的嗎?」,因為書名太好玩了。讀完後發現內容也一樣好玩,整本書的形式有點像坊間流行的心理測驗小書,每章的開頭都要讀者先做一組題目,後面接著就對你的答案做一番分析。 我自己的讀後感是,恩,這些題目對一個以前從未接觸過哲學的人來說太過犀利,第一次作答的時候,每翻過一頁都好像在呼自己巴掌,臉頰很燙。 「你以為你以為就是你以為的嗎?」書名念起來很拗口,但是很貼切,因為這些題目為的是要檢查我們腦袋內的想法是否一致,在邏輯上有沒有BUG。 我舉個例子,書裡有道題目「只要不傷害他人,任何人都有權自由追求自己的目標」要讀者回答同不同意,我認為這句話聽起來相當合理,所以勾了同意。過了幾題後,出現另一道題目是「為個人吸食而持有毒品的行為應予除罪化」,這次我的直覺是毒品這麼危險,怎麼可以除罪化呢,馬上勾不同意。 但是,我沒有發現這是刻意安排的陷阱,因為這兩句話其實講的是同一回事。 單純個人持有毒品,不散佈也不販賣,就不算傷害他人,那他就應該有自由追求自己的「吸食毒品」目標的權利,畢竟他只有傷害自己呀。這敘述聽起來有點危險,不過我必須承認一開始的確想的不夠清楚,我以為第一句話是真理,但馬上被反例打了自己的臉。 再舉一個例子,首先是「對藝術品的評斷,純粹是個人品味的問題」,接著是「米開朗基羅是史上數一數二的偉大藝術家」,這牽涉到評斷藝術的標準,不過你只能認同兩句話的其中之一。 書中我最有興趣的是「神明DIY工作室」與「信仰殺戮戰場」,這兩章擺明了直衝基督徒而來。當中有些問題圍繞著以下的敘述,如果你同意「神是全知、全能、又全然慈愛」,那該怎麼解釋世界上發生的許多苦難呢? 比如說被南亞海嘯淹沒的小女孩? 如果神沒辦法消除這些苦難,祂就不是全能。如果神沒辦法事先知道創造出來的世界會有這些苦難,祂就不是全知。如果神明知道有苦難,也有能力去掉,但是卻故意不做,那祂就不是全然慈愛。 我思考後的結論是,全然慈愛的神並不等於神希望世上的苦難越少越好,這些苦難都是在祂的允許下發生的。 書裡指出了一個基督徒的通病,被問倒了之後就嚷嚷「你不知道神是超越人所理解的嗎 」,但回頭又馬上賦予神非常明確地人的屬性。後來我也理解到這些尖銳的問題並不是故意要為難我對神的看法,而是逼迫我去反思一些比較深層的宗教議題,就像我...

UVa 10125 Sumsets

解題策略 這題的解法很直接,要找d=a+b+c 用四層迴圈下去跑a,b,c,d就好了 XDDDD 我犯了幾個錯誤 要找最大符合d (意思是數列中可能出現好幾個符合要求的解),所以迴圈應該由最大元素往下找,第一個找到的解就是答案,我一開始由最小元素往上遞增尋找,拿了WA。 沒找到解就回傳0,殊不知0也有可能是解: 0 = -5 + 3 + 2,這裡也吃了一個WA,所以我後來改回傳 INT_MAX 作為無解。 這題有負值,所以 -5 = -10 + -2 + 7 ,這樣算一組合法的解。 是比較需要小心的地方。 官網論壇上的(a+b)=(d-c)法,方法複雜很多,卻沒有比較快。