Open vs Corporate Software Development (The Cathedral and the Bazaar)

"The Cathedral and the Bazaar" is Eric S. Raymond's influential 1997 essay contrasting two software development models. It helped shape the philosophy and practices of the open source movement.

The Cathedral Model

The cathedral represents traditional, centralised software development:

  • Central authority: A small group of architects and developers plan and design.
  • Sequential releases: Software is released at discrete milestones (alpha, beta, 1.0).
  • Secrecy: Source code is closely guarded until release.
  • Top-down control: Features and priorities are set by management.
  • Perfectionism: Releases are delayed until the software is "ready."

This model was common in commercial software development and early free software projects (GNU Emacs, GCC in their early days).

The Bazaar Model

The bazaar represents open, collaborative development:

  • Distributed authority: Anyone can contribute. Linus Torvalds is the most famous example, leading the Linux kernel development with thousands of contributors.
  • Frequent releases: "Release early, release often." Beta releases are public and continuous.
  • Transparency: Source code is always available. Everyone can see and discuss changes.
  • User-driven: Users are treated as co-developers. Bug reports and patches are welcomed.
  • Incremental improvement: Software evolves through many small, incremental changes.

Key Principles from the Essay

  1. Every good work of software starts by scratching a developer's personal itch.
  2. Good programmers know what to write. Great programmers know what to rewrite (and reuse).
  3. Plan to throw one away; you will, anyhow.
  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. And listen to your customers.
  8. Given a large enough beta-tester and co-developer base, almost every problem will be characterised 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.

The Internet as Enabler

The bazaar model depends on the internet as a communication medium. Cheap, fast, global communication enables:

  • Distributed teams collaborating across time zones.
  • Public mailing lists and issue trackers.
  • Version control systems (Git, Mercurial) enabling parallel development.
  • Continuous integration and automated testing.

Modern Hybrid Models

Today, most software development blends cathedral and bazaar elements:

  • Inner source: Corporations applying open source practices internally.
  • Open core: Core product is open source; enterprise features are proprietary.
  • GitHub flow: Pull requests, code review, and CI/CD applied in both open and closed projects.
  • RFC process: Google, Meta, and others use Request for Comments processes for architectural decisions, similar to open standards bodies.