The Cathedral and the Bazaar
I recently read "The Cathedral and the Bazaar". I liked the way Eric Raymond has effectively discussed the two models of s/w development or evolution which he aptly calls Cathedral and Bazaar models. In this essay Eric uses his own project fetchmail to substantiate how the Bazaar model of s/w development is much supperior to the Cathedral model. He also discusses about the things that need to be done to get an open source project off the blocks. I like his style of putting things accross.
Some comments and extracts from this revolutionary essay
- Given enough eyeballs all bugs are shallow. He dubs this as Linus's Law
- Every good work of s/w starts by scratching a developers itch
- Good programers know what to write, great ones know what to rewrite and reuse
- Plan to throw one away, you will anyhow -- Brooks. This essay frequently refers to the theories of Brooks discussed in his book The Mythical ManMonth. Eric very cleverly explains how the Linux's successful model of development doesnot contradict some of Brook's theory.
- If you want to get it right be ready to start over atleast once.
- If you have right attitude interesting things will find you
- When you lose interest in a program your last duty towards it is to hand it over to a competent person
- Treating users as co-developers is the most hassle free route to rapid code development & effective debugging
- He discusses 2 tier model of development i) Cathedral mode core ii) Bazzar mode toolbox. Examples of such projects are Emacs, MATLAB
- Release early, release often and listen to your customers
- He explains the theory of Knowledge of Masses. Averaged opinion of a mass of equally expert (or equally ignorant) observers is quite a bit more reliable a predictor than the opinion of a single randomly-chosen one of the observers. --Delphi's law
- More users find more bugs
- Make distinction between stable & cutting edge versions by the version number
- He talks about advantages of having source-aware beta testers.
- Adding more men to a late project makes it latter.-- Brook's Law. The Bazaar model doesnot violate Brook's law because it usually has a small core group of developers
- Smart data structures and dumb code works a lot better than the other way around. This one is analogous to Brook's observation
- If you treat your beta-testers as if they're your most valuable resource, they will respond by becoming your most valuable resource.
- The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better
- Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong.
- Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.
- Exploration essentially by diffusion, followed by exploitation mediated by a scalable communication mechanism :- is applicable to s/w world aswell
- When your language is nowhere near Turing-complete, syntactic sugar can be your friend.
- A security system is only as secure as its secret. Beware of pseudo-secrets
- For Bazaar model to work well you should start from something & should be able to attract people
- He also talks about Egoless Programming - developers not being territorial about their code
- For the success of bazaar model "Severe effort of many converging wills" is required and not "principle of command".
- More heads are better than one, if the coordinator is good and the communication medium is powerful like the internet
- In closed commercial s/w development, people have to be motivated to do boring but necessary drudgework. Very True...
- A happy programmer is one who is neither underutilized nor weighed down with ill-formulated goals and stressful process friction. Hope my manager looks at this :-)
- Enjoyment predicts efficiency
- Play is the most economically efficient way of creative work.
- Open source is not magic pixie dust