In practice, a typical open-source project uses a web or other Internet site as the repository for the source code, documentation, discussions, design documents, bug and issue lists, and other artifacts associated with the project. A particular person or group is the copyright owner for the source, at least initially, and this owner grants permission for individuals or other groups to make modifications to the source mediated through a version control system such as CVS (Concurrent Versions System). Periodic builds are automatically produced, and there are usually several versions of varying stability and age compiled and prebuilt for a number of platforms that anyone can download and try out.
Although the owners of the source essentially have total control of the project, they generally will enlist the advice of the community about its direction. Sometimes contributors retain copyright of their own contributions while licensing them under the same or compatible license, and other times the contributors assign copyright to the owners of the project.
Ownership versus licensing is an important distinction to grasp. Even when rights are broadly granted through a license with considerable freedom about what an outside party can do with the source, the source code is still owned by the copyright holders who can do whatever they wish with it, including selling it, granting other licenses to it, or changing the direction of its development.
Often a project will be broken into modules, which can be thought of as logical or conceptual wholes, and a module owner is assigned to each. The module owner is in charge of inspecting proposed source changes and deciding whether to accept them or not. The module owner can also grant check-in privileges to developers who have earned his or her trust so that they can also modify the official source code. In many open-source projects, the overall owner and the module owners are the primary contributors while others contribute a small percentage of the work. In general, debugging through use is the significant source of contributions from the larger community.
Some open-source projects, especially those whose source is owned by companies, establish a governance mechanism that ensures that the community has a recognized voice in decision making, which in turn makes the playing field more level than it otherwise might be.
In 1984, Richard Stallman formed the Free Software Foundation1 and started the GNU project (GNU is an acronym for "GNU's Not Unix"). He did so in response to seeing the collapse of the software-sharing community at the MIT AI Lab as everyone left to join companies making proprietary software. Stallman coined the term free software to express his philosophy that programmers should be allowed access to the source code so they could modify it to suit their needs. He developed the GNU General Public License (GPL) to assure that he would always be able to see and modify the source code for any software he wrote, along with the modifications made by anyone else who might work on it. A number of important Unix tools and utilities have been developed as part of the GNU project, including the GNU GCC compiler and GNU Emacs.
In 1989 the University of California at Berkeley released its networking code and supporting utilities as Networking Release 1, the first freely redistributable Berkeley Software Distribution (BSD). This was followed in 1991 with Networking Release 2, which contained almost all the source code for BSD Unix (all but six files were included).
In 1991 Linus Torvalds started work on the Linux kernel under the GNU GPL and around 1992 combined it with the not-quite-complete GNU system to produce a complete free operating system. In 1995 Red Hat Software was formed to sell CD-ROMs and to offer support and services for the users of Red Hat Linux.
In 1995 a group of webmasters created the Apache project, based on the NCSA web server. Apache 1.0 was released later that year. According to the February 2004 Netcraft web-server survey, the Apache web server is more widely used than all other web servers combined and currently has over 67% of the web-server market.
In 1998 Netscape announced they would release the source code to their Navigator browser and 3 months later did so. Partly in response to the Netscape announcement, a group of leaders in the free software community, including Sam Ockman, John "maddog" Hall, Eric Raymond, and Larry Augustin, met to discuss how to better market the ideas of free software. They decided to use the term open source and, working with others, created the Open Source Definition,2 which is based on the Debian Free Software Guidelines written by Bruce Perens for the Debian Linux distribution. They created an organization, the Open Source Initiative, to further the ideas of open source and to certify licenses as being true open source. There is a continuing tension between those who support free software and those who favor open source due to different philosophical outlooks.
More details on the history of open source are available online and in such books as Open Sources: Voices from the Open Source Revolution edited by Chris DiBona, Sam Ockman, and Mark Stone or Rebel Code: Inside Linux and the Open Source Revolution by Glyn Moody.
In pure open-source projects, all the workers are volunteers. There are rarely if ever formal processes that are followed or formal specifications produced. The team may or may not have usability experts, documentation writers, testers, or project management of any variety. In some circles, this form of open source is called "all-volunteer open source." Basically, whoever shows up is the team.
When companies start open-source projects, it is typical for those projects to be part of (or all of) a company initiative being done for strategic purposes and aims. Because many companies use a more traditional or conventional development process, such companies starting open-source projects are likely to want to engage the open-source community with some of their traditional tools and in-house experts. When this happens, we call it a "hybrid open-source project."
For example, GE started its Visualization Toolkit open-source project,3 but they wanted to establish a strong cultural value around testing and quality. Based on some ideas from Extreme Programming, they instituted a distributed, automatic testing system that kicks in every night on the changes submitted to the project that day.
Another example is NetBeans where from the beginning Sun assigned human-computer interaction (HCI) experts, documentation writers, product managers, release engineers, and quality assurance people to work on it. These folks were trained in what open-source development was like and the ways that they would need to adapt, but nevertheless these other functions and some of the ways they normally operated within Sun were carried over into the project.