- Fight by Software Programmers for their Rights – the beginnings
- Some Attributes of Good Software and Great Programmers
- Users as Co Developers OR The Secret of Programming Success
- You Do Agile Development? Open Source?
- Don’t Read if you are not a Developer
- Nurturing a small software project to success
- The Truth Behind Genius
- Listen to your users!
- “What Language?” – For humans or For computers?
- Charming Developers to Make Great Software
- Democratic Centralism for Organizing Groups
- Recruiting the Best for a Project
- Chrome, Firefox, Mozilla browser engines – The beginnings
From the early days of software development, a raging debate was going on between closed source vs open source and licenced sofware vs free(dom) software. The first Unix versions ended up open source, but licenced by large corporations. Late 1970s saw the emergence of closed source and pay per licence model of software distribution, famously championed and exemplified by Microsoft.
This trend faced challenge from prominent hackers who rebelled against this corporate take over of their right to look at code, modify it and share it with friends. The fast evolving internet is leveraged by hackers groups around the globe to combine their efforts to keep the tradition of software freedom alive. Iconic leaders like Richard Stallman who keep the flame of software freedom burning for over 30 years now.
But the dawn of 1990s saw a mini revolution in software development methodology. A post graduate student in Finland coded up an operating system kernel from scratch and shared the source over internet to hackers around the world.
After 25 years of collective development, today Linux is a worldwide phenomenon, taken over by corporate interests, but still being developed under the original distributed, collective model which works with the principle of democratic centralism.
We publish here a paper on the Linux Methodology of software development by Eric Raymond who himself is a prominent hacker. This paper talks about collective software development methodology, but also throws light on any creative effort where individual brilliance becomes a part of collective effort to achieve great results.
The paper is split into several parts and published as a series.
I anatomize a successful open-source project, fetchmail, that was run as a deliberate test of the surprising theories about software engineering suggested by the history of Linux.
I discuss these theories in terms of two fundamentally different development styles, the “cathedral” model of most of the commercial world versus the “bazaar” model of the Linux world. I show that these models derive from opposing assumptions about the nature of the software-debugging task. I then make a sustained argument from the Linux experience for the proposition that “Given enough eyeballs, all bugs are shallow”, suggest productive analogies with other self-correcting systems of selfish agents, and conclude with some exploration of the implications of this insight for the future of software.
1. The Cathedral and the Bazaar
Linux is subversive. Who would have thought even five years ago (1991) 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’s 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 the Emacs programming editor) 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 that I could consciously try to run in the bazaar style. 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. 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, perhaps, they will help you become more productive yourself.
(continued in part 2)