Thursday, May 8, 2008

Free Software Vs Open Source

The free software movement was started by Richard M Stallman in the 1980s. (www.stallman.org). The aim of the movement in popular opinion is to forward the cause of community based software development. As opposed to proprietary softwares whose makers often restrict many things, it aims to eliminate all restrictions. This includes but is not Limited to the availability of source code. The story of how it started can be found in one of stallman's essays which normally comes with emacs documentation. C-h C-p would tell the history of the movement and the organisation (Free Software Foundation) founded by Stallman to further the cause. It is a nice read and would make many things clear.
Free software is about the freedom to use the software and it does not talk about cost of the software. (unfortunately there is no word in english which conveys this). It has famously been said "Free as in freedom not as in free beer".
In hindi there is a word called "mukt" which conveys the concept clearly. For this reason in India it is being called mukt software by many. (For similar reasons many in Europe call it libre software since it stands for liberty not cost).
Free software is a matter of the users' freedom to run, copy, distribute, study, change and improve the software.
If a software can give all these rights to you it is free software else it is not.

There has been a term in vogue called "Open Source" which has lead to lots of confusion. I am not talking about the Open Source Definition here. (It provides some of these things). But when closed minds talk all they can think of from the term is that code is available. Code being available is not the only aspect of free software. For this reason I recommend to all to not use this term because when people talk about "open source" thats what they think of. Its possible for a software to be open but not free. The software which meet the requirements of freedom are free and others are non-free.
Each distribution has its own guidelines for deciding this. (For example, my favourite distribution Debian has what they call the Debian Free Software Guidelines , DFSG for short. You can read it on their site www.debian.org).
There are many examples of "open source" but non-free software.
One small example I can think of immediately which is maybe not the best one to start with but here goes. My office had bought a PC-Add on card from a company. We wanted to use this on linux. He had provided windows drivers but his linux drivers were binary only. They were not working. I requested the company for the source. They gave the source to me but I had to sign a Non-disclosure Agreement with them. Due to this agreement I can modify the source and give to them. But I can not give it to you. This is restrictive software. The code is available but non-free.
Sometimes components of software are free while others are not there. Some years back KDE itself being free depended on the Qt library which was not released under GPL(GNU Public License- the most popular copyleft licence under which most free software is released. See www.gnu.org for more details). so kde although itself free depended on a non-free software library. (Debian normally places such softwares in the contrib section and the non-free components in the non-free section). The issue was resolved when Qt's regulating company Trolltech fell in line. Our efforts and refusing to use them can bring many other companies in line.
Another good example is java. They have been talking about releasing Java and many people have falsely started thinking that its free. Thats not the case. Java can be free only when ALL of its components are released under a free licence. A piecemeal approach wont work.(the classpath for example. AWT and swing to my knowledge are not completely 'out'). I therefore suggest to all to use GNU classpath tools and not the non-free java jdk. Using such softwares ensures you are using free components only. The Java jdk is a trap. You won't even realise when you are using features specific to sun's implementation which is non-free. There is a great need for developers who can work with GNU to put missing features missing in GNU's efforts.

I hope I have cleared some misconceptions here.
So use free software. Don't use the confusing term "open source".
Do add your comments so that I can improve this post.

No comments: