Who Uses Open Source?
The short answer is "everyone." If you've searched with Google, purchased books from Amazon, or placed a call with MCI, you've used open source. Each of these organizations uses open source as part of its core computing infrastructure.
Open source is used by a number of major corporations.
The somewhat longer answer is that many organizations currently use, are actively experimenting with, or are thinking about using open source. To date, users of open source have mostly been early adopters; pragmatic IT organizations are now beginning to consider open source, mostly for the reasons outlined earlier. A detailed discussion of how these early adopters and pragmatic organizations use IT is contained in Chapter 4, "The Open Source Maturity Model."
Many other corporations are actively experimenting with open source.
The even longer answer is that open source is used by the product's user community. This might seem redundant, but the term community (or user community) is one you will hear repeatedly in discussions about open source. One of the key differences between commercial software and open source is captured in this phrase. To understand it, you need to consider the relationship between developer and user.
An open source product's user group is usually called its community.
With commercial software, there is practically no interaction between software developers and the people who actually use the product. Most companies seek to shield their developers from users to enable them to focus full time on banging out the code needed for the next release.
Commercial software developers are not usually accessible to the product community.
In contrast, on open source projects, there is a great deal of interaction between developers and product users. In fact, one might say that there is a very intense relationship among all individuals involved with the productwhether developers or users. E-mails fly back and forth among the development team and product users. Feedback is sought and freely given. Without romanticizing community, it's critical to understand it and recognize how you can interact with it and take advantage of it. It's worth a discussion about community to see how it impacts how you will use open source. The place to begin community lies with the development team and how they work. After that, we can explore how the user community affects and is affected by open source.
Open source developers are usually highly involved with the product community.
Open Source: Two Case Studies
Many people believe that open source software is not used in mission-critical production applications. Here are two examples of companies that rely on open source to run their mission-critical applications.
Charles Schwab runs a very large Web site that allows customers to buy and sell financial instruments, check the status of their accounts, and research potential investment opportunities. Traffic to the site varies enormously, depending on what is happening in the stock market on any given day. In the past, maintaining sufficient reserve computing capacity was difficult because of the high cost of the hardware. Over the past year, Schwab has been trading out proprietary UNIX boxes for inexpensive Intel-based machines running Linux. Geoff Penney, Schwab's chief information officer (CIO), states that the company had saved hundreds of thousands of dollars bringing in less-expensive machines. Moreover, it had also increased its ability to respond to traffic spikes, because it was now able to afford to have reserve capacity available.
Sabre Holdings is a global travel company that operates the largest airline reservation system in the world. This system is so complex that its original mainframe systems ran an operating system written specifically for their applicationthe standard operating system couldn't handle the transaction load. Today Sabre not only operates this reservation system, but also offers software and services to travel organizations and airlines throughout the world. To reduce its operations costs, the company extensively uses open source software. Today, its core applications still reside on legacy systems, but they are surrounded by Linux-based servers using the open source database MySQL for storage, and communicate via the open source TAO object request broker. The services themselves are offered as Simple Object Access Protocol (SOAP)-based Web services that are constructed with open source software.
These applications perform hundreds of thousands of transactions each day, all of which execute on open source software systems. Sabre estimates that it has saved millions of dollars using open source software to enable external access to its core applications; in fact, because the airline industry has such thin margins, these applications would not have been economically feasible if the company used commercial software.
Created by Volunteers, Not Employees
Open source developers are typically IT professionals who donate their work on a voluntary basis (this is not universally true, as will be discussed in Chapter 2, "Open Source Business Models." By and large, however, most participants in an open source product are there by choice on an unpaid basis. In contrast, commercial software is written by paid employees.
Open source software is usually developed by volunteers.
The fact that open source is written by volunteers affects how open source product teams form and work. Because individuals participate based on their interest in the product, open source management practices are very different from those in commercial software companies.
The voluntary involvement of developers affects open source management practices.
Anyone who has worked in a voluntary organization will recognize the key differences between the two types of organizations. People volunteer for personal reasons, so getting individuals to work on something that doesn't interest them is fruitless. They won't do itthey just drift away. Volunteers must be emotionally engaged to work on a task and "managing" a volunteer is chiefly an exercise in figuring out a good way to motivate him or her. The role of a manager in an open source project involves lots of emotional stroking and personal interaction, which takes time and forfeits urgency. It can all seem very touchy-feely: There is no such thing as a well-disciplined voluntary organization.
Open source management practices require very different techniques.
On the other hand, one might argue that the motivation of paid employees is less than complete. Just because an employer offers a paycheck doesn't mean that an employee is strongly motivated. Employees can accept their pay but disdain their tasks. Anyone who has spent time as a manager knows that some employees find it impossible to be enthusiastic about their work. If they're not enthusiastic, they deliver minimal effort. They might actually deliberately hinder their team's progress if they're unhappy enough. Therefore, it's important not to overstate the power that an employer has because it supports its employees' living standards.
Paid employees might not be as committed as one might think.
There are tremendous benefits to having volunteers write open source software, however. Volunteers bring real passion to what they do. Again, anyone who has worked in a voluntary organization has seen the tremendous effort expended by participants. The inefficiencies in managing open source projects are balanced by the enthusiasm the engineers bring to the tasks they select. Great products are achieved by passion; it might not be missing in software written for pay, but it surely cannot be missing in software written for free.
Volunteers' passionate commitment can lead to great products.
Because they are voluntary groups, open source development teams work together in a decentralized fashion with little hierarchy. The project leader is usually the individual who originated the project; he or she must manage by consensus with a "lead by example" approach. The project leader is responsible for developing a common understanding of what functionality the upcoming product release will contain, encouraging new developers to join the project, helping developers select a portion of the project to work on, and arbitrating any conflicts that arise between team members.
Open source development teams work in a highly decentralized, consensus fashion.
In summary, egalitarian groups working together as volunteers create open source products. These groups operate with all the glories and frustrations that accompany any voluntary organization.
Open source projects tend to make early releases available for use by the user community and quickly refresh the releases as the product is modified. It's not unusual for new versions of a product under development to be released every few days. This practice is described as "release early and often." The open source community believes that this practice leads to higher-quality products.
Open source projects "release early and often."
The reasons for this belief are straightforward. Developers create and test code based on their assumptions about how it will be used. However, actual users use (and misuse) the product in ways that no developer could possibly have imagined. This use or misuse exercises unexpected code paths and stresses the code in unforeseen ways. By making the product widely available, a large pool of users quickly performs this product exercising and more quickly improves the product's quality.
"Release early and often" results in higher product quality.
Because the source code for the product is available, a second factor comes into play. As the epigram "two heads are better than one" illustrates, additional perspectives about problems lead to better solutions. As many of the people using (or misusing) the product access the source code to create fixes that they then submit to the core development team, the overall solution created as a blend of the different fixes will be of higher quality than any one fix possibly could be. Certainly the use of a large pool of developers beyond the central team enables a broader perspective to be brought to bear on the source code. The benefit of having many people working on the source code is summarized in the open source shibboleth "many eyes make all bugs shallow." A side benefit of having many people looking at the source is that the code is reviewed for adherence to coding standards; fragile or inflexible code can also be improved as a result of these reviews. Generally speaking, code reviews are considered to be a very positive quality practice in software engineering.
Source code availability means that bug fixes are higher quality.
A third factor that affects open source development practices is that large numbers of real users work with the product and offer feedback directly to the development team. This feedback enables the team to learn what features the product really needs to include to be more useful. By contrast, commercial product companies often suffer from what is known as feature creep, focusing on delivering more features in a race to outshine competitors rather than on what product users really need. There is no pithy catchphrase to express this open source practice, but the direct involvement of end users is believed to lead to more useful products.
Direct user feedback ensures that the product implements critical functionality.
A Philosophy of Community
The practice of frequent releases to gather user feedback highlights one of the most important aspects of the open source world: the community. The size and activity level of the community carries significant implications for organizations considering a product. Community pervades discussions of open source, and is discussed throughout this book. More particularly, the size and activity level of the community directly affects the maturity of the product. This book extensively addresses all the ways that the user community impacts the maturity of an open source product, and how you or your organization can use the user community to assess the product's maturity.
One of the most important aspects of open source is the community.
What is an open source community? It is all the product developers, any users who are interested in participating, and any other individuals who care to be involved with a product. Essentially, it is a freewheeling organization of everyone who is interested in a particular product for whatever reason. There are no formal requirements for joining and no formal rules for participation.
A product community is open to any interested participant.
However, lack of formality does not mean that there are no standards for participation or behavior. Very strong unwritten rules govern all community interactions. A community member is expected to interact respectfully, make reasoned arguments about why a particular course of action is right, and, above all, to contribute to as well as take advantage of the community.
Easy participation does not imply lack of behavioral standards.
Open source product communities are very powerful and offer tremendous benefits:
As described earlier, the interaction between developers and users makes for a more useful product. The product is better for having more people determining its direction and improving its stability via usage.
The community offers a real resource to draw on for expertise in the product. It is very common for members of the community to help one another figure out problems or to suggest potential solutions for product usage.
There are some drawbacks, however:
Because of the need for consensus and the large community size, the pace of work and decision making can seem very slow. There really isn't any way around this, but it usually doesn't cause an enormous problem. In any case, if you feel strongly about something, there is always source access to more quickly make changes that you feel are time sensitive.
Despite the strong informal rules of participation, immature behavior sometimes (rarely, really) occurs. This can take the form of namecalling, but the more common form is one-upmanship based on technical opinionthe "it is obvious to anyone who really understands how objects interact that it should . . ." sort of thing.
Occasionally, the community will engage in protracted discussions about off-topic subjects. Depending on your temperament, these discussions might be charming, mildly distracting, or irritatingly time wasting. I tend to the latter point of view, but have learned to grit my teeth because of the community benefits.
One unique aspect of an open source community is that it is essentially anonymous and extremely decentralized. Nearly all interaction is done via e-mail and Web forums. It is common for members of the development team to have never met, but to have worked together quite closely to create a high-quality product. Many members of a product community will cooperate to solve a problem successfully, all while being scattered literally around the world.
The community is anonymous and extremely decentralized.
Can Community Work?
Many IT managers are initially reluctant to use a product that relies so heavily on an informal community organization. They feel open source communities that lack hierarchical leadership and a formal governance structure must be inefficient and chaotic. It's easy to understand this reaction, because so much of corporate and governmental life revolves around hierarchies and formal rules of behavior.
Many IT managers question whether a community-based product can be successful.
At bottom, this reaction is based on a fear that community means no one is truly responsible for the productthat there is no one to turn to about a specific problem or an urgent need. There is a comforting sense that a commercial provider offers a responsible point of contact, sometimes charmingly referred to as "one throat to choke." On the other hand, having a commercial provider standing behind a product is no guarantee of responsible behavior. The software industry has witnessed many instances of companies abruptly declaring products "no longer supported" or defining them as having reached their "end of life plan." Another perspective on "one throat to choke" is "single point of failure," which is usually considered a bad thing.
Commercial practices are no guarantee of success, however.
However, there is a precedent for a technology successfully delivered by an informally structured organization. It is one that every reader of this book likely uses each day: the Internet. Despite its lack of formal hierarchy, use of the informal request for comment (RFC) standards mechanism, and reliance on personal reputation for leadership, the Internet has succeeded brilliantly. It is unlikely that a single commercial entity could have created what this informal organization has brought about. Many observers even argue that the lack of formal structure and regulations for the Internet have enabled it to evolve more quickly and be more useful than would otherwise have been possible.
The Internet itself is an example of a community-based success.
Many discussions about open source denigrate the commercial software world and describe open source methods as far superior and perhaps even better morally. The informal community is portrayed as delivering much better products that will eventually send commercial software to its deserved burial in the elephant's graveyard. My own view is that there are many powerful benefits available from using open source and the community is one of those benefits. I don't believe that commercial software is going to disappear by any means; however, I do believe that open source software will become an important part of every IT organization's infrastructure and that taking advantage of the community is vital to success with open source. Open source succeeds brilliantly at delivering software, and the community is an important part of that success.
Community is one of the benefits of open source software.