Sunday, March 16, 2008

On the cathedral and the bazaar

Eric Raymond's piece "The Cathedral and the Bazaar" compares the way code is written to how a cathedral and a bazaar would hold events. A cathedral would be run by a select group of monks and their wishes are what is followed in the cathedral while a bazaar is a congregation of several people and ideas which together form one bazaar. Likewise, a program written in a cathedral-style environment are usually closed-source software where the company decides what features it will have, though open-source software such as the Version Control of Emacs was also written in this environment. The most well known programs that were written in a bazaar-like setting are Linux and Firefox, where users acted as co-developers and submitted bug reports and fixes and contribute to the growth of the program by suggesting new features or improvements.

Raymond spoke of several key points that he thinks should be followed to lead a successful bazaar -style project. Summed up, a bazaar-style project requires a base program written by a competent and outspoken coder who is open to new ideas and skilled with managing people that shows enough promise that the community feels that it has enough potential to merit their attention and give their time and effort to help build and debug alongside the original author. There were other points also stated, such as the concept of releasing code fast and often and assuming that code will become more robust as users continuously use it, find bugs, and fix them.

I feel that Raymond had a fairly accurate description of the cathedral and bazaar styles of programming. It is true that cathedral-styled projects are constrained by the creators of it and also tend to release updated versions of software slower, but often more stable that their open-source counterparts. On the other hand, bazaar-style projects tend to have a lot of input from varied sources, which does increase the amount of code being written for it, which in turn may lead to faster bug fixes and updated releases, at the cost of possibly buggier software initially. I disagree with his opinion though that cathedral-style development will eventually lose to bazaar-style development because of the nature of evolution, as i feel that the main advantage that most cathedral-style projects (closed-source programs in general), which is funding, tends to give them a huge edge.

As for what kind of project should be developed in which style, i feel that "essential for productivity" software should use a cathedral-style development and "nice to have" luxury software should use the bazaar-style. This is because i feel that closed-source software (which are mostly cathedral-style) usually tries to fulfill a specific non-essential market that the majority of computer owners are not interested in, which means that a bazaar-style project of the same product will suffer from issues such as lack of funding, lack of interest, lack of decisiveness as to what should and shouldn't be in the program (since the program is non-essential, there may not be one "best" way of going about doing things). For example, pen-source games are usually horrible, as they have to take into account what kind of game they will make, what should be the setting of it, etc, and since opinions weight more on non-essential software, this slows down development time. On the flipside, i feel that bazaar-style development would be best for essential software such as drivers, operating systems, and the like. That way, you are at least somewhat assured of a user base that has a reason to care, which will lead to people helping contribute bug reports, fixes, testing, etc, to get them to work properly so that they can use it too.

No comments: