With Microsoft’s rise to dominance in the software industry, it’s easy to think of software primarily as a product, something that is developed, packaged and sold. Shrink-wrapped PC applications represent only a small fraction of the total software in use.
Most large business applications are either internally developed or else so heavily customized that they might as well be. Most scientific applications are “one-off,” or if built on top of off-the-shelf tools, including a large custom component. Administration, whether of a network, a large computer system, or a Web site, requires the constant development of small tools, scripts, and “glue applications” to make everything work together. Even in the desktop productivity environment, power users develop macros and other “programs” to automate repetitive tasks.
Whether or not open source is a superior methodology for the development of packaged end-user software products is currently being tested in the marketplace. It is already clear, though, that open source is a superior methodology for the development of this kind of custom software. Giving users of product access to its source code and the right to create derivative works allows them to help themselves, and encourages natural product evolution as well as preplanned product design.
Perhaps even more importantly, the open-source process reflects a powerful global trend toward networked collaboration. Just as the printing press enabled the spread of knowledge during the Renaissance period, the Internet is enabling large-scale cooperative development efforts today. The speed at which information spreads has increased by orders of magnitude. What’s more, the principles of freedom of speech and information interchange take on new significance in the context of our interaction with computers. After all, what is a program but a form of speech with a computer? And what is open source then but the open, public discourse that has always led to the advancement of human knowledge?