Thursday, November 6, 2008

The many meanings of Open Source

This post summarizes the research paper 'The many meanings of Open Source' by Cristina Gacek, Tony Lawrie, and Budi Arief.

Software can be categorized as Free and Proprietary Software.

Proprietary software does not make its source code available to the public and redistribution and modification is prohibited.

Shareware and Freeware are part of the proprietary software. Both forms are available as free downloads, but shareware is for limited usage. To go beyond the limitations, shareware expects a license fee to be paid.

Free Software can be further divided in to two as Non-copylefted and Copylefted software.

Copylefted software does not permit additional restrictions to be enforced. Though it’s open for modifications and redistribution, it needs to be free, always.

The most prominent distribution terms for copylefted software are covered in the GNU GPL (General Public License).

Non-copylefted is the opposite. It is allowed to modify and redistribute as proprietary software.

The idea of building software within a cooperating community, where the source code was made available so that everyone could modify and redistribute it began with the GNU project at MIT in the early 1980s.

In 1985 the Free Software Foundation (FSF) was pioneered by Richard Stallman to generate some income for the free software movement, not restricting itself to GNU.

Free software, as defined by the FSF, is a program that grants various freedoms to its users.

-Freedom to run the program for any purpose

-Freedom to study and adapt the code for personal use

-Freedom to redistribute copies of the program, either gratis or for a fee

-Freedom to distribute improved or modified versions of the program

In the early 1998, the term Open Source was coined as a response to the announcement made by Netscape on its plan to give away the source code of its web browser.

Immediately afterwards, the Open Source Initiative (OSI) was set up to manage and promote the Open Source Definition (OSD).

To qualify as an open source project, the basic requirement is to follow the OSD [Open Source Definition].

OSD emphasizes nine criteria that open source software needs to be complying with. The main three are:

1. The ability to distribute the software freely.

2. The availability of the source code.

3. The right to create derived works through modification.

The rest of the criteria deals with the licensing issues.

4. The integrity of the author’s source code must be preserved, making the source of changes clear to the community

5. No discrimination against persons or groups both for providing contributions and for using the software

6. No restriction on the purpose of usage of the software, providing no discrimination against fields of endeavor

7. The rights attached to the software apply to all recipients of its (re)distribution

8. The license must not be specific to a product, but apply to all sub-parts within the licensed product

9. The license must not contaminate other software, permitting the distribution of other non-open source software along with open source one

Open source software differs from Free Software.

They disagree on basic principles such as commercialism, licensing and etc, but not on practical recommendations – availability of source code, ability to modify the code and etc.

Characteristics of open source can be mainly divided in to two, Common and Variable.

Common characteristics include Community, Development improvement cycles, Motivation, Developers and users, Process of accepting submissions and Modularity.

Variable characteristics include Choice of work area, Size, Operational support, Licensing, Visibility of software architecture, Submission dissemination information process, Meritocratic culture, Documentation and Testing, Business model, Starting points, Decision making support and Balance of centralization and decentralization.

Open source users can be categorized into two, Passive users and Active users.

Active users are further divided as Non-developers and Developers.

Non-developers do report bugs and suggest new features.

Developers are further divided, Co-developers and Core developers.

Co-developers do report bugs, suggest new features and review & modify the code.

Core developers defer from Co-developers since they involve in decision making.