Have you ever experienced a software bug and thought to yourself, "I could fix that"? If you could, would you? How could that even be possible?
There are two fundamental approaches to building software, and they're often called the Cathedral and the Bazaar, as described by Eric Raymond over a decade ago as a presentation at a Linux conference.
"Cathedral" software is built by a group of developers based on a central plan. They code, find bugs, fix as much as they can, and then after a year or so they eventually ship a product. Much like building a cathedral where everything is painstakingly crafted and installed before the doors open. Think Microsoft Windows or Office -- monster projects with a new release every few years and point releases more than six months apart.
"Bazaar," or open source software, is created more independently. Building upon a basic kernel, independent developers improve functionality or fix bugs as they see a need. It's basically crowdsourcing for software. Well-known examples include Linux and Apache. But not Firefox or Eclipse -- while many people assume that they follow the Bazaar model, there's more to it than that, as we'll shortly see.
In the earlier days of software, the Cathedral model dominated because only a few companies had the resources and the infrastructure required for software development. But the model is flawed. Keeping control of the code within a relatively small group of developers limits the ability to both locate and fix bugs. Even when software is exposed to a very large beta, the issues found must be triaged, meaning that not everything gets fixed. Even final release software is guaranteed to ship with bugs, which is made all the more painful by the long wait for each new release.
Consider Microsoft Vista. Microsoft develops all of its software products using the Cathedral model. I could rail on about the problems users have had with Vista but that wouldn't be fair to Microsoft's developers. They have a multitude of groups to satisfy and a limited amount of time to do so. There are guaranteed to be issues.
Today, with the Internet and tremendous collaboration and social networking available, the Bazaar model exposes the code to thousands of developers, who can both find and fix the bugs. Frequent releases may make the code problematic for some companies that require a stable off-the-shelf product, but they guarantee that the it will be improved even more quickly, leading to stable releases. And the Bazaar philosophy enables the creation of "long tail" products -- a utility or app required by only a small population. Such a product might never see the light of day in the commercial world, where Cathedral approaches dominate.