Here is a little something for those new to the terms or those who are confused between these two terms.
For quite sometime, I had this simple idea:
Open Source - Software for which source is available
Free Software - Software for which we do not have to pay
Well, this was way back and while the first definition is partially correct, the second definition is totally wrong. Actually software for which source is available is generally referred to as "source-available" software and software which are available for free are generally called "freeware". Also both free and open source software are also "source-available" software but a "source-available" software need not be free / open source. More on this later.
Eventually I got to know the meaning of free software. But I was always wondering about the difference between free software and open source until I came across this article by Richard Stallman where he clearly explains the difference between free software and open source:
http://www.gnu.org/philosophy/open-source-misses-the-point.html
I will try to briefly explain some of these terms for the layman.
Source (or source code) vs. Binary (or binary executables)
Software is generally written in human readable format by programmers. This is called the source or source code. These files are then complied to produce binary executables which are not human readable. These binary files are then executed by the user to perform specific activities. Let us take the simple example of Adobe Acrobat Reader (Adobe acrobat reader is used for reading PDF files). This is how it works.
The programmers at Adobe write thousands of lines of code. They then compile all this code to make the Adobe Reader binary. They then give these binaries to the people so that they can run it and read PDF files.
Here let me add a point about binaries. Binaries are essentially not human readable files. Which means by looking at a binary or by examining it, it is generally very difficult to tell what it can do. For example, by running the Adobe Reader binary you might be able to read PDF files. However, apart from that. the same binary could also be collecting some information such as the kind of PDF files you often read and send this information to Adobe.
Therefore the actual list of activities which a binary can perform can only be known to one who has access to the source code from which the binary was compiled. So, in the above mentioned case, only those at Adobe will actually know what the binary performs because only they have access to its source code. Theoretically it is possible to study the Adobe binary and tell what it can do but like I already mentioned, this is extremely difficult when compared to going through the source code and understanding what the program does.
Summarizing, below are the steps involved in using a software:
This is the way every software, be it proprietary, free or open source, generally works. It should be noted though, that for some programs written in interpreted languagues such as perl/python, there is no need for intermediate binary and the interpreter can execute the program by reading instructions directly from the source files.
Proprietary/Non-free Software
Let me give you an example of proprietary software - "Microsoft Windows operating system". I believe most of you have been using this for quite sometime. But here are some facts about Windows OS.
- Legally in order to use the Windows OS, you have to purchase it. Most of us end up using pirated Windows and if Microsoft gets to know of this, you could as well be jailed. Anyway, let us assume that you are a law-abiding citizen and have purchased a legal copy of Windows OS.
- Though you have purchased the windows OS, the source of windows is never given to the end users. Only the binaries are given. Which means it is very difficult to tell what all your operating system is performing; it could as well be sending information about you to the government or to some third-party source. This itself could mean that your privacy is compromised.
- The Windows license also does not allow you to distribute their OS. So though you have purchased Windows legally, you do not have the right to distribute it to your friends because the windows licence does not allow it.
- You cannot study or make any changes to the operating system to suit your needs. Note that binaries are not human readable and hence you cannot make any changes to it directly. You have to modify the source code to add your changes and then recompile it to give you your new binary. But as the source code is not available, you cannot make any changes to the source code which means you are limited to using the Windows binaries which they have given.
Have you ever wondered that you are actually using an operating system for which you have paid a price and yet cannot distribute it, cannot modify it and don't know what all activities it is performing without your knowledge?
Free Software
As an answer to proprietary software, free software came into existence. Quoting Stallman - "When we call software “free,” we mean that it respects the users' essential freedoms: the freedom to run it, to study and change it, and to redistribute copies with or without changes. This is a matter of freedom, not price, so think of “free speech,” not “free beer.”"
So free software does not mean that it could be got for zero price. It means that once you have got the software (either by buying it or for zero price), you get to enjoy these four freedoms.
* Freedom 0: The freedom to run the program for any purpose.
* Freedom 1: The freedom to study how the program works, and change it to make it do what you wish.
* Freedom 2: The freedom to redistribute copies so you can help your neighbor.
* Freedom 3: The freedom to improve the program, and release your improvements (and modified versions in general) to the public, so that the whole community benefits.
Freedoms 1 and 3 require source code to be available because studying and modifying software without its source code is highly impractical.
Open Source Software
Open source software just doesn't mean software for which source code is available. Similar to free software, open source software lets the user study, modify and distribute the source code. The software for which source is available are called "source-available" software. But not all "source-available" software let you modify or distribute it. Therefore one can say that all open source software are "source-available" but not all "source-available" software are open source or free software.
Going by the official definition - "Open source is a development method for software that harnesses the power of distributed peer review and transparency of process. The promise of open source is better quality, higher reliability, more flexibility, lower cost, and an end to predatory vendor lock-in."
The idea behind open source is simple: By letting all the people of the world have access to the code and allowing them to study, make changes and give those changes back to the community, we will eventually have a better piece of software as opposed to a small number of developers working on developing a proprietary software without letting anyone else review this code.
Free Software vs. Open Source
The best way to understand the difference between both of these terms is by going through the link - http://www.gnu.org/philosophy/open-source-misses-the-point.html. Here are a few points from the same article which should help you to understand the difference:
A pure open source enthusiast, one that is not at all influenced by the ideals of free software, will say, “I am surprised you were able to make the program work so well without using our development model, but you did. How can I get a copy?” This attitude will reward schemes that take away our freedom, leading to its loss.
The free software activist will say, “Your program is very attractive, but I value my freedom more. So I reject your program. Instead I will support a project to develop a free replacement.” If we value our freedom, we can act to maintain and defend it.
Yet some open source supporters have proposed “open source DRM” software. Their idea is that, by publishing the source code of programs designed to restrict your access to encrypted media and by allowing others to change it, they will produce more powerful and reliable software for restricting users like you. The software would then be delivered to you in devices that do not allow you to change it.
This software might be open source and use the open source development model, but it won't be free software since it won't respect the freedom of the users that actually run it. If the open source development model succeeds in making this software more powerful and reliable for restricting you, that will make it even worse.
I hope this article has helped you in gaining an initial understanding of software freedom. Googling for free software and open source software should give you a lot of links where you can get a better understanding of these terms.
I'd like to thank my friend Sunil Mohan for reviewing this article and giving his valuable feedback.
Add new comment