Frustration is not a new term to the computer world. Violence against computers is also not uncommon as harried users take arms against applications and operating systems that crash or core dump at critical times. These crashes inhibit productivity and have become more than just a nuisance. Today the "bugginess" of software takes center-stage as users seek applications that are useful as well as robust. Yet with the competing needs of increased functionality and ease of use, it is no wonder that today's software is inherently complex. However, robustness and complexity are inverse relations. Bugs, or glitches in computer programs, are a necessary evil and any computer scientist will tell you that for every bug you find, around three to seven bugs remain hidden. In commenting on the reliability of today's software, Gerald P. Weinberg said:
"If builders built houses the way programmers built programs, the first woodpecker to come along
would destroy civilization. [1]"
Today's software suffers from a variety of problems, namely a lack of reliability (or stability), security holes, and proprietary standards. Are these problems a result of the popular software engineering model in use today? Is there an alternative model that could either fix or prevent these problems?
Although the term "hacker" is considered derogatory in today's computer society, the "hacker culture" at the dawn of the computer age was the force behind the evolution of operating systems and the creation of the Internet (no, it wasn't Al Gore). In the early 1980's, Bill Gates (now president and CEO of Microsoft Corporation) confronted hackers by accusing them of theft. In essence, Gates was chastising the practice of making source code available to everyone. He considered the source code to be the most significant part of software and thus the hackers were "stealing the crown jewels" by making the source code available for download instead of profiting from it [7]. Today the descendants of that hacker culture continue to contribute to the evolution of software through their popular development model called open-source. However as the perception of the hacker culture has changed, so too has the development model. The majority of today's software is developed in accordance to the closed-source model, a model preferred by Microsoft Corporation. And so, the debate continues. . .
Software, and in particular success of software, relies upon three important "D's" -- design, development, and distribution. The design is a method by which the features and architecture of a particular application are brainstormed ahead of time as a solution in response to a certain problem. The development is the actual coding of the design whereby sketches and ideas are transformed into binary code. Finally distribution concerns the delivery of the said application to the user's desktop. When analyzing the complete life cycle of an application, from initial conception to release to manufacturing (RTM), several models already exist, such as the waterfall and spiral models. However, these models are not concerned with the "who" and the "how" of the development life cycle. Today only two models, closed-source and open-source, address the "who" and the "how" of the development life cycle up to and including distribution.
Which model is the better model? In a recent paper entitled "The Cathedral and the Bazaar," Eric Raymond addressed the characteristics of the two models while advocating the open-source model as the model of choice [5]. What is the closed-source model? The closed-source software model is a model based upon profiting from ownership of source code. This model is followed by a number of corporations, including Microsoft and Oracle among others. Closed-source software assumes a black-box approach to software distribution where users receive an application with certain features and functionality, but can never see the underlying code that achieves the functionality of the application.
On the other hand, open-source is the evolution of software via the Internet. It relies on the Internet in aiding the redistribution of the software so that the source code is available to anyone and everyone for improvement. The idea behind the open-source model is that more hands produce better software at a faster rate. The Linux operating system created by Linus Torvalds is the best known success story for the open-source development model [4].
Eric Raymond chose to model the two processes as a comparison between the cathedral and the bazaar. The cathedral was chosen as the representation of closed-source development since it involved a place of worship of a single idea whereby everyone was required to follow certain rules. On the other hand, a bazaar offered the free exchange of ideas among a large number of people. Raymond purported that the community development aspect of open source was the key to the success of an application [5].
The problem with understanding the Open-Source Software Movement is the apparent opposition from the Free Software Movement. Do they represent the same means to an end in developing software? What is the difference between free and open?
The term "free software" has a variety of meanings, mainly due to the two different computer worlds that use the term. In the PC-based world, the term "free software" represents that software which is freeware or shareware and is most often available for download via the Internet. However, this software is not part of the public domain. Yet in the net-centric UNIX worlds, "free software" is open-source software, or software that is part of the public domain, is free, and has source code available. PC-based users downloading freeware do not also download the source code for that software [2]. The freeware software is free in the sense that it does not cost any money to download or use, but the source code is unavailable. Yet as the UNIX viewpoint suggests, free can also mean that the software is in the public domain, in essence, the software is "freed." In this case, the source code is free from copyright restrictions. Hence, the argument is free food (freeware) versus free speech (open source). Finally to add more confusion, Richard Stallman originated the GNU General Public License which is based upon the copyleft principle. Copyleft software is software whose source code is always available and any derived products are released under that same license, meaning the source code of the derived product is also available.
Furthermore the existence of the Free Software and Open Software Movements contributes to the confusion surrounding the "free classification." Both the Free Software Movement and the Open Software Movement advocate the open-source methodology, yet the Free Software Movement does so on an ideological level whereas the Open-Software Movement addresses the technical level [3]. Additionally the open-software movement coined "open-software" as a marketing tool for aiding in the adoption of the model by corporations where free and profitability often appear as conflicting goals. To aid in the classification of what is and what is not open-source software, the Open Source Initiative was created and open source is now a trademark of this initiative.
Software that conforms to the Open Source Definition can use the open source trademark, only after meeting certain criteria [4]. Of the nine criteria, the first three are the most important. First, the software must be freely distributed and allow for free redistribution. Therefore, no one can earn royalties from distribution or redistribution of the software. Secondly, the source code must also be available for redistribution. By having the source code available, the software can be easily modified and reverse engineering is no longer required. Finally, the software must allow for derived works. Proponents of open-source believe that one of the greatest benefits of open-source is the ability to modify and experiment with the source code.
To further cloud the debate, few can decide whether Open-Source Software stands for the source code or a process. The new general consensus is that Open-Source Software (OSS) combines both. OSS has three main ingredients and covers the areas of licensing, programming, and development. First, OSS requires freely distributed source code. Secondly, OSS must have a modular architecture. Lastly, OSS must follow a bazaar-like development model [8]. If OSS is free, can it be a profitable means of developing and distributing software?
Money drives software development. Investment in software relies upon the profitability in doing so. Where is the profitability in software? Software is only profitable if it has value. Software can be valuable in one of three ways -- use, market, and monopoly [1]. If the particular computer program can be used as a tool for solving problems, then it has use value. Market value arises from the ability to sell the program as a commodity whereas monopoly value is based upon the unavailability of the program to competitors. One fear of utilizing the open-source model of development is based upon the "Open-Source Doomsday Scenario." Since everything is free, both the market and monopoly values approach zero. Eventually the use value plummets when the software does not attract enough customers, thus resulting in zero profitability for the developer of open-source software. Yet, this scenario does have some holes. In particular, a developer will be paid for services for having created useful software, even if the software in itself is free. Furthermore, several companies, such as Red Hat and O'Reilly and Associates, Inc. are proof that the open-source model is a profitable one.
Currently four known ways exist for making money utilizing the open-source model. The first way, and by far the most popular one, is the role of Support Seller [1]. Since the open-source model is so "open", companies such as Red Hat can profit through the sale of distribution and support packages. Open-source development contributes to the existence of multiple flavors of the software. Companies can buy into the distribution and support packages in order to reduce the requirements upon the in-house Information Technology (IT) staff. Additionally peace of mind is secured since the company now has a place for reporting and solving problems. In this way, a corporation will choose the name brand version over the available generic brands. Most of the companies that profit from branding and distribution provide three resources to the corporation. One resource is the availability of the source code on CD-ROM, thereby bypassing the need to download it from an Internet website. In addition they offer a company name and a corporate commitment which includes the security that arises from a reliable technical support resource [6]. The second method is called Loss Leader. As a loss leader, a company that currently has major market share for closed-source software decides to distribute that software open source. An example of this case is Netscape who in 1998 decided to release the source code for its Internet browser [2]. A yet untapped moneymaker is that of Widget Frosting where a hardware company relies upon open-source for the creation of multiple flavors of its device drivers. The benefits of this method are readily obvious since the hardware company, through open source, can now broaden its market appeal. Utilizing open source can increase the number of platforms with which the hardware complies, thus enhancing potential profitability. The final way is called Accessorizing. Accessorizing includes books, manuals, and other printed materials as well as novelty items such as toys and trinkets. O'Reilly and Associates, Inc., one of the largest suppliers of books and manuals on a variety of open-source software programs, is an excellent example of the profitability of open-source software accessories.
The answer is simple -- customers and businesses. Customers benefit from the increased security and reliability of software as well as from the existence of open standards. A current concern of businesses is the Y2K issue (or Year 2000 issue) where computers can potentially malfunction from having stored dates in a two-digit format. The computer in turn can be confused by the 00 of 2000 and instead interpret it as the year 1900. With closed-source software, developing companies assert that their software is Y2K compliant. But is this really true? How do you know? With the open-source model, the source code is readily available, thus making it possible for you to determine Y2K compliance. Further reliability results from the "bazaar" method of development in that more programmers are better than fewer. In "The Cathedral and the Bazaar, " Raymond asserts that "given enough eyeballs, all bugs are shallow [5]. " The more programmers you have, the more likely you are of finding more bugs, and therefore fixing them.
Besides benefiting the consumer, open source software also aids the producer and the seller. A producer can increase profit margins due to reduced overhead from outsourcing the source code to the public and from the faster development speed. Finally the seller enhances profitability with the opportunity to broadcast to a broader market. Through its allowance of faster development of multiple platform versions of the software, the open-source model can lead to an increase in the available customer base [1].
Not long ago, Bob Young, the founder of Red Hat (a flavor of Linux) posed the question: "Would you buy a car with the hood welded shut?" The answer for most of us is a resounding no. Lately our software focus has been on plugging in the application and hoping it produces. As consumers we have accepted the closed-source model, a model that procures the black-box approach, an approach that follows the idea of welding the hood of a car shut [9]. With closed-source software we cannot look inside to see how it runs. With a car with the hood welded shut we cannot look inside to see the gears and belts moving along that power the car.
Operating systems are critical since they are managers of the computers' resources and serve as an interface between the hardware and the programmer. With this criticality of operating systems, should their source code be open to the scrutiny of a number of individuals? Perhaps moving software to the economic category called "Public Good" would better serve all consumers. "Public Good" refers to the idea that the software would be best built for everyone all at once [8]. In this case, the operating system is beneficial to everyone, in much the same way as a lighthouse or traffic light are beneficial. However, a lighthouse and a traffic light are tangible items whereas software is more "virtual" or intangible. Although the software can come in a shrink-wrapped box, you cannot hold the application in your hands. An application is merely a combination of ones and zeroes that a computer understands.
Is Open-Source Software the panacea or cure-all? Probably not. Eric Raymond's paper asserts that "while coding remains an essentially solitary activity, the really great works come from harnessing the attention and brainpower of entire communities [5]." The problem is that many of these great works are derived works. They were not conceived using the OSS model. Linux, developed by Linus Torvalds, is actually a derivation from minimalist UNIX. Torvalds sought not to create a brand new product, but to improve upon an already existing product. The Open-Source Software Model emphasizes the motto of "Don't reinvent the wheel." In addition, seventy-five percent of the software developed today is code customizations or tools used internally by different corporations. This software does not fit the OSS Model because it is "vertical code" or code that is not very modularized. A lack of modularization makes code re-use extremely difficult and makes the software very high maintenance. With high maintenance software a small change can have serious repercussions elsewhere.
Although the OSS model has its limitations, it also has its advantages. By opening up the source code to more eyes, the software has the potential to be more reliable. In addition, it can be a big benefit to develop mission-critical software under the OSS model due to the increased reliability and security [2]. Another added benefit is that the OSS model has a greater development base, thus resulting in a greater knowledge base. This means that the original developers are not the only people who could provide technical support. Finally the OSS model fosters non-proprietary standards in much the same way as the Scientific Method. Imagine Albert Einstein withholding his theory of relativity from the world or even Isaac Newton withholding his laws of motion.
Where is the future? The future of software development will be a happy medium of open and closed-source software development. The popularity of open-source software requires a paradigm shift in the software business from the idea that profit is generated by the creation of products to profit is generated by support and service. However, open-source is better suited to "horizontal code" or base code like operating systems and protocols. Closed-source model companies will find that their business will focus on customizations of existing code. A new project in the Open-Source movement is the H2O project, so named because of its basis on free circulation, freedom to change, and on its indispensability. Finally the main goal of both development models should be to create high quality, consistent products at reasonable prices. Perhaps then will software not be as susceptible to termites or woodpeckers as Gerald P. Weinberg had predicted.