Open source refers to projects that are open to the public and which draw on other projects that are freely available to the general public. Openness, open content, and communal are other related topics. This article deals mostly with computer software.
Open source or open-source software (OSS) is any computer software distributed under a license which allows users to change and/or share the software freely. Many programs use a specific license agreement satisfying the Open Source Definition. When used as an adjective, the term is hyphenated, e.g. "Apache is open-source software"; used as a noun, there is no hyphen.
Open-source software is required to have its source code freely available; end-users have the right to modify and redistribute the software, as well as the right to package and sell the software. Software with source code in the public domain meets these criteria, as does any software distributed under the popular GNU General Public License (GPL). Open-source licenses may have additional restrictions, such as a requirement to preserve the authors' names and copyright statement in the code.
The term open source in common usage may refer to any software with publicly available source code, though this usage is discouraged by many. Examples of such non-OSF open source software include some versions of Solaris and PGP. There are also shared source licenses which have some similarities with open source, but a number of critical differences make such licenses incompatible with the Open Source Definition.
Despite apparent similarities, 'open-source software' is distinct from free software. The Free Software Foundation's (FSF) free software definition is more restrictive than the Open Source Definition; as a consequence of this, free software is open source, but open-source software may or may not be "free". In practice, nearly all open-source licenses also satisfy the FSF's free software definition, and the difference is more a matter of philosophical emphasis. (One exception is an early version of the Apple Public Source License, which was considered open-source but not free, because it did not allow private modified versions; this restriction was later removed.) Software distributed under both the GPL and BSD licenses is considered both free and open-source.
The decision to adopt the term "open source", suggested by Christine Peterson of the Foresight Institute, was based partly on the confusion caused by the dual meaning of the word "free"; the FSF intended the word to mean "free as in free speech", not "free as in free beer", but nevertheless, free software came to be associated with zero cost, a problem which was exacerbated by the fact that a great deal of it is, in fact, free of charge. It was hoped that the usage of the newer term "open source" would eliminate such ambiguity, particularly for users who might mistakenly associate "free software" with anti-commercialism. Since its introduction, however, the "open source" label has been criticized for fostering an ambiguity of a different kind: that of confusing it for mere availability of the source, rather than the freedom to use, modify, and redistribute it.
For additional comparison, see open source movement and free software movement.
Main Article Open source movement
The open source movement is a large movement of programmers and other computer users that advocates unrestricted access to the source code of software. It grew out of licenses such as BSD, the ubiquitous access to Unix source code at universities and goals which differ somewhat from those of the Free software movement. The line between the two is somewhat blurry; both are founded in the hacker culture. Mostly, the Free software movement is based upon political and philosophical ideals, while open source proponents tend to focus on more pragmatic arguments. Openness is a term that has evolved now to refer to projects that are open to anyone and everyone to contribute to, before and/or after the actual programming. Both groups assert that this more open style of licensing allows for a superior software development process, and therefore that pursuing it is in line with rational self-interest. Free software advocates, however, would argue that "freedom" is a paramount merit that one should prefer (or at least weigh heavily) even in cases where proprietary software has some superior technical features.
Proponents of the open source development methodology claim that it is superior in a number of ways to the closed source method (and some individuals may suggest that the open source methodology is the methodology that is able to produce the quality of software that can be higher than that produced by any other methodology or technique). Stability, reliability, and security are frequently cited as reasons to support open source. One successful application of the open source model is the Linux operating system, which is renowned for its stability and security characteristics. Among the works that explore and justify open source development is a series of works by Eric S. Raymond which includes The Cathedral and the Bazaar and Homesteading the Noosphere.
Open source advocates point out that as of the early 2000s, at least 90 percent of computer programmers are employed not to produce software for direct sale, but rather to design and customize software for other purposes, such as in-house applications. According to advocates, this statistic implies that the value of software lies primarily in its usefulness to the developer or developing organization, rather than in its potential sale value, and that consequently there is usually no compelling economic reason to keep source code secret from competitors. Open-source advocates further argue that corporations frequently over-protect software in ways actually damaging to their own interests, for reasons ranging from mere institutional habit through reflexive territoriality to a rational but incorrect evaluation of the tradeoffs between collecting secrecy rent and the quality and market payoff of openness.
The 2001 film Antitrust, portrayed the struggle of a small-time group of open-source programmers against a large Microsoft-like closed-source corporation.
(See also Open source culture, Free Culture, Open Content, Open source politics)
The open source vs. closed source (alternatively called proprietary development) debate is sometimes heated.
The most obvious complaint against open-source software involves the complaint that making money through some traditional methods, such as the sale of the use of individual copies and patent royalty payments, is much more difficult and sometimes impractical with open-source software. Some software development companies sell licenses to use individual copies of software as their primary source of income, using a combination of copyright, patent, trademark, and trade secret laws (collectively called intellectual property rights laws). By keeping source code hidden, they usually make it impractical to make changes to a program they develop, and demand fees for its use and improvement. Although most software is written for internal use, fees from sale and licensing of commercial software are the primary source of income for companies which sell software.
Additionally, some companies with large research and development teams develop extensive patent portfolios, with the purpose of making money from patent royalties. These companies can charge licensing fees for the use of their patents in software, however open source distribution creates the potential for an infinite number of derived works using the patented technology without payment to the patent holder.
This complaint is countered by a large number of alternative funding streams, which are actually better-connected to the real costs of creating and maintaining software. After all, the cost of making a copy of a software program is essentially zero, so per-use fees are perhaps unreasonable. At one time, open-source software development was almost entirely volunteer-driven, and although this is true for many small projects, many alternative funding streams have been identified and employed for open source software:
- give away the program and charge for installation and support (used by many Linux distributions).
- "commoditize complements": make a product cheaper so that people are more likely to purchase a related product or service you do sell (this is a primary reason for OpenOffice.org; Sun gives away the office suite to encourage users to buy their computer hardware).
- cost avoidance / cost sharing: many developers need a product, so it makes sense to share development costs. (this is the genesis of the X Window system and Apache).
Increasingly open-source software is developed by commercial organizations. In 2004, Andrew Morton noted that 37,000 of the 38,000 recent patches in the Linux kernel were created by developers directly paid to develop the Linux kernel. Many projects, such as the X Window system and Apache, have had commercial development as a primary source of improvements since their inception, and this trend has accelerated over time.
One argument against open-source software is that closed-source development allows more control over the final product, though this argument does little to support its assertion. The theory behind this argument is that open-source software is primarily a volunteer effort, while closed-source development is typically a salary-driven effort. By having monetary resources to fund developers and management, and the ability to control development in a given direction, closed-source proponents argue that development can be more efficient and more focused. But this argument misses many key points.
- OSS may be, and is increasingly, supported by financial backing.
- Project control is independent of its source code status.
An entirely external project may ignore an organization's needs. However, an organization can devote resources to ensure its needs are met. At the extreme end, an organization could "fork" an open source development project and add the critical components it needs. Ultimately, Open-source software offers greater flexibility to end-users because any end user can take the program and modify it for their needs.
Large scale open-source projects such as Linux, FreeBSD, or Apache tend to discredit this argument. However, even within these very successful projects, there are sometimes technological components missing due to the fact that no one has the time or effort to volunteer to do them, nor a commercial company whose interests cause it to fund such work. Of course, this also applies to proprietary products; proprietary products also omit technological components because the expected return is less than other alternatives, even if they are important to a particular customer. It is also worth mentioning that most of the venture capital money is not going to open source companies today. Instead, many open source projects are either legacy code like FreeBSD or Apache which were developed a long time ago independently of the open source movement, or companies like Netscape which donate its source code to open source with the hope that they can compete better, or companies like MySQL which use open source to lure customers for its more expensive licensed product. This argument is weakened by the fact that most of these projects have seen major or even complete (in the case of the Netscape code, for example) rewrites and don't contain much of the original code.
Open source is a term that is applied to the entire concept that the creation and organization of knowledge is best created through open and cooperative efforts, this movement, variously called "Open Content" or "Free Culture", has been expressly endorsed by advocates of OSS, including Linus Torvalds who said "The Future is Open Source Everything".
Open source advocates usually believe that open source programs are more secure, mostly because flaws in the code can be seen and fixed by anyone. Different studies reach different conclusions about security through obscurity versus open source, with closed source programs having fewer advisories, but open source software usually having shorter times between discovery and a patch or a fix. Closed source advocates, including Microsoft corporation, argue that since no one is responsible for open source, there is no way to know whether it has been fixed. Open Source advocates argue back that no one knows what bugs exist in a closed source product, since there is no one checking claims made by its vendor.
Some proponents of proprietary or closed source software believe that open source software is more susceptible to security problems due to the availability of its source code. They also believe that the main factor which causes exploitation of proprietary software such as Microsoft Internet Explorer is its large market share, making it an attractive target for attackers. In response, proponents of open source software may believe that the availability of open source code leads to faster discovery of security issues, and faster resolution of these issues. This approach is also used in cryptography: it is believed that a secure encryption scheme has to be able to withstand attacks from people who have access to the code, and that security through obscurity is not a good thing. Though, cryptography and software development are very much different things. Opening up the source code may in fact hurt the security significantly. For example, many open source web programs using php have serious security problems and although these problems are being fixed, they are only fixed when affected end users prompt the developers about the problem.
Influence on other fields
The open source movement has been the inspiration for increased transparency and liberty in other fields. One example, is the release of biotechnology research by CAMBIA.
Open source software development model
In his 1997 essay The Cathedral and the Bazaar [RAY2000], Eric Raymond suggest a model for developing OSS know as the Bazaar model. In the essay Eric Raymond likened the development traditional software methodologies to building a cathedral, "fully crafted by individual wizards or small bands of mages working in splendid isolation" [RAY2000]. 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 with people dedicated to designing (the architects), people responsible for managing the project and another responsible for implementation. It can clearly be seen that traditional software engineering follows these dogmas. F.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 or a system, the system design should be done by as few architects as possible.
The Bazaar model however is different. In the Bazaar model however roles are not clearly defined. Gregorio Robles [ROB2004] suggest 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 increasing the rate at which the software evolves. Linusí 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 further more each user's machine provides on new 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 as to increase ones 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 project have nightly builds where integration is done automatically on a daily bases.
- 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 bugs. The buggy version is for users who want the advantage of having the latest features. The users can then act as co-developers, reporting bugs and providing bug fixes. This version is the development version. The stable version offers the users less bugs or less features.
- High Modularization. The general structure of the software should be modular allowing for parallel development.
- Dynamic decision making structure. There is need for a decision making structure, whether formal or informal, that make strategic decisions depending on changing user requirements and other factors.
Most well know OSS products follows the Bazaar model as suggested the Eric Raymond. These include projects such as Linux, Netscape, Apache, GNU compilers and Perl to mention a few. SourceForge, which maintains that it is the largest repository of Open Source code and applications available on the Internet, had 87554 Open Source projects as of writing. These projects are all undertaken based on the Bazaar model.
Participants in OSS development projects
The participants of an OSS project fall broadly into two categories. There are the Core and the Peripheral.
The Core or Inner Circle are those developer who modify codes that constitute the project.
The Peripheral are usually made up of users who use the software. They report bugs, and suggest fixes.
The participants may then be further divided into the following.
- Project leaders who have the overall responsibility (Core). Most of them might have been involved in coding the first release of the software. They control the overall direction of individual projects.
- Volunteer developers (Core / Periphery) who do actual coding for the project. These include:
- Senior members with broader overall authority
- Peripheral developers producing and submitting code fixes
- Occasional contributors
- Maintainers who maintain different aspects of the project
- Everyday users who perform testing, identify bugs, deliver bug reports, etc. (Periphery)
- Posters (Periphery) who participate frequently in newsgroups and discussions, but do not do any coding.
Open source software development tools
There are several types tools used to aid the activities performed in Open Source Software projects. These tools include the following;
Source code collaboration tools
In OSS development the participants, who are mostly volunteers, are distributed amongst different geographic regions so there is need for tools to aid participants collaborate in the development of source code.
Concurrent Versioning System (CVS)
OSS projects use various tools to manage various versions of files and source codes. CVS is one such tool. CVS allows for the history of files to be stored so that one can go back to a previous version of a file and retrieve it. CVS does this not by saving each version of a file but by saving the differences between the various versions.
CVS also helps manage the files and codes of a project when several people are working on the project as the same time. CVS can allow several people to work on the same file at the same time. This is done by moving the file into the usersí directories and then merging the files when the users are done.
Since OSS projects undergo frequent integration tools that help automate testing during system integration are used. One such tool in Tinderbox (software).
Tinderbox enables participants in an OSS project to detect error during system integration. Tinderbox runs a continuous build process and informs users about the parts of codes that have issues and on which platform. It also identifies the author of the offending code. The author is then held responsible for ensuring that error is resolved.
Bug/Error/Defect tracking tools
Bug tracking is a very important aspect of OSS projects. Bug tracking includes the following tasks. It involves keeping a record of all reported bugs, whether the bug has been fixed or not, which version of the software does the bug belong to, and whether the bug submitter has agreed that the bug has been fixed (squashed). Popular bug tracking systems include Bugzilla and GNATS .
GNU GNATS is a set of tools for tracking bugs reported by users to a central site. It allows problem report management and communication with users via various means. GNATS stores all the information about problem reports in its databases and provides tools for querying, editing, and maintenance of the databases.
Bugzilla is a "Defect Tracking System" or "Bug-Tracking System". It allows individual or groups of developers to keep track and manage outstanding bugs in their product effectively.
Since the participants in an OSS development project are dispersed, there is a need for tools to aid in organizing communication between project participants. This is accomplished with the aid of websites (SourceForge.net, freshmeat.net), mailing lists (mailman) and instant messengers.
The above mentioned Open Source Software development tools are an essential and integral part of the Open Source Software development model.
- Bruce Perens, Eric Raymond, Linus Torvalds, Paul Vixie, Alan Cox, Tim O'Reilly, Brian Behlendorf
Richard Stallman is a central figure in the similar free software movement, which has a different philosophical basis; Stallman does not want his name associated with the term open source.
Comparison of free software with open source software
While on a practical level Open Source Software and Free Software usually share the same licenses, according to the FSF, the Open Source movement is philosophically distinct from the free software movement. It began in 1998 with a group of people, notably Eric S. Raymond and Bruce Perens, who formed the Open Source Initiative (OSI). They sought to (1) bring a higher profile to the practical benefits of sharing software source code, and (2) to interest major software houses and other high-tech industry companies in the concept. These advocates see the term open source as avoiding the ambiguity of the English word "free" in free software. The term "open source" was coined by Christine Peterson of the Foresight Institute think tank. It was attempted to register this as a service mark for Free Software products, that attempt failed. Years later, the OSI finally obtained the trade mark on "OSI Certified".
Many people recognize a qualitative benefit to the software development process when a program's source code can be used, modified and redistributed by developers. (See also The Cathedral and the Bazaar.) The free software movement emphasizes the moral and ethical aspects of software, seeing technical excellence as a desirable by-product of its ethical standard. The Open Source movement sees technical excellence as the primary goal, regarding source code sharing as a means to an end. As such, the FSF distances itself both from the Open Source movement and from the term "Open Source".
Since the OSI only approves free software licenses as complying with the OSD, most people interpret it as a distribution scheme, and freely interchange "open source" with "free software". Even though there are important philosophical differences between the two terms, particularly in terms of the motivations for developing and using such software, they seldom make any impact in the collaboration process.
While the term "Open Source" removes the ambiguity of Freedom versus Price, it introduces another: between programs that meet the Open Source Definition, giving users the freedom to improve upon them, and programs that simply have source available, possibly with heavy restrictions on the use of that source. Uninformed people might assume that any software that has source available is "open source" because they can tinker with it themselves. However, much of this software does not give its users the freedom to distribute their modifications, restricts commercial usage, or otherwise restricts users' rights. This is the case with Microsoft's "shared source" initiative, and to a lesser extent with the "license-free" software of Daniel J. Bernstein.
Prominent projects and organizations
- Apache Software Foundation, Debian, FreeBSD, Mozilla Foundation, NetBSD, OpenBSD, Linux, OpenOffice.org, Open Source Initiative, SourceForge, GNU, Open Source Development Labs
Examples of open source licenses
For a more extensive list, see Open source license.
Examples of open source software
- Apache HTTP Server, Linux, BSD, Mozilla, TeX, XFree86, GIMP, PHP, KDE, GNOME, OpenOffice.org, MySQL, PostgreSQL, Blender
For a more extensive list, see List of open-source software packages.