|
Open Source: A Way of Developing, Distributing, and Licensing Software
IntroductionSince the beginning of the software industry, nearly every software company in the world has followed the same business model: developed software by the company's own employees, closely held intellectual property, delivered software in binary format to clients, and licensed software to users to run on their own computers. Today, however, that model is being challenged by a new paradigm: open source. Developed and maintained by volunteers, distributed to users at no cost, and available in source code form, it is radically different from proprietary counterpart. Each of the new characteristics of the open source software forces organizations to develop new ways of thinking about how they procure, implement, test, and deploy software. Accessible without cost, open source software is distributed to users under licensing terms different from commercial software, and created under different conditions from commercial software. Open source software developers take responsibility for the quality of the software towards their user base. This responsibility demands a new model of software procurement, one where the organization is an active participant in creating the complete software, rather than a passive recipient of what the vendor delivers. The new model demands new working methods and practices. In this article, we present on the open source software, the open source community, and the development practices. We explore the various benefits and risks the open source model brings to development practices, and present on possible strategies to support open source in your organization.
Open Source versus FreewareIt is important to note that open source differs significantly from freeware. Freeware is software distributed without a fee, but without source code access. Freeware creators slightly restrict the intellectual property rights to the software and offer the software on a "as is" basis, in contrast to open source, which carries less restrictive licensing terms and allows users to modify the software product if they so desire. Freeware is often distributed on a "time-restricted/limited" basis, meaning it is free for use for a certain period. When that period is up, the software stops working. If the user wants to continue using the product, a licensing fee is necessary to disable the time restriction. An open source software is a software that has its source code available to its users. It can be downloaded from the specific project web sites and used or modified as desired, as long as its license requirements are observed. Zero-price softwareOpen source software is distributed at no cost. There is no charge for the source code and there are no licensing fees.A different licensing modelOpen source software, like any other software, is distributed under some kind of a license that controls the manner in which it can be used. However, open source licenses are less restrictive than licenses of proprietary software in terms of how the software can be used. Typical license conditions include contributing any source code changes back to the main source base and distributing source changes to any customers of the organization that modified the code. The specific conditions depend on the type of open source license that accompanies a given software. It is important to state that open source licenses are written with the aim of encouraging wide use, with very few restrictions placed on the use of the software. For a list of approved open source licensing, please visit http://www.opensource.org/licenses.Open source software developersOpen source developers come from different backgrounds. They are volunteers who donate their time to work on open source projects. The fact that open source software is written by volunteers affects how open source product teams form and work. Because individuals participate based on their interest in the software, open source management practices are also very different from those in commercial software companies.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 functionally the upcoming release will contain, encourage new developers to join the project, help developers select a portion of the project to work on, and solve any conflicts that arise between team members. The philosophy of communityThe practice of frequent releases in order to gather user feedback highlights one of the most important aspects of the open source world: the community. The open source community refers to groups of (self-appointed) contributors and users participating and organized into this community based on their field of interest. There are no formal requirements for joining and no formal rules for participation. However, lack of formality does not mean that there are no standards for participating 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 actions is right, and above all, to contribute as well as take advantage of the community.Development practicesOpen source projects tend to make a release available early to be used by the user community and then quickly update the releases as the software is modified. This practice is described as "release early and often." The open source community believes that this practice leads to higher-quality software because of peer review and the large base of users who are using (or misusing) the software, accessing the source code, reporting bugs, and creating fixes. A side benefit of having many people looking at the code is that the code is reviewed for adherence to coding standards; fragile or inflexible code can also be improved because of these reviews.
Open Source Advantages and RisksIn the following subsections, we will discuss briefly the advantages and risks of using open source components, and the resulting cultural changes from this model: Advantages of using open source componentsWe can have a long list of advantages. However, below, we identify four main advantages of using open source software in commercial products. These advantages are the following:
Risks of using open source componentsThe risks, from a comemrcial organization point of view, can include the following:
Cultural Changes and Open Source StrategiesWorking with open source and following the open source working methods will have some impact on the working methods and culture within your organization. Firstly, it will influence the traditional way of developing software by moving away from the "not invented here" syndrome, towards accepting a software that was developed outside your organization. Secondly, the Open Source community does not assume that the development is done in a single location. Using the same development tools as the open source community will also encourage your development group to work more closely together. There are many open source strategies that can be adopted and customized to your organization particular needs. Below, I list three major strategies that are very common.
ConclusionsThe open source software is shifting the software industry into a new paradigm, moving from developing code behind closed doors and delivering binaries to customer, to developing code that can be shared, modified and redistributed openly. Key goals that can be associated with this shift is reducing development cost and software components complexity, while increasing flexibility and using common enablers. Organizations that embrace the open source model and follow it when it influences positively their ways of building software, will increase their chances to retain their competitive advantage. Further Readings
|