第 3 章
Chapter 3 The Cathedral and the Bazaar (circa 1988-1991) (c. 1988)
The pressure of that unbuilt city, waiting for its cathedral, its kernel, did not find its answer in a grand architectural decree. It was answered, years earlier, by a list. The list was a Usenet posting. Its headers were a cartography of the new territory: a path from Finland, through a university gateway, out onto the global network. The date was September 17, 1991. The newsgroup was comp. os. minix. The subject line read, plainly: “Free minix-like kernel sources for 386-AT.” The author was Linus Torvalds, a student at the University of Helsinki. The body of the message was not a manifesto. It was a report, terse and technical. > Do you pine for the nice days of minix-1.1, when men were men and wrote their their own device drivers? Are you without a nice project and just dying to cut your teeth on a OS you can try to modify for your needs?… This is a program for hackers by a hacker. I’ve enjoyed doing it, and somebody might enjoy looking at it and even modifying it for their own needs.
It is still small enough to understand, use and modify, and I’m looking forward to any comments you might have. He noted it was just a hobby, not big and professional like GNU. He mentioned it had been brewing since April. He stated the system required minix to be installed to compile it. And then he gave the coordinates: the source code, a compressed tar archive, was available for anonymous FTP from the site nic. funet. fi in the directory /pub/OS/Linux. The version was 0.01. The act was complete: an idea, a working fragment, and an address in a global, public warehouse. This was not the laying of a cornerstone in a planned cathedral square. It was the opening of a stall in a bazaar that had no walls, no blueprints, and no master architect, only a protocol for connection and a standing invitation. That list, that posting, was the visible mechanics of a new kind of pressure release.
The abstract principles of software freedom—the right to study, modify, and share—had found their most potent translation not in a philosophical treatise but in a network transaction. The moral crusade had required a method. The license had required a workflow. The unbuilt city required not just a constitution but the daily, messy business of hauling stone, arguing over plans in the dust, and seeing what structures emerged from the crowd. The period from 1988 to 1991 witnessed the birth of that method. It was the moment the idea of free software collided with the practical reality of collaborative development on a nascent internet, and in the collision, a distinct engineering culture was forged. This culture was open source in practice, if not yet in name. It operationalized Richard Stallman’s four freedoms into a viable, productive model. It proved that a chaotic, distributed bazaar could build what a centralized, guarded cathedral could not, or would not, build fast enough. The cathedral model, which likened traditional software development to building a cathedral with careful, isolated work by individuals or small groups, was the world against which this new thing defined itself.
In proprietary software houses—the Microsofts, the IBMs, the emerging Silicon Valley giants—and even in many large academic or government projects, software was built like a medieval cathedral. Work was centralized and hierarchical. Architects drafted master plans. Managers allocated tasks to workers laboring in isolated chambers. The source code was a guarded secret, the proprietary heart of the enterprise. Releases were infrequent, monumental events: polished, complete versions unveiled after years of secluded labor. This model prized control, predictability, and commercial advantage. Its output was a finished product, a sealed artifact whose internal workings were as inaccessible as the masonry behind a cathedral’s facade. The development cycle was a linear procession from design to deployment, a closed loop within a single institution. Innovation was managed, risks were mitigated, and the user’s role was strictly that of a consumer, not a participant. The software industry of the late 1980s was a landscape of such cathedrals, each a walled garden of intellectual property. Even within the free software movement, the initial development of the GNU project had exhibited cathedral-like characteristics.
Richard Stallman and a core team at the Free Software Foundation functioned as architects and master builders, overseeing the creation of essential tools with deliberate, centralized coordination. Projects like the GNU Emacs text editor, the GCC compiler, and the GNU Debugger were driven by a clear vision from the center. By 1990, the project’s most critical component—the kernel—was the ambitious GNU Hurd, a microkernel based on Carnegie Mellon’s Mach architecture. It was a project of profound complexity and long-term vision, engineered behind the scenes. Its development pace was measured, its design debates were internal, and its releases were anticipated as major events. This was a cathedral built to the specifications of freedom, but built nonetheless according to a master plan. It was evidence of the fact that the philosophy of sharing did not, by itself, dictate a decentralized method of construction. The tools were free, but the process of forging them remained largely centralized. The internet changed the geometry of collaboration. It provided not just a new medium for distribution, but a new topology for work.
Before the widespread adoption of TCP/IP protocols and the proliferation of university and corporate network access, collaboration among geographically dispersed programmers was a slow affair of mailed tapes and occasional phone calls. The rise of Usenet and FTP sites in the late 1980s transformed this. Usenet newsgroups like comp. os. minix, comp. os. misc, and gnu. misc. discuss became global, asynchronous meeting halls. They were public squares where anyone with a network connection could listen, ask, answer, and argue. FTP sites like prep. ai. mit. edu for GNU tools and nic. funet. fi for Linux served as communal warehouses, open all hours, where the raw materials—source code—could be fetched and deposited by anyone. This infrastructure did not require permission. It required only knowledge of the address and the protocols. It turned collaboration from a planned activity among known colleagues into a dynamic, emergent process among strangers connected by technical interest and network routing tables. Within this new arena, a different model of development began to flourish. It was a bazaar.
There was no single architect, no grand blueprint displayed in a site office. Instead, there were many stalls, many voices hawking wares, arguing over prices, comparing goods. A project began not with a comprehensive design document but with a working, if minimal, piece of code released into the public square. Its evolution was driven by the conversations and contributions that swirled around it. Bugs were not secret failures to be fixed in private but public puzzles to be solved by the crowd. Features were not decreed from a project manager’s list but suggested, debated, and often implemented by users who needed them. The development process was transparent, concurrent, and participatory. The bazaar was noisy, chaotic, and seemingly inefficient. But it possessed a ferocious, adaptive energy that the quiet, orderly cathedral could not muster. The GNU project’s own tools began to feel the pull of this bazaar. Emacs, for instance, was not just a product released by the Free Software Foundation. It lived on the network. Discussions about its features, bug reports, and patches circulated on Usenet and early mailing lists.
By 1991, this distributed energy even precipitated a significant fork. Lucid Inc., working from an early alpha version of GNU Emacs 19, began developing its own variant, which would later become Lucid Emacs and then XEmacs. This was the freedom to modify in action, but it was also a signal that centralized coordination of a complex, popular tool was becoming impossible. The bazaar could spawn competing stalls, each catering to slightly different tastes or needs. The single, authoritative version maintained by the original architects was no longer the only game in town. This forking was a direct consequence of the distributed, participatory model; it was a form of healthy competition in some views, a troubling fragmentation in others. But the most vivid and consequential proof-of-concept for the bazaar model was the project announced in that September 1991 posting: the Linux kernel. Linus Torvalds did not present a master plan. He presented a tiny, working kernel and an invitation to a conversation. The development process lived and breathed on comp. os. minix. The method was straightforward to the point of being primitive.
Contributors would download the source tarball from the FTP site. They would compile it, test it, and discover a bug or conceive of a missing feature. They would then post a description of the problem, or better yet, a patch—a snippet of code showing the fix or the new functionality—to the newsgroup. Torvalds would review these posts. If a patch worked and aligned with his sense of the kernel’s direction, he would incorporate it into his local source tree. Periodically, he would package a new version, increment the version number from 0.01 to 0.02, and upload the new tarball to the FTP site. The cycle would begin again. There was no formal version control system like CVS, which was itself emerging from work on the GNU project and other sources. Coordination was managed through a combination of Torvalds’s central, curatorial role, the public discourse on the newsgroup, and the sequential releases on the FTP server. This was distributed, volunteer-driven development scaled by the network. The social norm that governed this chaos was a raw meritocracy of contribution.
Respect and influence accrued not from titles or institutional affiliations but from the demonstrable utility of one’s code or the insightfulness of one’s debugging. It was a pragmatic ethos. The goal was not to uphold a philosophical ideal in its purest form, but to make the kernel work, and work better, on as many machines as possible. The GPL license that covered the kernel ensured the legal framework for this sharing, but the social engine was the immediate, practical reward of solving a concrete problem and having one’s solution adopted by others and by Torvalds himself. This pragmatic drive began to stress-test the very legal and philosophical framework that enabled it. The GPL was designed as a constitutional guarantee of freedom. It ensured that every user retained the rights to study, modify, and share. But in the bazaar, these rights were exercised constantly, aggressively, and not always in ways that aligned with a single, coherent project vision.
The license prevented the code from becoming proprietary, but it could not prevent forks, disputes over direction, or the incorporation of code that some considered messy or inelegant. The pressure was no longer simply the threat of proprietary enclosure from the outside world. It was the internal pressure of scale, of coordination, of managing the productive chaos that the GPL’s own freedoms unleashed. The bazaar model revealed that freedom, when fully operationalized, was not a state of tranquil harmony but a state of dynamic, sometimes contentious, collaboration. The contrast between the two models crystallized in their respective approaches to quality and debugging. In the cathedral model, quality assurance was a phased, internal process. A dedicated team tested the software before release, aiming to eliminate bugs before the public ever saw the product. The process was controlled but limited by the number of eyes and the time allocated. In the bazaar, debugging was continuous and public. A bug was not a shameful secret but a community-wide challenge. This practice led to an observation, later formalized by Eric S.
The contrast between the two models crystallized in their respective approaches to quality and debugging. In the cathedral model, quality assurance was a phased, internal process. A dedicated team tested the software before release, aiming to eliminate bugs before the public ever saw the product. The process was controlled but limited by the number of eyes and the time allocated. In the bazaar, debugging was continuous and public. A bug was not a shameful secret but a community-wide challenge. This practice led to an observation, later formalized by Eric S. Raymond in his 1997 essay The Cathedral and the Bazaar. Raymond coined an aphorism he dubbed Linus’s law, inspired by Linus Torvalds: “Given enough eyeballs, all bugs are shallow.” The argument was that in a development model where the source code was open and the community of contributors was large and diverse, any given bug would be obvious to someone, and a fix would be rapidly found. This was not just a technical claim; it was a claim about the sociology of problem-solving. The bazaar, for all its noise, could mobilize a global, ad-hoc debugging force that no cathedral, with its limited internal staff, could ever hope to match.
The identity was rooted in the shared experience of the workflow: the download, the compile, the hack, the patch, the upload, the argument on the mailing list. This was a culture forged in the doing. It was technically demanding, jargon-rich, and deeply invested in the artifacts being produced. The moral imperative of software freedom remained a powerful motivator for many, but for others, the primary attraction was the technical challenge, the peer recognition, or the simple utility of the tools being built. The movement was becoming a workforce, decentralized but interconnected, volunteer yet fiercely productive. This translation from concept to practice, from philosophy to engineering culture, advanced the central thesis of the moral crusade becoming infrastructure. By 1991, the infrastructure was not merely legal or conceptual. It was a growing collection of working systems: a kernel that booted, compilers that compiled, editors that edited, all built and maintained by a globe-spanning collective operating through a novel, internet-mediated workflow. The movement was starting to build the very platform on which future software would run. The tools were becoming the foundation.
The hacker ethic was becoming a viable, scalable production model. Yet this success contained the seeds of its own tensions. The bazaar thrived on pragmatism, on “rough consensus and running code.” But the free software movement, as defined by Richard Stallman and the Free Software Foundation, was rooted in an unwavering moral stance. The GPL was not just a clever technical license; it was a tool for ethical action. As the bazaar grew, attracting thousands of contributors for whom the primary draw was technical excellence or fun rather than moral crusade, a divergence began to open. The method was outstripping the original motivation. The practice of open, collaborative development was proving its worth on its own terms, separate from the philosophical framework that had birthed it. This divergence was not yet a fracture, but it was a latent strain—a conflict between the purity of the cause and the pragmatic compromises of large-scale, decentralized construction. The chapter ends with the scale of early collaborative success, alongside the unresolved cultural conflicts it contains.
The internet’s nascent infrastructure did more than merely connect machines; it rewired the very psychology of collaboration. In the cathedral model, communication followed formal channels—design documents, internal memos, scheduled meetings—all predicated on a known and bounded group of participants. On Usenet and FTP, the audience was inherently unknown and potentially unlimited. A post to comp. os. minix might be read by a student in Helsinki, a researcher in Berkeley, and a hobbyist in Sydney, each bringing different hardware, expertise, and needs to the conversation. This anonymity and scale forced a new kind of discourse: arguments had to be made on technical merit, publicly, because institutional authority held little weight in a space where anyone could assume a pseudonymous handle. The social protocol became one of demonstrated competence. A contributor’s reputation was built post by post, patch by patch, in a ledger visible to all. This environment naturally selected for a pragmatic, problem-solving ethos, as abstract philosophical debates that did not lead to working code tended to wither in the face of more immediate technical puzzles. The network, therefore, didn’t just facilitate the bazaar; it cultivated the social soil in which its particular norms of meritocracy and transparent debate could root and grow.
This shift was also reflected in the evolving nature of the tools themselves. GNU’s GCC compiler, a cornerstone of the free software toolchain, began its life under a relatively centralized development model at the FSF. But as it became the standard compiler for a burgeoning community, its maintenance subtly transformed. Bug reports and patches flowed in not just from assigned developers but from users encountering edge cases on obscure hardware or while porting other free software. The compiler’s development mailing list became a crucial forum where intricate discussions about optimization techniques and language standards played out in the open. While the FSF retained ultimate stewardship, the process of integrating contributions became more conversational and network-mediated. The tool was no longer merely a product of the free software philosophy; it was becoming a vital piece of shared infrastructure, maintained through the collective vigilance of its users. This blurred the line between producer and consumer, fulfilling in practice the freedom to study and modify, and creating a feedback loop where the tools improved precisely because they were widely used in demanding, real-world conditions.
The logistical challenges of this model, however, were immense and had to be solved incrementally. Before the advent of sophisticated version control systems, the simple act of merging contributions from dozens of volunteers into a coherent codebase was a manual and error-prone task for a project maintainer like Torvalds
The success was tangible: a working, rapidly improving kernel; a suite of robust, widely-used developer tools; a global community that had turned a network protocol into a factory floor. But the conflict was structural. It resided in the growing space between the cathedral’s ideal of centrally planned freedom and the bazaar’s reality of decentralized, emergent production. It lived in the gap between a license designed to protect a moral principle and a community increasingly focused on the practicalities of building great code. The pressure now was no longer about whether a free software system could be built. Linux version 0.01 had answered that. The new pressure was what would become of the builders’ culture now that it had proven it could build, and what would become of the philosophy now that it had been handed the powerful, unpredictable tool of the internet bazaar.
The success was tangible: a working, rapidly improving kernel; a suite of robust, widely-used developer tools; a global community that had turned a network protocol into a factory floor. But the conflict was structural. It resided in the growing space between the cathedral’s ideal of centrally planned freedom and the bazaar’s reality of decentralized, emergent production. It lived in the gap between a license designed to protect a moral principle and a community increasingly focused on the practicalities of building great code. The question of whether a free software system could be built had been settled; what remained unsettled was the fate of the culture and the creed that had done the building, both now yoked to an instrument no one had designed and no one could steer. The unbuilt city was being built, street by street, but no one controlled the map, and the architects of the original plan watched from their still-unfinished cathedral, wondering if the bustling, unruly town spreading beyond their walls would remember why construction had begun in the first place.