Remove ads

大教堂與市集》(The Cathedral and the Bazaar)是埃里克·斯蒂芬·雷蒙(Eric Steven Raymond)所撰寫的軟件工程方法論。以Linux的核心開發過程以及作者自己主持開發的開放源碼軟件──Fetchmail為討論案例。文章在1997年5月27日發表,並在1999年出版成書。

Thumb
本書平裝本的封面

簡介

本書討論兩種不同的自由軟件開發模式:

  • 大教堂模式(The Cathedral model):原始碼在軟件發行後公開,但在軟件的每個版本開發過程中是由一個專屬的團隊所控管的。作者以GNU EmacsGCC這兩軟件為例。
  • 市集模式(The Bazaar model):原始碼在開發過程中即在互聯網上公開,供人檢視及開發。作者以Linux核心的創始者林納斯·托瓦茲帶領Linux核心的開發為例,亦參照fetchmail的開發為例。

此書的要義是「讓夠多人看到源碼,錯誤將無所遁形」(Given enough eyeballs, all bugs are shallow)林納斯定律。作者表示大教堂模式的軟件開發讓程式除錯的時間大幅增加,因為只有少數的開發者可參與修改工作。市集模式則相反。

從開發自由軟件所學到的教訓

雷蒙指出了19點在他開發多個軟件專案中所學到的 "教訓"。每個學到的教訓都跟開放軟件所使用的最佳實踐有關:

  1. 好軟件都是起源於程式發展者要解決切身之痛。
  2. 優秀的程式師知道要寫程式,偉大的程式師知道要改寫(和重覆利用)程式。
  3. 計畫好如何捨棄一條路吧,你遲早會想盡辦法這麼做的(引自《人月神話:軟件專案管理之道》)。
  4. 抱持正確的態度,就會發現有趣的問題。
  5. 當你對一個問題不再感興趣時,你最後的責任就是找位能勝任的接棒人。
  6. 把用戶視為共同開發者來對待,可以讓你傷最少的腦筋,但做到源碼的快速改善和有效率地除錯。
  7. 儘早且經常發表新版本,並且傾聽用戶的意見。
  8. 在一群足夠多的 beta 測試者與共同開發者的情況下,幾乎程式中的每一個問題都可以很快地找出來,並且由某個人很直覺的解決。
  9. 聰明的資料結構配上笨拙的程式碼要比相反的組合好。
  10. 如果你視 beta 版測試者如同你最珍貴的資源,那麼他們會以此做為回報。
  11. 體認用戶提供的巧思,以獲取好點子,有時候越後到的越好。
  12. 通常,最適切和最有創意的解題法來自於發覺自己對問題原先的觀念是錯誤的。
  13. 設計上完美,不是「沒有東西能再被加入」,而是「沒有東西能再被移出」。
  14. 任何的工具以我們所知道的方法來使用都會有用,但一個真正了不起的工具會以你從未想過的使用方法來發揮它的功能。
  15. 寫作任何的通訊閘軟件時,要盡可能地不去擾動到通訊的資料流 -- 並且絕對不要丟掉其中任何的資訊,除非接收方強迫你這麼做。
  16. 當你設計的語言不是嚴謹到「Turing-complete」,你可以採用比較平易的語法。
  17. 一個保密系統是否安全依存於它隱藏的秘密,注意不要有「虛擬秘密」。
  18. 解決一個有趣的問題,由找到一個你覺得有趣的問題開始。
  19. 假如專案發展協調者擁有至少跟互聯網一樣好的媒體,而他也不靠強制力來領導,那麼一群人必定勝過一個人。
Remove ads

影響

此文讓大部份的開放源碼及自由軟件的開發計劃採用市集模式,甚至原來採用大教堂模式的GNU Emacs及GCC也是如此。Netscape網頁瀏覽器後來釋出源碼,並啟動Mozilla計劃,也或多或少受到這篇文章的啟發[1][2][3]

大教堂與市集也被延伸到非電腦軟件的開發上面。例如維基百科就是市集模式,而Nupedia大英百科全書就是大教堂模式[4]

出版

歐萊禮出版社於1999年發行此書的創舉是,首次商業印刷出版的書以Creative Commons授權模式出版。

本書(原文)的國際標準書號ISBN 978-1-56592-724-7(精裝本)、ISBN 978-0-596-00108-7(平裝本)。

參考資料

外部連結

Remove ads

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.

Remove ads