The Cathedral and the Bazaar
Encyclopedia
The Cathedral and the Bazaar (abbreviated CatB) is an essay by Eric S. Raymond
Eric S. Raymond
Eric Steven Raymond , often referred to as ESR, is an American computer programmer, author and open source software advocate. After the 1997 publication of The Cathedral and the Bazaar, Raymond was for a number of years frequently quoted as an unofficial spokesman for the open source movement...

 on software engineering
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...

 methods, based on his observations of the Linux kernel
Linux kernel
The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. It is one of the most prominent examples of free and open source software....

 development process and his experiences managing an open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 project, fetchmail
Fetchmail
Fetchmail is an open source software utility for POSIX-compliant operating systems which is used to retrieve e-mail from a remote POP3, IMAP, ETRN or ODMR mail server to the user's local system. It was developed from the popclient program, written by Carl Harris.Its chief significance is perhaps...

. It examines the struggle between top-down and bottom-up design
Top-down and bottom-up design
Top–down and bottom–up are strategies of information processing and knowledge ordering, mostly involving software, but also other humanistic and scientific theories . In practice, they can be seen as a style of thinking and teaching...

. It was first presented by the author at the Linux Kongress
Linux Kongress
The Linux Kongress is an annual two-day conference of Linux developers from around the world. It has taken place since 1994, when Linux was in the early stages of development, and has except 2001 and 2007 always occurred in Germany. Linux-Kongress is one of the three major international...

 on May 27, 1997 in Würzburg
Würzburg
Würzburg is a city in the region of Franconia which lies in the northern tip of Bavaria, Germany. Located at the Main River, it is the capital of the Regierungsbezirk Lower Franconia. The regional dialect is Franconian....

 and was published as part of a book of the same name in 1999.

Content

The essay contrasts two different free software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

 development models:
  • The Cathedral model, in which source code
    Source code
    In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

     is available with each software release, but code developed between releases is restricted to an exclusive group of software developer
    Software developer
    A software developer is a person concerned with facets of the software development process. Their work includes researching, designing, developing, and testing software. A software developer may take part in design, computer programming, or software project management...

    s. GNU Emacs and GCC
    GNU Compiler Collection
    The GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain...

     are presented as examples.
  • The Bazaar model, in which the code is developed over the Internet
    Internet
    The Internet is a global system of interconnected computer networks that use the standard Internet protocol suite to serve billions of users worldwide...

     in view of the public. Raymond credits Linus Torvalds
    Linus Torvalds
    Linus Benedict Torvalds is a Finnish software engineer and hacker, best known for having initiated the development of the open source Linux kernel. He later became the chief architect of the Linux kernel, and now acts as the project's coordinator...

    , leader of the Linux kernel project, as the inventor of this process. Raymond also provides anecdotal accounts of his own implementation of this model for the Fetchmail
    Fetchmail
    Fetchmail is an open source software utility for POSIX-compliant operating systems which is used to retrieve e-mail from a remote POP3, IMAP, ETRN or ODMR mail server to the user's local system. It was developed from the popclient program, written by Carl Harris.Its chief significance is perhaps...

     project.


The essay's central thesis is Raymond's proposition that "given enough eyeballs, all bugs are shallow" (which he terms Linus' Law): the more widely available
Marketplace of ideas
The "marketplace of ideas" is a rationale for freedom of expression based on an analogy to the economic concept of a free market. The "marketplace of ideas" belief holds that the truth or the best policy arises out of the competition of widely various ideas in free, transparent public discourse, an...

 the source code is for public testing, scrutiny, and experimentation, the more rapidly all forms of bugs will be discovered. In contrast, Raymond claims that an inordinate amount of time and energy must be spent hunting for bugs in the Cathedral model, since the working version of the code is available only to a few developers.

Guidelines for creating good open source software

There are 19 guidelines for creating good open source software listed in his essay:
  1. Every good work of software starts by scratching a developer's personal itch.
  2. Good programmers know what to write. Great ones know what to rewrite (and reuse).
  3. Plan to throw one away; you will, anyhow. (Copied from Frederich Brooks' The Mythical Man Month)
  4. If you have the right attitude, interesting problems will find you.
  5. When you lose interest in a program, your last duty to it is to hand it off to a competent successor.
  6. Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging.
  7. Release early. Release often.
    Release early, release often
    Release early, release often is a software development philosophy that emphasizes the importance of early and frequent releases in creating a tight feedback loop between developers and testers or users...

     And listen to your customers.
  8. Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone.
  9. Smart data structures and dumb code works a lot better than the other way around.
  10. If you treat your beta-testers as if they're your most valuable resource, they will respond by becoming your most valuable resource.
  11. The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better.
  12. Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong.
  13. Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.
  14. Any tool should be useful in the expected way, but a truly great tool lends itself to uses you never expected.
  15. When writing gateway software of any kind, take pains to disturb the data stream as little as possible—and never throw away information unless the recipient forces you to!
  16. When your language is nowhere near Turing-complete
    Turing completeness
    In computability theory, a system of data-manipulation rules is said to be Turing complete or computationally universal if and only if it can be used to simulate any single-taped Turing machine and thus in principle any computer. A classic example is the lambda calculus...

    , syntactic sugar
    Syntactic sugar
    Syntactic sugar is a computer science term that refers to syntax within a programming language that is designed to make things easier to read or to express....

     can be your friend.
  17. A security system is only as secure as its secret. Beware of pseudo-secrets.
  18. To solve an interesting problem, start by finding a problem that is interesting to you.
  19. Provided the development coordinator has a communications medium at least as good as the Internet, and knows how to lead without coercion, many heads are inevitably better than one.

Legacy

The essay helped convince most existing open source and free software projects to adopt Bazaar-style open development models, fully or partially — including GNU Emacs and GCC, the original Cathedral examples. Most famously, in 1998 it also provided the final push for Netscape Communications Corporation to release the source code for Netscape Communicator
Netscape Communicator
Netscape Communicator was an Internet suite produced by Netscape Communications Corporation. Initially released in June 1997, Netscape Communicator 4.0 was the successor to Netscape Navigator 3.x and included more groupware features intended to appeal to enterprises.- Editions :Netscape...

 and start the Mozilla
Mozilla
Mozilla is a term used in a number of ways in relation to the Mozilla.org project and the Mozilla Foundation, their defunct commercial predecessor Netscape Communications Corporation, and their related application software....

 project.

When O'Reilly Media
O'Reilly Media
O'Reilly Media is an American media company established by Tim O'Reilly that publishes books and Web sites and produces conferences on computer technology topics...

 published the book in 1999, it became the first complete and commercially distributed book published under the Open Publication License
Open Publication License
Open Publication License is a license open publications created by the Open Content Project, which now recommends using one of the Creative Commons licenses....

.

Marshall Poe
Marshall Poe
Marshall Tillbrook Poe is an American writer and historian. He is a member of the Department of History at the University of Iowa, and a visiting professor at Eastern Michigan University for the 2007-8 academic year....

, in his essay "The Hive," likens Wikipedia
Wikipedia
Wikipedia is a free, web-based, collaborative, multilingual encyclopedia project supported by the non-profit Wikimedia Foundation. Its 20 million articles have been written collaboratively by volunteers around the world. Almost all of its articles can be edited by anyone with access to the site,...

to the Bazaar model that Raymond defines.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK