From Wikipedia, the free encyclopedia
The Cathedral and the Bazaar
(abbreviated CatB) is an essay by Eric S. Raymond
on software engineering methods,
based on his observations of the Linux kernel development process and his
experiences managing an open source project, fetchmail. It examines the struggle between
top-down and bottom-up
design. It was first presented by the author at the Linux Kongress on
May 27, 1997 in Würzburg and was published as part of a book of the
same name in 1999.
Content
The essay contrasts two different free software development models:
- The Cathedral model, in which source code is available with each software
release, but code developed between releases is restricted to an
exclusive group of software developers. GNU
Emacs and GCC are presented as
examples.
- The Bazaar model, in which the code is developed over
the Internet in view of
the public. Raymond credits Linus Torvalds, 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
project.
The essay's central thesis is Raymond's proposition that
"given enough eyeballs, all bugs are shallow"
(which he terms Linus's Law): the more widely available 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.
There are 19 steps to creating good open source software listed
in his essay:
- Every good work of software starts by scratching a developer's
personal itch.
- Good programmers know what to write. Great ones know what to
rewrite (and reuse).
- Plan to throw one away; you will, anyhow.
- If you have the right attitude, interesting problems will find
you.
- When you lose interest in a program, your last duty to it is to
hand it off to a competent successor.
- Treating your users as co-developers is your least-hassle route
to rapid code improvement and effective debugging.
- Release early. Release
often. And listen to your customers.
- Given a large enough beta-tester and co-developer base, almost
every problem will be characterized quickly and the fix obvious to
someone.
- Smart data structures and dumb code works a lot better than the
other way around.
- If you treat your beta-testers as if they're your most valuable
resource, they will respond by becoming your most valuable
resource.
- The next best thing to having good ideas is recognizing good
ideas from your users. Sometimes the latter is better.
- Often, the most striking and innovative solutions come from
realizing that your concept of the problem was wrong.
- Perfection (in design) is achieved not when there is nothing
more to add, but rather when there is nothing more to take
away.
- Any tool should be useful in the expected way, but a truly
great tool lends itself to uses you never expected.
- 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!
- When your language is nowhere near Turing-complete, syntactic
sugar can be your friend.
- A security system is only as secure as its secret. Beware of
pseudo-secrets.
- To solve an interesting problem, start by finding a problem
that is interesting to you.
- 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 and start
the Mozilla project.[1]
When O'Reilly
Media published the book in 1999, it achieved another
distinction by being the first complete and commercially
distributed book published under the Open Publication License.
See also
Notes
References
External
links