มหาวิหารกับตลาดสด

Eric Steven Raymond

This is version 3.0

Copyright

Permission is granted to copy, distribute and/or modify this document under the terms of the Open Publication License, version 2.0.

$Date: 2006-12-29 04:33:44 $

Revision History
Revision 1.57.thai119 พฤศจิกายน 2006tkr
Merge and edit Isriya's Thai translation of section 1 and 2.
Revision 1.5711 September 2000esr
New major section ``How Many Eyeballs Tame Complexity''.
Revision 1.5228 August 2000esr
MATLAB is a reinforcing parallel to Emacs. Corbatoó & Vyssotsky got it in 1965.
Revision 1.5124 August 2000esr
First DocBook version. Minor updates to Fall 2000 on the time-sensitive material.
Revision 1.495 May 2000esr
Added the HBS note on deadlines and scheduling.
Revision 1.5131 August 1999esr
This the version that O'Reilly printed in the first edition of the book.
Revision 1.458 August 1999esr
Added the endnotes on the Snafu Principle, (pre)historical examples of bazaar development, and originality in the bazaar.
Revision 1.4429 July 1999esr
Added the ``On Management and the Maginot Line'' section, some insights about the usefulness of bazaars for exploring design space, and substantially improved the Epilog.
Revision 1.4020 Nov 1998esr
Added a correction of Brooks based on the Halloween Documents.
Revision 1.3928 July 1998esr
I removed Paul Eggert's 'graph on GPL vs. bazaar in response to cogent aguments from RMS on
Revision 1.31February 10 1998 esr
Added ``Epilog: Netscape Embraces the Bazaar!''
Revision 1.29February 9 1998esr
Changed ``free software'' to ``open source''.
Revision 1.2718 November 1997esr
Added the Perl Conference anecdote.
Revision 1.207 July 1997esr
Added the bibliography.
Revision 1.1621 May 1997esr
First official presentation at the Linux Kongress.

Abstract

I anatomize a successful open-source project, fetchmail, that was run as a deliberate test of the surprising theories about software engineering suggested by the history of Linux. I discuss these theories in terms of two fundamentally different development styles, the ``cathedral'' model of most of the commercial world versus the ``bazaar'' model of the Linux world. I show that these models derive from opposing assumptions about the nature of the software-debugging task. I then make a sustained argument from the Linux experience for the proposition that ``Given enough eyeballs, all bugs are shallow'', suggest productive analogies with other self-correcting systems of selfish agents, and conclude with some exploration of the implications of this insight for the future of software.

ผมวิเคราะห์แยกแยะโครงการโอเพนซอร์สที่ประสบความสำเร็จโครงการหนึ่ง คือ fetchmail ซึ่งดำเนินการโดยเจตนาจะทดสอบทฤษฎีที่น่าประหลาดใจเกี่ยวกับวิศวกรรมซอฟต์แวร์ ที่ได้มาจากการพิจารณาความเป็นมาของลินุกซ์ ผมกล่าวถึงทฤษฎีเหล่านี้ในมุมมองของรูปแบบการพัฒนาสองแนวทางที่แตกต่างกันโดยสิ้นเชิง คือรูปแบบ ``มหาวิหาร'' ที่ใช้กันในโลกพาณิชย์เกือบทั้งหมด กับรูปแบบ ``ตลาดสด'' ของโลกลินุกซ์ ผมแสดงให้เห็นว่า รูปแบบเหล่านี้เกิดจากข้อสมมุติที่ขัดแย้งกัน เกี่ยวกับธรรมชาติของงานแก้บั๊กซอฟต์แวร์ จากนั้น ผมได้ให้ทัศนะพร้อมเหตุผลรองรับที่ได้จากประสบการณ์ของลินุกซ์สำหรับข้อเสนอที่ว่า ``ขอให้มีสายตาเฝ้ามองมากพอ บั๊กทั้งหมดก็เป็นเรื่องง่าย'' ผมเปรียบข้อเสนอดังกล่าวกับระบบซึ่งมีการแก้ไขตัวเองของตัวกระทำที่เห็นแก่ตัว และสรุปด้วยการสำรวจนัยของแนวคิดนี้สำหรับอนาคตของวงการซอฟต์แวร์


Table of Contents

มหาวิหารกับตลาดสด
ต้องส่งเมลให้ได้
ความสำคัญของการมีผู้ใช้
ออกเนิ่นๆ ออกถี่ๆ
สายตากี่คู่ที่จะจัดการความซับซ้อนได้
เมื่อใดที่กุหลาบจะไม่เป็นกุหลาบ?
จาก Popclient สู่ Fetchmail
Fetchmail เติบโต
บทเรียนเพิ่มเติมจาก Fetchmail
เงื่อนไขตั้งต้นที่จำเป็นสำหรับแนวทางตลาดสด
สภาพแวดล้อมทางสังคมของซอฟต์แวร์โอเพนซอร์ส
เกี่ยวกับการบริหารจัดการและปัญหาที่ไม่เป็นปัญหา
ส่งท้าย: เน็ตสเคปอ้าแขนรับตลาดสด
เชิงอรรถ
บรรณานุกรม
กิติกรรมประกาศ

มหาวิหารกับตลาดสด

Linux is subversive. Who would have thought even five years ago (1991) that a world-class operating system could coalesce as if by magic out of part-time hacking by several thousand developers scattered all over the planet, connected only by the tenuous strands of the Internet?

ลินุกซ์คือผู้ล้มยักษ์ เมื่อ 5 ปีที่แล้ว (ปี 1991) ใครจะไปคิดว่าระบบปฏิบัติการระดับโลก จะก่อตัวขึ้นราวกับมีเวทมนตร์จากการแฮ็กเล่นๆ ในเวลาว่างของนักพัฒนานับพันจากทั่วโลกที่เชื่อมต่อกันด้วยเส้นใยบางๆ อย่างอินเทอร์เน็ตเท่านั้น

Certainly not I. By the time Linux swam onto my radar screen in early 1993, I had already been involved in Unix and open-source development for ten years. I was one of the first GNU contributors in the mid-1980s. I had released a good deal of open-source software onto the net, developing or co-developing several programs (nethack, Emacs's VC and GUD modes, xlife, and others) that are still in wide use today. I thought I knew how it was done.

ผมคนหนึ่งล่ะ ที่ไม่เชื่อ ตอนที่ลินุกซ์เข้ามาอยู่ในความสนใจของผมเมื่อต้นปี 1993 นั้น ผมได้เข้ามาเกี่ยวข้องกับยูนิกซ์ และการพัฒนาแบบโอเพนซอร์สมาสิบปีแล้ว ผมยังเป็นหนึ่งในผู้สมทบงานให้ GNU เป็นคนแรกๆ ในช่วงกลางทศวรรษ 1980 ผมได้ปล่อยซอฟต์แวร์โอเพนซอร์สออกสู่อินเทอร์เน็ตแล้วหลายตัว โดยได้สร้างและร่วมสร้างโปรแกรมหลายโปรแกรม (nethack, โหมด VC และ GUD ของ Emacs, xlife และอื่นๆ) ซึ่งยังคงใช้กันอยู่แพร่หลายในทุกวันนี้ ผมคิดว่าตัวเองรู้ดีเรื่องการพัฒนาซอฟต์แวร์

Linux overturned much of what I thought I knew. I had been preaching the Unix gospel of small tools, rapid prototyping and evolutionary programming for years. But I also believed there was a certain critical complexity above which a more centralized, a priori approach was required. I believed that the most important software (operating systems and really large tools like the Emacs programming editor) needed to be built like cathedrals, carefully crafted by individual wizards or small bands of mages working in splendid isolation, with no beta to be released before its time.

แต่ลินุกซ์ได้ลบล้างสิ่งที่ผมเคยคิดว่ารู้ไปมาก ผมเคยพร่ำสอนเกี่ยวกับบัญญัติยูนิกซ์ เรื่องการเขียนโปรแกรมขนาดเล็ก การสร้างต้นแบบอย่างเร็ว และการเขียนโปรแกรมแบบวิวัฒนาการมาหลายปี แต่ผมยังเชื่ออีกด้วย ว่ามีความซับซ้อนวิกฤติระดับหนึ่ง ที่ถ้าเลยขั้นนี้ไป ก็ต้องใช้วิธีพัฒนาที่รวมศูนย์ มีทฤษฎีมากกว่านั้น ผมเชื่อว่าซอฟต์แวร์ที่สำคัญๆ (เช่น ระบบปฏิบัติการ และโปรแกรมขนาดใหญ่อย่าง Emacs) ควรจะถูกสร้างเหมือนสร้างมหาวิหาร (cathedral) โดยพ่อมดซอฟต์แวร์สักคน หรือผู้วิเศษกลุ่มเล็กๆ เป็นผู้ประดิษฐ์ขึ้นอย่างบรรจง ในดินแดนโดดเดี่ยวอันศักดิ์สิทธิ์ ไม่มีตัวทดสอบ (beta) ออกมาให้ลองก่อนเวอร์ชันจริง

Linus Torvalds's style of development—release early and often, delegate everything you can, be open to the point of promiscuity—came as a surprise. No quiet, reverent cathedral-building here—rather, the Linux community seemed to resemble a great babbling bazaar of differing agendas and approaches (aptly symbolized by the Linux archive sites, who'd take submissions from anyone) out of which a coherent and stable system could seemingly emerge only by a succession of miracles.

วิธีการพัฒนาของไลนัส ทอร์วัลด์ เป็นเรื่องแปลกประหลาด วิธีของเขาคือ `ออกเนิ่นๆ ออกถี่ๆ มอบงานทุกส่วนให้คนอื่นเท่าที่จะทำได้ และเปิดกว้างถึงขั้นสำส่อน' นี่ไม่ใช่การสร้างมหาวิหารอย่างเงียบเชียบด้วยความเทิดทูนบูชา ชุมชนของลินุกซ์นั้น เหมือนกับตลาดสด (bazaar) ที่เอะอะอื้ออึงฟังไม่ได้ศัพท์ ซึ่งแต่ละคนมีวาระและวิธีการที่แตกต่างหลากหลาย (เห็นได้จากไซต์ FTP ของลินุกซ์ ที่ใครก็สามารถส่งผลงานของตัวเองเข้ามาได้) การจะเกิดระบบปฏิบัติการที่เสถียรและเป็นเอกภาพขึ้นได้จากสภาพดังกล่าว จึงดูเหมือนต้องเป็นผลจากปาฏิหาริย์เท่านั้น

The fact that this bazaar style seemed to work, and work well, came as a distinct shock. As I learned my way around, I worked hard not just at individual projects, but also at trying to understand why the Linux world not only didn't fly apart in confusion but seemed to go from strength to strength at a speed barely imaginable to cathedral-builders.

ความจริงที่ว่าการพัฒนาแบบตลาดสดนี้ใช้งานได้ และได้ผลดีด้วยนั้น เป็นเรื่องน่าตกใจมาก ขณะที่ผมเรียนรู้ไปเรื่อยๆ นั้น ผมไม่เพียงทุ่มเทให้กับโครงการทั้งหลาย แต่ผมยังพยายามหาสาเหตุ ว่าทำไมโลกของลินุกซ์จึงไม่เพียงไม่แตกเป็นเสี่ยงๆ ด้วยความโกลาหล แต่ยังกลับแข็งแกร่งและมั่นคงขึ้นเรื่อยๆ ด้วยอัตราเร็วที่นักสร้างมหาวิหารแทบไม่สามารถจินตนาการถึงได้

By mid-1996 I thought I was beginning to understand. Chance handed me a perfect way to test my theory, in the form of an open-source project that I could consciously try to run in the bazaar style. So I did—and it was a significant success.

กลางปี 1996 ผมคิดว่าผมเริ่มเข้าใจแล้ว ผมมีโอกาสอันยอดเยี่ยมที่จะทดสอบทฤษฎีของตัวเอง ในรูปแบบของโครงการโอเพนซอร์ส ซึ่งผมสามารถเจาะจงให้พัฒนาในแบบตลาดสดได้ ผมจึงลองทำดู และมันก็ประสบความสำเร็จดีทีเดียว

This is the story of that project. I'll use it to propose some aphorisms about effective open-source development. Not all of these are things I first learned in the Linux world, but we'll see how the Linux world gives them particular point. If I'm correct, they'll help you understand exactly what it is that makes the Linux community such a fountain of good software—and, perhaps, they will help you become more productive yourself.

เรื่องราวต่อไปนี้เป็นเรื่องของโครงการดังกล่าว ผมจะใช้ตัวอย่างนี้เสนอคติสำหรับการพัฒนาแบบโอเพนซอร์สที่ได้ผล หลายอย่างไม่ใช่สิ่งที่ผมเพิ่งเรียนรู้เป็นครั้งแรกจากโลกของลินุกซ์ แต่เราจะเห็นว่าโลกของลินุกซ์ทำให้มันสำคัญขึ้นมาอย่างไร ถ้าผมคิดไม่ผิด คติเหล่านี้จะช่วยให้คุณเข้าใจมากขึ้น ว่าอะไรคือสิ่งที่ทำให้สังคมลินุกซ์กลายเป็นบ่อเกิดของซอฟต์แวร์ดีๆ และอาจช่วยทำให้คุณพัฒนาผลิตภาพของคุณเองให้มากขึ้นได้ด้วย