60252 Rimfire Rd. Bend, OR, 97702 USA
Free software is higher quality than commercial software because free software is written out of a fundamental interest in the software itself, not derived profits.
Table of Contents
Quality in software is as important as it is in any other product, but users have been conditioned to accept quality levels in software that would be unacceptable anywhere else. It's a recognized problem, but what choice do users have?
Quite a bit, actually.
First of all, we have to challenge current conceptions of what makes good quality software. Most people believe that quality is proportional to cost, since this is a fair assumption in the other products we encounter. Marketting efforts on the part of software sellers reinforce this belief. Certainly, commercial software is often more flashy, and is superficially slick. These assumptions cause decision makers to consistently choose poor quality software, until the point where they begin to accept that buggy software is the norm, rather than the exception.
This paper challenges the 'cost=quality' assumption, and makes the argument that free software in particular, and open source software in general, is of higher quality than commercial software.
When comparing the generalized quality of any given software, it is useful to look at the motivation of the software authors. Motivation does not determine quality, but it strongly affects quality, and helps you determine your level of trust in the software provider. The motivation for writing any software is a function self interest.
Free software is almost uniformly written by someone whose motivation is to produce software that s/he needs. Eric Raymond calls this "scratching the itch", but it can be any number of motivations: a business need (profit), an academic interest in the problem itself, personal challenge, or general need for a software solution. Academic interest aside, motivations break down into two primary categories: Profit, and Need.
Need is the motivation that drives most free and open source software. Need arises from a problem which the software author can't find an existing acceptable solution for. This form of self interest promotes good software, since it is the software itself which is of interest to the author; the software is the end, not the means to an end. We can trust that the author will be primarily concerned with how well the software works and that it solves the problem adequately.
Commercial software is motivated by the desire for profits; financial reward is the end, and the software is only a means to that end. While sometimes good quality helps achieve that goal, it is by no means the most efficient way of attaining maximum profit. As history shows, the most efficient way of generating revenues is by having good marketing -- it isn't the best product that always win. As examples, consider VHS and Microsoft. BetaMax was a higher quality format than VHS, but it wasn't as successful. NeXTSTEP was an operating system that was superior in reliability and usability than any competing OS at the time, but it failed due to poor marketing. Windows' dominance of the desktop is in spite of its quality, rather than because of its quality. In fact, built-in obsolescence and built-in bugs are well known mechanisms for guaranteeing repeat customers; if you can lock your customer into your product, they have little choice but to upgrade, and continuously purchase new product from you. Microsoft has been very successful in employing this tactic.
Software development is an exercise in resource management, as in any other endeavor. In fact, software development has the curious distinction of being the sort of thing that doesn't improve when more manpower is added. As a result, there tends to be an upper bound at which throwing more manpower at the problem will have increasingly smaller benefit, and the time requirement for production of software has a lower bound beyond which no amount of resource addition will help to decrease the time requirement. As a result, in developing software on a deadline, certain trade-offs must be made: some features dropped so that other features may be included. When we consider that quality is a feature, it becomes apparent that, given limited resources of time, manpower, and budget, software can generally have either a large number of "bells and whistles", or good quality.
Bells and whistles are not the same thing as usability. In fact, developers will tend to produce better software if they have to use that software themselves, and they have any choice in the matter. Bells and whistles, on the other hand, generally don't add much to the core competency of the software; chrome bumpers look nice, but they don't help the car drive any better.
The difference in fundamental motivation is important at this point, because the motivation determines what kind of software is written. Software that is written because of Profit motivation will tend to be strong on flash and superficial appearance, at the expense of stability, reliability, and/or security. When resources are limited, effort will be put into features which sell the product. Software written because of Need motivation will tend to be high on functional quality, at the expense of the bells and whistles.
Quality control from the end user's perspective is also affected by the motivation of the software supplier. Debugging software is hard work, and users can find far more bugs than developers can. Users provide valuable feedback on usability and reliability of software, and at no cost to the developer.
Open software relies on this, and leverages the user base. The unspoken agreement between the developers and the users is: I'm providing you with free software; you're providing me with feedback and bug reports. The bug reports make the developer's job much easier. Free software developers have a vested interest in exposing as many problems in their software to the users, so they can concentrate on fixing the bugs and making the software more reliable -- which directly benefits the developer.
Commercial software developers have a vested interest in withholding information about software deficiencies from the buyer. The motivation is profit, and when the customer is paying for software, they take bugs in the software more personally. Therefore, hiding the existence bugs is good business for software sellers, but bad for the customers. Free software often comes with warnings which help the user avoid the worst disasters; the implicit agreement between commercial software developers and customers is that the software is bug-free, and disasters take the customers unawares.
Commercial software products tend to believe that strength lies in hiding the source code from the customers, as a way of protecting intellectual property. This is critical to generating the most profit by hindering competition and plagiarism.
Free software developers, on the other hand, often have many reasons for exposing their source code. Pride, exposure, and user-contributed bug fixes are some of the motivations for releasing source code. What this ultimately means for the user is more control over the software product. With the source code, you can continue development if the software provider stops production, or if you need some special functionality that the original software does not have. Source code is end user power, even if the majority never make use of it. If a company goes under and takes their software with them, the customer is often out of luck. If an open source software developer disappears, the user can always hire someone to maintain the source code of the product if they need to.
The arguments for the merits of free software are based on different assumptions about human nature than those that communism makes. For communism to be successful, human nature must be basically altruistic, or at least far-sighted enough to be able to see that contributions made by the individual help the whole, which in turn helps the individual. The arguments for open software do not require that humans be fundamentally altruistic, but rather that they be fundamentally selfish. Free software works best when self-interest is a prime motivator in human behavior. Free software is good software because the developers can see immediate, noticeable benefit to themselves. This doesn't preclude altruism; on the contrary. Self interest and altruism can and do augment each other. However, free software authors are primarily writing software for themselves, not for others, and we can expect that they're going to want, and therefore develop, good software.
None of this implies that programmer's shouldn't get paid for software, or that all free software is better than commercial software, or that commercial software can't be good. Free software developers can still profit from their work by contracting out support and specialization of their software. In this case, the software developer again has a motivation to produce quality software.
When companies develop software for internal use, the factors that drive the development are different than those that drive software written solely for commercial sale. In the case of internal development, the company is the developer, and the same Need motivation for quality software is present. Furthermore, internally developed software can be turned into a commercial product, in which case the original motivations apply. This, too, tends to be good software, but the assessment of quality should be made in spite of the cost, rather than because of it.
The most efficient way of generating revenues is by having good marketing, not through having good product. Good product can be leveraged in marketing, but the marketing itself in not dependent on the product. In fact, the majority of commercial products are sold -- to management, at the very least -- before any development on the product has begun at all. Commercial software focuses on product-selling, superficial flash, whereas free software focuses on functionality.
Open source software, and more generally, free software, therefore has an advantage in quality over commercial software. The focus of the free software developer is good product; the focus of the commercial developer is generating the most profit. Free software developers have no reason to hide software defects from end users, while commercial developers have every reason. Finally, open source software developers provide the source code to the software.
Which software would you trust more?