Did Abrams arrive? Arrive! Abrams, the programmer, arrived. Abrams (the programmer) arrived. Abrams didn’t arrive. Abrams didn't arrive. Abrams won’t arrive. Abrams won't arrive. Browne’s been patient. Browne's been patient. Browne’s chair arrived. Browne's chair arrived. Abrams’ chair arrived. Abrams' chair arrived. Abrams, Browne, Chiang, and Devito arrived. That “chair” arrived. That ‘chair’ arrived. Those ‘chairs’ arrived. The shipment (‘chairs’) arrived. ¦i The the the i¦ is impossible grammar. “The the the” is impossible grammar. "The the the" is impossible grammar. ‘The the the’ is impossible grammar. 'The the the' is impossible grammar. 4711 chairs arrived. The 42nd chair arrived. We need 4,711,000 chairs. The 17% increase arrived. The 1950s arrived. The 1960's arrived. The 12-inch pianist arrived. The 1.5-inch chair arrived. Abrams and/or Browne arrived. The Cathedral and the Bazaar Eric Steven Raymond Thyrsus Enterprises This is version 3.0 Copyright © 2000 Eric S. Raymond Abstract The Cathedral and the Bazaar Linux is subversive. Certainly not I. I was one of the first GNU contributors in the mid-1980s. 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. So I did—and it was a significant success. This is the story of that project. 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. The Mail Must Get Through Today it supports almost three thousand users on thirty lines. I had gotten quite used to instant Internet email. I needed a POP3 client. Actually, I found three or four. The problem was this: suppose someone named `joe' on locke sent me mail. This was clearly something the computer ought to be doing for me. But none of the existing POP clients knew how! And this brings us to the first lesson: Not on your life! Because: 2. Good programmers know what to write. Great ones know what to rewrite (and reuse). An important trait of the great ones is constructive laziness. The Linux world has taken this tradition nearly to its technological limit; it has terabytes of open sources generally available. And it did for me. Stay or switch? A practical motive to switch was the presence of multiple-protocol support. (Fred Brooks, The Mythical Man-Month, Chapter 11) Well (I told myself) the changes to fetchpop had been my first try. So I switched. I had many changes to make, and we quickly agreed that the logical thing for me to do was take over the program. Without my actually noticing, the project had escalated. I was acting out this principle: 4. If you have the right attitude, interesting problems will find you. But Carl Harris's attitude was even more important. He understood that Once I did that, he acted with grace and dispatch. The Importance of Having Users And so I inherited popclient. Just as importantly, I inherited popclient's user base. Properly cultivated, they can become co-developers. Another strength of the Unix tradition, one that Linux pushes to a happy extreme, is that a lot of users are hackers too. Because source code is available, they can be effective hackers. This can be tremendously useful for shortening debugging time. The power of this effect is easy to underestimate. Lazy like a fox. And loosely-coupled collaborations enabled by the Internet, a la Linux, were frequent. It evolved from a tiny, crude sccs.el mode somebody else had written. The Emacs story is not unique. One such is MATLAB, a commercial data-analysis and visualization tool. Release Early, Release Often Early and frequent releases are a critical part of the Linux development model.