1. The Cathedral and the Bazaar
Linux is subversive. Who would have thought even five years ago 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?
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 VC
and GUD modes, xlife, and others) that are still in wide use today.
I thought I knew how it was done.
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 Emacs) 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.
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.
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 which I could consciously try to run in the bazaar style.
So I did -- and it was a significant success.
In the rest of this article, I'll tell the story of that project, and
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 help
you become more productive yourself.