4.2 CONCEPTS OF OPEN SOURCE SOFTWARE

Open Source Software is a computer software which is available along with the source code and software license that permits the code to be studied, modified and improved. It is often developed in public and collaborative manner. 

The free software philosophy formulated by Richard M. Stallman in 1983, historically preceded the open source movement by a decade and provided some of the key technological, legal and ideological foundations of the open source movement. 

The best-known philosophers of the free software movement besides Richard Stallman are Eric Raymond, Bruce Perens, and Eben Moglen. 

Open source development, follows the model of the bazaar. In an open source development model, roles are not clearly defined. The best features and functionality evolve into popular use much as good ideas evolve into popular use in the marketplace of ideas. Development is a collaborative process, resources are not scarce, and no one person or organization directs the project. The users are treated like co-developers and so they should have access to the source code of the software. 

The Open Source Initiative (OSI) was formed in 1998 with a mission to harmonize the workings of the free software movement and commercial software development. The purpose of the OSI was to ―build bridges among different constituencies in the open-source community.‖ 

The OSI is the organization responsible for certifying software licenses as open source licenses. Its website (www.opensource.org) gives a list of all the certified licenses in existence. OSI previously certified almost any license agreement that fit the open source definition. However, recently it announced a change in policy that requires any newly certified license agreement not only to fit the open source definition but also to be substantially different from existing certified licenses. This is a part of the ―nonproliferation‖ movement in open source.

4.2.1 Introduction

There are two competing definitions. The free software definition was authored by Richard Stallman and is more normative in nature. The open source software definition was authored by Eric Raymond and is more descriptive in nature. 

4.2.2.1 Free Software Definition

The Free software definition is based on the following four freedoms: 

1. The freedom to run the program, for any purpose. 

2. The freedom to study how the program works, and adapt it to your needs.

3. The freedom to redistribute copies so you can help your neighbor. 

4. The freedom to improve the program, and release your improvements to the public, so that the whole community benefits.

4.2.2.2 Open Source Definition

The other definition is the Open source definition promulgated by OSI. This broader definition includes permissive software licenses. The elements are: 

  • Free redistribution 
  • Source code available 
  • Derivative works permitted 
  • Integrity of the author’s source 
  • No discrimination against persons or groups 
  • No discrimination against fields of endeavor 
  • Distribution of license with derivative works 
  • License must not be specific to a product 
  • License must not restrict use of other software License must be Technological-natural

4.2.2 Open Source Development Model

The Open source development model is a collaborative model. It anticipates the participation of many developers in the development of a single product or module. Theoretically, any open source project can have hundreds or thousands of contributors. In practice, however, this is rarely the case. Most open source projects are relatively small, involving the work of one contributor or a small number of contributors. Some open source projects, such as Linux or Apache, are very large development projects. Nevertheless, although they may have many contributors, these projects have a small number of gatekeepers, or ―committers,‖ who decide what contributions will be checked in to the official source tree. 

In this sense, the model is not a pure model of the bazaar. It is more like a free market with a specialist’s desk. In well-known open source projects, these gatekeepers include some of the most respected computer scientists in the world. The gatekeeper decides which modifications to be included in the source tree, based on technical considerations, including security and stability of the code and compatibility with other technology, and the desires of the community at large on issues such as features and functionality. 

The most popular open source utility used by the gatekeeper is the Concurrent Versioning System (CVS), which is licensed under GPL. A revision control system allows only designated persons to check code into the source tree. It also keeps track of published versions, what was added, changed, or deleted and when, and who made the change; it further helps reconcile conflicting changes. 

The main features of Open Source development model are: 

  • 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. 

  • Early releases

The first version of the software should be released as early as possible so as to increase one's chances of finding co-developers early. 

  • Frequent integration

Code changes should be integrated (merged into a shared code base) 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 projects have builds where integration is done automatically on a daily basis. 

  • 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 features. The buggy version (also called the development version) is for users who want the immediate use of the latest features, and are willing to accept the risk of using code that is not yet thoroughly tested. The users can then act as co-developers, reporting bugs and providing bug fixes. 

  • High modularization

The general structure of the software should be modular allowing for parallel development on independent components. 

  • Dynamic decision making structure

There is a need for a decision making structure, whether formal or informal, that makes strategic decisions depending on changing user requirements and other factors.

Most well known open source software products follow the bazaar model as suggested by Eric Raymond. These include projects such as the Linux kernel, Firefox, Apache, the GNU Compiler Collection and Perl.

4.2.3 Open Source Licensing

License defines the rights and obligations that a licensor grants to a licensee. Open Source licenses grant licensees the right to copy, modify and redistribute source code (or content). These licenses may also impose obligations (e.g., modifications to the code that are distributed must be made available in source code form; an author attribution must be placed in a program/ documentation using that Open Source, etc.). 

All open source licenses, by definition, freely allow the licensee to exercise all of the rights of copyright with respect to the licensed software. Some open source software licenses contain explicit license grants, and some contain implicit ones. All open source licenses contain broad warranty disclaimers and limitations of liability. Most also include disclaimers of any license grant under any trademark of the licensor—not that any such grant would necessarily be implied in the first place. 

When an author contributes code to an Open Source project (e.g., Apache.org),he/she does so under an explicit license (e.g., the Apache Contributor License Agreement) or an implicit license (e.g., the Open Source license under which the project is already licensing code). Some Open Source projects do not take contributed code under a license, but actually require (joint) assignment of the author’s copyright in order to accept code contributions into the project (e.g., OpenOffice.org and its Joint Copyright Assignment agreement). 

Placing code (or content) in the public domain is a way of waiving an author’s (or owner’s) copyrights in that work. No license is granted, and none is needed, to copy, modify or redistribute a work in the public domain.

Examples of free software license / open source licenses include Apache License, BSD license, GNU General Public License, GNU Lesser General Public License, MIT License, Eclipse Public License and Mozilla Public License.

Comments

Popular posts from this blog

3.5 SOCIAL NETWORKING

3.6 BLOG

3.4 COLLABORATIONS