Fogbeam Labs | Cutting Through The Information Fog

Fogbeam News

05/26/2009Fogbeam Labs is born

Quick Links

The Semantic Web

A new form of Web content that is meaningful to computers will unleash a revolution of new possibilities

The Semantic Web will bring structure to the meaningful content of Web pages, creating an environment where software agents roaming from...

»»Read more

Open Source Software

Open Source software is a recent trend in software, in which the software is written collaboratively by groups of developers - some paid and some volunteer - spread throughout the world. Open Source Software has many advantages over proprietary software, which is why Fogbeam Labs bases all of it's product offerings on Open Source software.

»»Read more

Open Source Software

Open source software (OSS) is defined as computer software for which the source code and certain other rights normally reserved for copyright holders are provided under a software license that meets the Open Source Definition or that is in the public domain. This permits users to use, change, and improve the software, and to redistribute it in modified or unmodified forms. It is very often developed in a public, collaborative manner. Open source software is the most prominent example of open source development and often compared to user-generated content.

A report by Standish Group states that adoption of open source software models has resulted in savings of about $60 billion per year to consumers.

In his 1997 essay The Cathedral and the Bazaar open source evangelist Eric S. Raymond suggests a model for developing OSS known as the Bazaar model. Raymond likens the development of software by traditional methodologies to building a cathedral, "carefully crafted by individual wizards or small bands of mages working in splendid isolation". He suggests that all software should be developed using the bazaar style, which he described as "a great babbling bazaar of differing agendas and approaches."

In the Cathedral model, development takes place in a centralized way. Roles are clearly defined. Roles include people dedicated to designing (the architects), people responsible for managing the project, and people responsible for implementation. Traditional software engineering follows the Cathedral model. Fred P. Brooks in his book The Mythical Man-Month advocates this sort of model. He goes further to say that in order to preserve the architectural integrity of a system, the system design should be done by as few architects as possible.

The Bazaar model, however, is different. In this model, roles are not clearly defined. Gregorio Robles suggests that software developed using the Bazaar model should exhibit the following patterns:

Users should be treated as co-developers
The users are treated like co-developers and so they should have access to the source code of the software. Furthermore users are encouraged to submit additions to the software, code fixes for the software, bug reports, documentation etc. Having more co-developers increases the rate at which the software evolves. Linus's law states that, "Given enough eyeballs all bugs are shallow." This means that if many users view the source code they will eventually find all bugs and suggest how to fix them. Note that some users have advanced programming skills, and furthermore, each user's machine provides an additional testing environment. This new testing environment offers that ability to find and fix a new bug.
Early releases
The first version of the software should be released as early as possible so as to increase one's chances of finding co-developers early.
Frequent integration
New code should be integrated as often as possible so as to avoid the overhead of fixing a large number of bugs at the end of the project life cycle. Some open source projects have nightly builds where integration is done automatically on a daily basis.
Several versions
There should be at least two versions of the software. There should be a buggier version with more features and a more stable version with fewer features. The buggy version (also called the development version) is for users who want the immediate use of the latest features, and are willing to accept the risk of using code that is not yet thoroughly tested. The users can then act as co-developers, reporting bugs and providing bug fixes.
High modularization
The general structure of the software should be modular allowing for parallel development.
Dynamic decision making structure
There is a need for a decision making structure, whether formal or informal, that makes strategic decisions depending on changing user requirements and other factors.

Most well known OSS products follow the Bazaar model as suggested by Eric Raymond. These include projects such as the Linux kernel, Firefox, Apache, the GNU Compiler Collection, and Perl to mention a few.

Content on this page is based on material from and is licensed under the GNU Free Documentation License.