Reading06: Lost in the Bazaar!
From your experience, which model of software development is superior: the cathedral or the bazaar? Which is the future of software development?
Imagine giving a child a toy and it breaks rather soon after the child starts using it. In fact one of the gears in the toy is slightly off center causing it not to work correctly. Instead of just giving up on the toy you pop it open see the problem and quickly fix it. The child is happy because the toy is fixed and you are happy because you saved money and did not have to buy a new toy. Now take this one step further to software on your computer. You are happily typing along when suddenly an error pops up in the software, depending on the person they may or may not have the skills required to fix the software, but if the software is open source the person can open up the souce code, possibly find the bug, and quickly fix it. Now not only does the software work for the person who just fixed it but it also lots of others who are users of the software will potentially benifit from this fix. The bug fix that was just described was quick, efficient, free and it would have never been able to happen with a traditional cathedral method of software development.
In his article The Cathedral and the Bazaar Eric S. Raymond puts forward two types of software development models, the catherdral model (or waterfall style) where the code is built up like a cathedral; one main person labors to put together beautiful code that goes up like a carfully planned cathedral, and the bazaar style where many different people work on an open souce code base. Raymond puts forth many different truisms about why the bazaar style of coding is better and I tend to agree with him. From the experience I have I tend to think that the open source bazaar style of coding provides better quality code at a faster rate with more creativity than could ever be dreamed of in a cathedral style of development. In particular Raymond points out one really good truism that I strongly identify with: 8. Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone. This can be seen today in almost every substansial open source project. While bugs always pop up in projects, they are almost always fixed easily and quickly becasue with so many eyes someone has to have an idea on how to fix the problem.
Moving forward in software delveopment today I would be shocked if we don’t see more frequent and larger open source projects. Open source is a tried and true method of system software, things like operating systems, utilities, and even research software, but as it stands right now a lot of user software is still closed source cathedral model of development. One reason for this might be because as Raymond says, 1. Every good work of software starts by scratching a developer’s personal itch., and to be honest userland software might not be that exciting or interesting to write. So instead of hobbyiest and hackers working on user application open source software they have mostly stuck to the more interesting and technical systems projects. I believe that as more and more people turn to the field of computer science we will see an uptick in open soruce user applications just because the interests of the community as a whole will become more diverse as the community continues to grow at a very rapid rate. In the future I see all of us becoming lost in the bazaar!