Article written by Josef Lauri
Have you ever thought of the value of a recipe? When a loved one serves you your favourite dish at home, a family recipe passed down form the previous generation, have you ever stopped to think about its price? How much would you be willing to pay to recreate it if you lost that recipe? What laws regulate what you can do with it? Can you share the recipe with your friends? Or must it stay in the family?
Probably you have not. And that is because traditionally, and in practice, recipes have been mostly free. Recipes are not free in a monetary sense. You may have to pay to buy a good recipe book, and you still have to buy the ingredients. But, recipes are free from constraints.
Generally, you don’t need to ask any one’s permission to replace a missing ingredient with a similar one, or to share a good recipe with a friend, because recipes are free like speech. Of course there are exceptions to this, like the famous Coca-Cola recipe, or those of dishes served by a Michelin starred restaurant, which are closely guarded secrets not shared with the public; but these are the exception not the rule. No one owns the recipe to make a cup of tea!
Software is nothing like that. Typically whenever you want to do anything with a piece of software you need to pay, or ask for permission. When you buy software, you are actually buying a licence (a permit) to use that software. You cannot share it, improve it, make it safer for your kids, or check what is inside it. Just to be sure. While this is the way things are for most of us, and we have come to accept it, when you stop and think about it, it is rather odd.
When I started studying IT, many years ago, the first thing we were taught was the concept of an Algorithm. The analogy used time and time again to explain what an algorithm is, was that of a recipe. Every computer program implements an algorithm, which is step by step instructions of what to do. All that software is, at its the most basic level, is a recipe that a computer can follow.
The algorithm, or recipe to make tea would be:
- put water in kettle
- put kettle on flame
- wait until water boils
- turn off flame
- put tea-bag in mug etc…
Similarly, the case for a computer program to work out a sum would be:
- read the first number from the keyboard
- read the mathematical operator from the keyboard
- read the second number from the keyboard
- calculate the sum
- display the result on screen etc…
Of course getting a computer to do something useful requires much more complicated instructions. But this is the same as with your food. When you cook a stew you do not need to stop and think about the recipe needed for good seasoning. You could opt for using a ready made stock cube rather than making your own. The choice is yours, but its good to know that you can stand on the shoulders of giants.
The major difference between recipes and software is that recipes are made by people for people, while software is made by people for machines. This means that while recipes can be freely used in your native language, software needs to be translated from a language that people understand to one that machine can understand. Software written in a Programming Language that people can understand (like Java or Basic) called Source Code. It means exactly the same thing, but its translated so that computers can understand it while humans can not – at least not in a practically useful way. It is called binary code or machine code and is the form that executables (e.g. *.exe) typically take. It is important to understand this point, so I’ll try and follow on the analogy.
Binary code is like ready made food, food served in a restaurant. You don’t know what the ingredients are or how its made, you just know it tastes good, and as far as you know is edible. While there is nothing wrong with ready made food, its one time use only. If you need to eat it, you cannot share it, improve it, make sure its safe etc. It is only Source Code that gives you the recipe.
The other big difference is that because of the intellectual property rights of the owners of commercial software it is a crime to copy a software recipe. Now you might go to a good restaurant, like what you eat, and decide to copy it at home. As long as it stays in your kitchen, or if you share it you do not claim to have invented yourself, thanks to the tradition of recipe sharing, there is little chance you might get into trouble. If you do not publish it, coping it from the restaurant’s chef own cookbook, or go big-time-commercial with that recipe, no one will even think about complaining.
On the other hand because of the digital nature of Software it is very easy to reproduce and make several perfect copies of a said software recipe. Moreover an improved variant can be easily spread thanks to the Internet. Therefore coping and sharing commercially owned software is a big no-no. The only software that can be shared and improved is free software: i.e. that software for which the Source Code is openly available: Open Source Software.
Because of the long millennia over which we have been exchanging recipes for food, most of these are free. Secret recipes with intellectual property rights are the exception. Software was also born in a free world, where most software was free from legal constraints, but over the young life of this technology history took a strange twist, and most software many people use today is in fact un-free.
Why this is so? Is it because the technology came to in a world dominated by market forces, or because of the incredibly short time it took to develop, or because of bad politics and unethical business men? Its really a matter of speculation, and requires much deeper analysis which we will not go into here.
At this point you might be thinking “So what! If ready made food was as cheap, as good, and as readily available as binary only software, no one would cook at home any more, we’d all be happily eating out every day”. Let me give you a couple of scenarios which might make you think again:
Imagine if what was ancient Mesopotamia (today Iran and Iraq) were to claim that they invented the recipe for bread. Now they would demand that anyone wishing to produce bread has to get a licence from their governments. Or worst, they would claim that only they have the right to produce bread and every one has to buy their bread from the fertile crescent region.
Imagine if a few mega corporations controlled all the ready made food production. Imagine that they made good, healthy, very very cheap food, and no one cooks at home any more. Now imagine that higher management decides that making gluten free food for celiacs is uneconomical and will not be beneficial for its shareholders, so they decide to stop producing it.
Now if you have a celiac child you might think that, expensive though it might be, you will have to go back to preparing your own food at home, but alas, the companies own the rights to almost all recipes (pasta, bread, boiled rice etc) and so it is illegal for you to reproduce them in a wheat free version. If you try and share the recipes at your celiac’s support group you are accused of piracy, and your kitchen is taken away for forensic analysis.
If you think these scenarios are extreme and ridiculous you are right, and thank god for that. But in the Software world this is the prevalent attitude: that ownership and control of software (through its source code) is something only big corporations and spotty, geeky teenagers can partake in. The rest of us have to eat what is put in front of us.
The analogy does not look that far fetched when you stop and consider that big a few of these large software companies are involved in several intellectual property infringements and have been found guilty of monopolistic practices. Worse still vendor lock-in and the upgrade thread-mill are common practices. Simply put, these practices involve the owners of Software Recipes making their systems incompatible with one another and obsoleting their still perfectly good technology just to push the market. Not to mention the lack of support for minority languages (like Maltese) and unwillingness to let such communities help themselves. The fabric of the Internet is built upon free recipes, Open standards and protocols (like TCP/IP) and Source code to implement them. So how far fetched are the above analogies when vendors of binary only software intentionally break those standards to marginalise competitors?
The culture of freedom and democracy abhors such situations (or at least it should). People will always cook at home, not only because it is fun, but because the sharing of ideas is part of our culture. Serving your loved ones’ home made food, or giving someone a home made cake as a present, is so much appreciated because it is a “labour of love”, a coming together of ones intellectual property (Granny’s recipe) and hard work. Besides we like to know what we are eating in more than one sense. Why does food have to have a list of ingredients on its package, but we don’t seem concerned about the Source code (i.e. the recipe) of the virus scanners and firewall software that is protecting our privacy and our children? The culture of sharing has made it out of the kitchen and into various areas. Politicians like to call it Solidarity, yet it stops at the door of the software industry.
You might think that these are issues that the IT Manager or CTO of a big corporation needs to consider, but they do not really effect you that much personally, nor are they of concern for the local SMEs or retailers. They are not bread and butter issues.
But consider this:
When many people visualise the Internet, what they imagine is the web browser.
This tool is today essential to so many businesses of all sizes, and to many people’s daily lifestyle. Yet, most people use an un-free web browser when a perfectly good free alternative, that happens to be actually safer, is readily available. Take then the Operating System. This is that basic layer of Software that makes today’s very complex and powerful hardware usable by human beings. In IT terms the Operating System is the bread and butter of computing. Today so many systems, from high-end mobile phones to in-car entertainment and DVD players, are so powerful and complex that they rely on an Operating System to be usable. Yet, most people use an un-free System, when a perfectly viable alternative exists, that is regularly updated to fix any flaws, unlike Commercial systems which all too often hide flaws until the market is ready to “buy” a big upgrade.
Computers might not be as essential to our daily lives like real bread and real butter, but they are on the verge of being as critical as electricity and transportation. In the service industry, they might already have become more important. You might be lucky enough to buy your daily loaf of bread from a local bakery, but if you bought your butter from a supermarket, you have been serviced by several computers.
The cash till is a computer, connected to the stock manager’s computer. Your cash card was processed by computer, and the sell by date on your packet of butter was printed by a computer. We might not actually be in a science fiction doomsday scenario where we are all controlled by machines. But neither are our machines controlled by us, for most of us do not own, nor are wee allowed to peek at, the recipe that makes these machines do their thing.
But it is not all bad news. In cyberspace there exists an industrious army of home cooks, and local chefs, that are busily working away to free the world of software. This is the Free Software Community – the people who develop open source software. They have given us some great recipes like Linux, FireFox, and Apache.
Software that huge information institutions (governments, universities, Fortune 500 companies etc.) are consuming. These people believe that software should be free like Free Speech. This does not mean that one should not make money from software, there are many ways one can make money from software which is made of source code which is free. Think of it like a chef who is willing to share his recipes and give tips to his clients on how to cook their food. She still wants to make money from her restaurant, and if the handy tips and open attitude make her restaurant popular she will charge a lot of money to prepare food for you. She might even publish a book of recipes!
Some have criticised Open Source Software because it is not refined enough for the modern consumer. But like with food, this is very much a question of perception.
I do not know of anyone who has refused a hearty home made meal because the presentation was poor, or the plate too full. On the other hand many of us have bought into the beautiful presentation at a restaurant or on the package of some frozen meal, to be let down on biting. If and when free software is harder to eat, it is because it will be easier to digest.
So, this is an invitation to partake in this communal meal that is the free software community. Anyone can do something that is good and healthy for their computer and their community, just use open source software on your PC. I, who have become addicted to the genuine taste of this kind of software would like you to throw out all your commercial software and replace it with something like Ubuntu. But to be more realistic, just try installing FireFox or OpenOffice, and start savouring the true taste of digital freedom.