1 Introduction to Open Source, FSF, History and Philosophy

Mr. Hardik Joshi

epgp books

Introduction to Open Source, FSF, History and Philosop

 

Introduction

 

In this module, we will get an overview of Open Source software. The role of open source has been appreciated since it has lowered the costs of software and made programming tasks easier. As we are aware, programmers write programs that are intended to execute on some other system. Usually, programmers never give the program code to get executed, they hand over the executable files / binary files pertaining to certain application for the purpose of execution. Now, if the end user wants to modify the code, he is not able to do so since the program was created by the programmer who has the code. Usually, in organizations, the source code (programs) are not released and it creates vendor lock-in. The end user is bound to approach to the programmer every time he wants the programs to be modified. He cannot approach any other programmer since the source code is with the first programmer who created the software.

Programmers or Developers write source code. Source code is a collection of computer instructions that will perform certain task. These instructions are written in computer language which is human-readable. Usually, the programs are text files. Figure 1 illustrates a sample program that is written in C language.

 

Figure 1: Program code of C Language

 

The program demonstrated in figure 1 is an example of source code. Usually, the source code do not execute directly on computing system, they need compilers to get the code compiled. Once the code is compiled, it generates the object code. The object code can be linked and executed by the system. The source code and object code are like “before” and “after” relationship. The source code is compiled to generate object code. Object code cannot be read by people since it is sequence of bytes. Compiler is a piece of software that is responsible to convert the source code into object code.

 

Figure 2: Process of Compilation

 

The source code consists of programming language statements that are created by a programmer. Programmers write programs in programming languages like C, C++, Java etc. These programming languages provide compilers, the compilers convert programs (source code) into object code, later these object code can be executed by the system.

 

There is another class of languages which do not require a program to be compiled. These languages are called scripting languages. Languages like HTML, Java Script, Shell script, etc. are executed directly by the interpreter. Such programs never get compiled. The interpreter is a piece of software which executes the scripts line by line without converting it into object code.

 

Figure 3: Process of Interpretation

 

A compiled program depends on additional libraries while the scripts are usually set of commands that execute. If a program has a single error, the compiler do not generate object code. A program needs to be re-compiled till the error is solved. Whereas, the interpreters can execute the code line-by-line till them come across the error.

 

Figure 4: Compilation and Interpretation

 

Figure 2 illustrates the process of compilation and execution and interpretation. It must be observed that although the processes are different, the input is always the source code. It must be noted that in both the cases the source code is different.

 

Open Source Software

 

Usually, the programmers never give source code to the end users, rather they give the executable file that can run on systems. Source code means the program(s) created by the programmer. This is how, a programmer uses vendor lock-in. Now, whenever the program needs to be modified , the user has to approach programmer every time for modifications. Ultimately, end users must rely on programmers for each and every modification done after providing the software. This is where, open source can come into rescue.

 

When we say open source, generally it is meant that along with the executable program, the programmer also delivers source code to the end user. So, if the end user gets the source code, he is relatively free to get the program modified by others if required in future.

 

There are two organizations that have provided definition of open source software and free software. The definition of open source is given by Open Source Initiative (OSI). According to the definition, a software is said to be open source if it meets the criteria laid down by OSI. Similarly, there is an another organization which defines free software. If the distribution of source code comply to their norms then the source code is said to be free software. The name of this organization is Free Software Foundation (FSF).

 

There are few terms like FOSS or FLOSS that are related to open source software. The terms are mentioned as below:

  • FOSS (F/OSS) : Free & Open Source Software
  • FLOSS : Free/Libre Open Source Software

There are few misleading terms like shareware, trialware, etc. These terms must not be confused with open source. The opensource software are always free to use, while sharewars or trialwares are such kind of software that may executed with restricted facilities or might execute for a specific time period and later will ask the user to make payment to further extend the usage of software. So, open source is not related to shareware or trialware. The object of producing shareware or trialware is quite different and it must not be confused with open source software or free software.

 

Free Software

 

Let us first study the criteria under which software can be termed as free software. Here, the word free means “Mukta” (Freedom). The term free software was coined by “Richard Stallman” who founded the Free Software Foundation and was the main person to advocate for free software.

 

In earlier days, there were many restrictions for the end users to run the program. For instance, a program purchased by Father could not ask his Son to run the program due to violation in copyright act. However, now, we can distribute the program by checking the license and if the license agrees, we can distributed the program.

 

Proprietary / Commercial Software

 

Proprietary software is a software that is developed or maintained by someone or by some company. Commercial software means the software that is to be sold to earn revenues. In most of the cases, the proprietary or commercial software are not released as open source software.

Open Source according to OSI

 

Now let use see the definition of open source initiative. If an open source project adheres to the following definition, it is called as an open source software.

 

Figure 5: Conditions for Open Source Software

 

Let us try to understand each rule:

 

1.  Free Distribution: The source code must be distributed free of cost

2. Source Code: The entire source code must be always provided

3. Derived Works: Other users are free to modify the source code and customize for their own use.

4. Integrity to Author’s Source Code: The license may restrict the source code being delivered in modified form; some time the author;s code must not be modified ; in case if the software gets modified, it must be given some another name

5. No discrimination against persons or groups – The distribution of software must not be reserved for a particular group, but it must be available for all citizens.

6.No discrimination against fields of endeavor – Programs must not be restricted to particular area, it must be made available to anyone for any purpose

7.Distribution of License – The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.

8.License Must Not Be Specific to a Product – The license must be generic and must not be designed for a specific product

9.License Must Not Restrict Other Software – Any other software being released or used must not be restricted

10.License Must Be Technology-Neutral – Licenses must not be specific to a particular technology.

Note: In the next module, we will study various licenses for open source software. With the help of which, there will be more clarity in the above mentioned rules.

 

Example of Open Source Software

 

Following is a brief list of software that are open source, we have also added proprietary software to make comparison:

 

Proprietary / Commercial Software

  • Microsoft Windows
  • Microsoft Office
  • Adobe Professional

   Free / Open Source Software

  • VLC Media Player
  • Libre Office
  • GIMP
  • Synfig
  • Audacity
  • Apache Web Server
  • Linux

  Revenue Generation with Open Source

 

There are two main ways to generate revenue for the organizations producing open source software. The revenue can be generated by providing support where it means that the software will be free but there will be charges for maintenance. Another way is to provide customization services on charged basis. The user requirements must be customized to modify open source software.

 

Open Source and Current Scenario:

 

The open source software has reached almost every home in some way or other. GNU/Linux is an example of open source software. Few other software like VLC media player, apache Web Server, LibreOffice are being used at homes and offices. Since the investment cost is almost zero to acquire open source software, the usage of open source software is increasing day by day.

Open Source software have entered in the school curriculum. Certain Govt. offices are encouraging the usage of open source software. The corporate sector has also started migrating their infrastructure on open source software. Most of the servers run open source software

 

Let us Summarize what we have learnt in this module:

  • Understood the meaning of source code
  • Defined Free software term (given by FSF)
  • Defined the term Open Source Software
you can view video on Introduction to Open Source, FSF, History and Philosophy

References:

  1. Glyn. Moody. 2009. Rebel code : linux and the open source revolution, Basic Books.
  2. Rod. Dixon. 2004. Open source software law, Artech House.
  3. Paul Kavanagh. Open source software : implementation and management,
  4. Stefan. Koch. 2005. Free/open source software development, Idea Group Pub.
  5. Karl. Fogel. 2005. Producing open source software : how to run a successful free software project, O’Reilly.
  6. Joseph Feller. 2005. Perspectives on free and open source software, MIT Press.
  7. Chris. DiBona, Mark. Stone, and Danese. Cooper. 2005. Open Sources 2.0 : the continuing evolution, O’Reilly.
  8. Chris. DiBona and Sam. Ockman. 2008. Open Sources : Voices from the Open SourceRevolution., O’Reilly Media, Inc.
  9. Eric S. Raymond. 2001. The cathedral and the bazaar : musings on Linux and open source by an accidental revolutionary, O’Reilly.
  10. Dan Woods, Gautam Guliani, TotalBoox, and TBX. 2005. Open Source for the Enterprise., O’Reilly Media.
  11. Michael R. Overly and Inc. Pike and Fischer. 2003. The open source handbook, Pike & Fischer.
  12. Rod. Dixon. 2004. Open source software law, Artech House.
  13. Kirk St. Amant and Brian Still. 2007. Handbook of research on open source software : technological, economic, and social perspectives, Information Science Reference.
  14. Axel Metzger. Free and open source software (FOSS) and other alternative license models : a comparative analysis,
  15. Andrew M. St. Laurent. 2004. Understanding open source and free software licensing, O’Reilly.