Tuesday, April 10, 2007

Why free software exists: Part 4

The 4 Freedoms.

You can say that Richard Stallman (the founder or guru of free software) propounded these laws to promote his community. The community of free software users. Of course to understand why these laws or rules were framed you have to understand the history behind the making of the GNU/Linux OS, and you have to understand how proprietary software or proprietary OSs eat your freedom. To many free software disciples, proprietary software is evil. Even Stallman thinks so. However I don't actually think we can really dispense with proprietary software being evil! [I'll tell you why later, in a different post or series].

The evil of proprietary software

The term proprietary connotes ownership. Which means proprietary software always have an owner (or owners). But the owner dictates the product. The success of the product (whatever it is) depends upon how you are able to utilize it, or in other words, how the product is of utility to you. And while our way of life and thinking allow us to only use the product and get satisfied with its service, we have no problem. The owner is happy; you are happy. However software is a little different. It can change. All it takes is modification of the source code! This is why we say that software is flexible. But consider the question: for whom is software actually flexible? Is it users like you and me who know programming or how to modify the program, but who do not own the product (group A)? Or is it for users that simply use the product who have no idea about how to modify the product (group B)?

The above questions consider two groups of people. People who know how to modify the product, and people who know only how to use the software. The irony is that proprietary software is never really flexible for either group. Then for whom is this product flexible? The obvious answer to that is 'for the owners' or 'the developers' of the software. So software being flexible is actually an illusion to the afore-mentioned two groups.

There is a negative side to this, i.e. software having owners. Proprietary software is never really distributed with the source code. The owners will say that if software is mostly for people who only care about using software (i.e. the 2nd group of people I've mentioned before) why should we supply source code? They will never understand it! This is the defense most proprietary owners would give. The danger is that some owners can misuse the freedom of how you want to use our computer. They do it mostly with the intention of profit or gaining recognition. And this happens, behind our backs! Most of us are really swayed by the term "free" over the internet. That is if anything is available for free, we have the tendency to download it and use it. What we download have licenses that convey the fact of proprietary ownership. These products may behave in such a manner we never really know. Sometimes detecting this behaviour is impossible. You have a host of other proprietary programs that run or reside in your pc; finding the culprit program is a mammoth task. And you and I have experienced most of the problems: POP ups (in spite of downloading pop-up blockers), updates we never really want, but get us in trouble, spyware, viruses...etc.

All these problems exist because the source code is not available to us. If we had the source code we learn it and find out what a program actually does. Even if you did not know how to read source code, you don't have to worry. What you can do is get a trusted person to do it for you, like your developer friend, or you could hire a professional. And, if you have come to learn of an undesirable feature you can in fact ask the other person to remove it!

Now consider the case of product upgrades. Since proprietary software does not have source code shipped with it we cannot really change anything. But the developers of the product can. Because they have the source code. This would naturally mean that if you wanted something added into the product you would have to literally depend upon the developers, and you are at his or her mercy. And suppose the developer just vanished from the surface of earth, then you are completely helpless. For the community of free software workers this is a major problem. It is not that the source code is not available. We have ways to decompile the program and see the inner workings. (Only thing is that we don't get it in the language it was originally created). We could reverse engineer; but that's entirely a different issue. For anything proprietary I think reverse engineering is an ethical issue! [:)] Because, the proprietary license says that you cannot modify a program. What if your intention was to help a friend? No, you must know we cannot do that! It is punishable by law. You are not even allowed to give that person a copy of the software application you have, that might be able to help that person a lot. Being able to help a friend is something that makes the free software community survive.

We all know most proprietary OSs and applications are plagued by viruses. Viruses are programs that run inside your computer, mostly without your knowledge, and hinder your normal use. Because of the fact that proprietary OSs are proprietary, creating such viruses are much easier. Who can find out? Where as in the case of gnu licensed OSs viruses are generally less. There could be a lot of sides to the statement. (I would want to discuss the different view points in another post or series). However I guess all of us agree to the fact that viruses are easier to stay hidden with proprietary OSs and applications! If you are a person using a free software application you have the ultimate responsibility to validate the source code; see if it has any flaws or viruses in it. This is because the source code is free. But if you are someone who is not that educated about computers or programming, hire a professional; ask him or her to test the source code. Sit along with that person until the whole process is over. Be sure of the fact that there are no viruses or bugs. This way even you can learn more about interacting with the product. This exercise would become useful when you actually use the product to solve your need. You could even do this with proprietary software, but you still would not know what is happening inside!

The rules of the community

Somehow these rules are self-serving; meaning they help the community of free software users to live in harmony. They are four simple laws wherein every point has a fundamental reason.

  1. Freedom 0 - Freedom to run the software. To be able to do anything or satisfy purpose you would need this freedom.
  2. Freedom 1 - Freedom to learn and study the source code, and adapt it to your needs. This is nice because even before using the product we can actually get a vague idea of how it can be used. We can also asses if software application meets requirements.
  3. Freedom 2 - Freedom to make copies and distribute them. This does not necessarily mean you give it for zero price, mind you! This will actually helps others benefit from the source code you have obtained.
  4. Freedom 3 - Freedom to improve and make modifications to the software and release it so that other people can benefit and somehow be able to customize it for their use. Again this is aimed at helping your neighbour.

I have worded these four laws differently. Actually you can get the original thing from http://www.gnu.org under the title "What is Free Software?". I hope now you have a basic idea of what free software is. It is not simply because of proprietary software, free software exists. I believe there is another purpose (an even greater one). And of course there must be a post that sorts some confusion people have about free software. So keep tuned to this series in the future.