Having your cake and eating it

Short URL: http://fsmsh.com/1740


What is free software? Should you care and if so, why and what does it have to do with cakes and my mother?

My mother and computers

“Write a complete beginner’s guide to free software", they said. “It has to be something that your mother would want to get excited about", they said. The problem is my mother neither knows nor cares what software is. The closest she gets to using a computer is when she uses the timer on her oven. I still need a typical reader in mind when I write this though so, for the purposes of this article, my mother not only uses a computer, she gets annoyed when it doesn’t perform as expected and she knows that there is no such thing as an “Any" key. She is the target audience, she may use computers at home or at work or both but she has not given much thought to the software she uses or the licence under which she received it.

For the purposes of this article, my mother uses a computer and gets annoyed when it doesn’t perform as expected

In this article I’ll be explaining a little about what free software is and why you should care. I expect and hope you’ll have some questions but for the most part I hope you’ll not get confused or lost.

Note: I am not a licencing expert and I’ll be using some simplifications. If you are knowledgeable about the subject and feel the need then please comment but remember this is a beginners guide—simplification is the name of the game here.

What is free software?

Wherever you encounter free software, you’ll find the term free is being used in relation to freedom and not cost. You may also encounter the phrase “Free as in speech, not as in beer" which reinforces this idea. Whilst reading this article I suggest you forget about cost altogether as it might be a distraction.

The fact is that some computer users don’t like to pay for their software (but don’t slip it under their jackets in the store) and some don’t mind paying. When I say “free software" I am talking about software with freedom attached. I’ll explain what that freedom is later but for now remember that cost is not important. Confusingly some free software will cost you money. Much of it doesn’t, but what binds all free software (and much of the surrounding “community") together is not cash flow—it’s freedom.

Whilst reading this article I suggest you forget about cost altogether as it might be a distraction


What do you want to bake today?What do you want to bake today?

Let’s talk about cakes for a minute. Some cakes cost money and some don’t. Similarly some come with the recipe and some don’t. What I’m interested in here is not how much the cake costs to buy or make but what you are allowed to do with the recipe and the cake once you have it.

Imagine this scenario:

  • You receive or buy some cakes from someone and they give you the recipe as well.
  • They allow you to use the recipe to make your own cakes at home.
  • They allow you to change the recipe to leave out the nuts you are allergic to.
  • They allow you to redistribute (even sell) both their original and your nut-less version of the cake.
  • They insist that if you do redistribute you give others the same option.
  • They insist you do not pass the original off as your own work. [1]

It may seem obvious but what they’ve given you (aside from cakes) is freedom: freedom to use, change and redistribute the cakes and the recipe. You might be thinking that people rarely give you recipes with such conditions attached but those conditions are often inherent in the gift. If you gave a recipe to someone and you were happy for them to pass it on, wouldn’t you be angry if they sold it to others but did not allow their customers to pass it on? You gave (or sold) those cakes and/or recipes with certain freedoms attached and you would expect those freedoms to be respected when the cakes and/or recipe is passed on. In short, you want the cakes and recipe to remain as free as when you distributed them.

If you gave a cake recipe to someone ... wouldn’t you be angry if they sold it but did not allow their customers to pass it on?

An additional point to note is that when you have access to the recipe, you know what is in the cake—handy if you have that nut allergy or just don’t like them. If you don’t trust the baker then access to the recipe also means you can make your own cake and be assured of exactly what went in it.

Substitute software for cake and source code [2] for recipe and you can see what the free in “free software" means. I bet you thought the cake analogy wouldn’t work!

The advantages of having source code are similar to those for having recipes—except we’re not talking about allergies here. If you can see the source code, you can check for things you don’t like. You can personally (or have someone else) check the code to ensure it doesn’t contain any untoward bugs, back doors [3] or any other malicious code. You can also check the software’s security and integrity. Furthermore, you can also learn from the source code by seeing what does what and how. Having a recipe means not only can you make that cake but also that you can use the methods and techniques from that recipe in your own ones. If you like the way someone has implemented something in their software you can use it in yours—in accordance with the free licence. Try that with proprietary software and you might be needing a lawyer and a lot of money.

Proprietary cakes can restrict your freedom and you don’t often know until it’s too lateProprietary cakes can restrict your freedom and you don’t often know until it’s too late

What’s in a licence?

The freedoms we’re talking about are within the licence under which you receive the software. All software has a licence. Public domain software says “Do what you want with it—we don’t care". Proprietary software often has a licence which says “Use it but don’t pass it on, don’t change it and don’t try to find out what it’s made of". Free software says “Use it, change it, redistribute it but don’t stop others doing the same".

Why should you care about the licence?

At first glance you might not care about the licence. When you buy cakes you don’t stop to think if you will be allowed to give them away—you just do it and when you buy software you often don’t think about the licence restrictions.

This is where the analogy breaks down a little. When you buy a cake you own the cake—even the baker cannot take it back, it is legally yours. However, when you buy software, you do not own the software and the software company can take it back or at least stop you using it. That’s because you buy a licence to use the software and not the software itself. It’s like buying permission to eat the cake but never owning the cake itself. Of course, you have to imagine this cake never disappears even if you eat it (work with me here, I told you the analogy breaks down at this point).

Is free software licencing risky?

Some people think free licencing leaves you open to abuse. After all, what is to stop someone abusing the freedom you have given them? One reaction to this potential abuse of trust is to stop giving away the recipe and start policing what people do with the cakes as well, but that brings all sorts of additional costs. You have to stop people analysing the cake to determine the ingredients, you have to stop people reproducing the cake and passing it off as their own. You have to start with the assumption that every customer wants to abuse your trust. All this costs money and time and these costs have to be recovered—so guess where they are recovered from? That’s right, the customer, you and me.

Now you can see how much simpler (and better) life is with free cakes

Now you can see how simple (and better) life is with free cakes! The baker need not worry about whether her customers will give her recipe to their neighbours in fact she actively encourages them to do so! For the customer there’s no worrying that sharing the cakes with their colleagues will land anyone in trouble. They are freely allowed to pass the cake to others. The baker may well receive feedback and additions to the recipe, including why certain ingredients are a bad idea in certain markets.

If an individual customer wants the cake baked specifically to their needs they can change the recipe or have another baker change it for them. They can even (but don’t have to) redistribute the new version as long as they adhere to the licence and pass on the freedom.

The recipe can now reach markets that a single baker could not possibly reach and each person who uses it is referenced back to the original baker’s work. Even if you’re the type who just likes to buy cakes off the shelf and doesn’t care about the recipe you should be able to see the advantage of free licencing.

Again substitute software for cakes and you can see why we should all care more about our software licences. With cake recipes we expect this kind of freedom—why not with software? An important point to note is that (like cake recipes) free software licences do not insist you redistribute any changes you have made. If you make changes to the source code for your own (or your company’s) purposes, then you do not have to distribute them. But, if you do distribute the changes, then you must do so within the terms of the licence.

Does producing free cakes mean you can’t make money?

At first glance, it would seem that giving away your recipe is a fast way to go out of business. Why would people buy from you when they can make their own or buy from a competitor?

Again this is where the analogy breaks down a little but there are still a number of ways to make money through free licencing. For a start, not everyone wants to bake their own cakes—some of us are happy to buy them. The days of buying software in boxes at the store may be numbered but people are quite happy paying over the net. Additionally, some customers will need help with understanding or modifying the recipe; and where better to get help than from the original baker? Perhaps you could include free software in your hardware product—there are a number of broadband modem/routers on the market which do this.

Some companies use free software in their own products and have been successful in making money (Google anyone?)—but if you want to do this pay attention to the licence. Other companies have two models: one for non-profits and individuals and one for businesses. The former coming at zero cost and the latter costing money but coming with additional services and/or features that business customers require.

Finally, don’t forget you are not having to pay for all that additional security we mentioned above. You may not be passing that cost onto the customer but that will mean your product is better value. A free licence—on a good quality product—will assist in getting your software known as people will start recommending it to each other. As said, some of those will pay for it. In the end—as with anything—people will pay if the product is worth it. Nobody will buy a cake that tastes awful and makes you sick regardless of the licence!

The importance of free software

How often do you click “I agreeHow often do you click “I agree" without reading the licence?

I can’t understate how important freedom is in a software licence. That’s because like every other freedom, once you give it up it’s very nigh-on impossible to get it back. You may not have paid attention to the licence before but ignoring it means software companies will own your computer. You’ll own the hardware but they will (and often do) decide what you can and can’t do with it, and when you need to replace it.

I should have mentioned that my mother is a diabetic. She (and anyone baking for her) has to substitute the sugar in most cake recipes. My father doesn’t bake and yet enjoys the same cakes baked for my mother—cakes baked from recipes my family passes around freely. Free software does not dictate that you have to be a developer to enjoy its benefits and developers are not forced to operate outside of copyright law or good business sense to use it. Now, anyone got any cake?

Notes and acknowledgements

[1] Actually, not passing work off as your own is part of copyright law but I included it to show that free software licences are not outside of copyright they actually permit greater freedom within it.

[2] The source code is like a recipe from which you make software. It is used should you wish to build the software yourself (rather than use a pre-built version). It also means you (or someone on your behalf) can examine in detail what the software does.

[3] A back-door is where the person who writes the software deliberately leaves a way to access the software remotely. In this way, they can potentially manipulate your computer, read your data or monitor your computer usage, and usually without your consent.

The chocolate cake image used within figures 1 and 3 is adapted from an original work released under a Creative Commons Acknowledgement licence. The original can be found at http://flickr.com/photos/ktlindsay/.



Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

I'd say instead of perhaps saying that you can eat the cake (imagine cake) Perhaps saying that it's like the baker allowing you to eat as much of the particular cake whenever you come into the store, and than suddenly not allowing you...

pandionknight's picture

Thanks for this article. I have been using Linux for less than a year and it has been a real eye opener concerning free open source software. I switched to OpenOffice.org and FireFox, use GIMP and Fspot too.
I must admit to being a bit vague on my understanding of the term "Free,as in beer" that I've read a lot, and as to how money can be made from such software. Your article has now clarified this for me.

Ryan Cartwright's picture

Glad to help. I must admit it took me a while to get my head around the "free as in speech" stuff especially in relation to software. The concept of Free software is a little hard to grasp for those of us who have only really encountered the proprietary - let's be honest here - the Microsoft way.


Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

I see far too many misconceptions on the web relating to free software in this day and age. An article such as this can help with dispelling some misconceptions. Good job.

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

"The advantages of having source code are similar to those for having recipes..."

Reading your article made me realise that I've grown rather accustomed to the advantages of FOSS over the years and tend to take them for granted now. However, I don't think I'll ever stop being amazed by the power and flexibility of Emacs, and in particular, the extraordinary magic that can happen if one finds a bug in it. I think I'll do a screen capture video of the process next time I find one. Of course not all software can be like Emacs - not even most FOSS - but I think it would be illustrative.


Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

I really like this article it cleared up alot of things. I am a linux newbie but in time i will get to where i want to go.

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

I see the similarities when looking at the socio-political system. Several generations ago, the indigenous inhabitants fought wars to preserve the culture and traditions of a collective people. Under a closed form parliamentary democratic self fulfilling system, the sacrifices made have been dishonored by marginalizing the indigenous peoples in favour of promoting the status of immigrants (parasitic muslim terrorists now abuse the Western social welfare system and Africans have a propensity to defraud the system). If only those that fought the wars had the principle of free software inheritance passing down the generations.

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

The anology that the writer uses makes one understand what a free software means. A very well written article. Hats of to him.

redenex's picture
Submitted by redenex on

Wonderful article, atleast it helps us understand what free software is all about, and what we are risking while "agreeing" to end user licence agreement!

JosefDonn's picture
Submitted by JosefDonn on

Free Software and the recipe analogy...

The analogy of free software and recipes is good, but can easily be misinterpreted!
I'll explain this with thoughts by a fictional guy called Tony.

~~Tony wrote: "If you go to a bakery and buy a cake, is it unethical if you don’t get the recipe as well?"

The analogy between recipe and source code, in the way Tony presents it, is flawed.

Let me explain: the cake is the OUTPUT of the recipe. If a recipe is freedomrespecting (by allowing unrestricted use, modification, and distribution with out without modification), then this does not apply to the OUTPUT, i.e. the cake. Put another way: the cake (output) is not the corresponding source of the recipe-steps performed. (See http://hackerpublicradio.org/eps.php?id=1116 at tracktime 30:58)

To fix the analogy. Here's an example of a violation of "freedomrespecting recipes":
Assume a recipe-seller states: "all my recipes are freedomrespecting." You then decide to purchase from him a recipe-executor-black-box, and a number of recipes on USB-stick. At home you plug in the recipes-USB-stick into the recipe-executor-black-box and select "Grandma's ultraspecial chocolate cake". The executor-black-box removes some ingredients from the connected ingredients-containers (flour, sugar, chocolate, etc.). You cannot see what's going on inside, but after one-and-a-half hours... out comes a cake!
So you tell yourself: well that's great, but I want to bake this cake with my own hands and change the steps slightly. You connect the recipes-USB-stick to your own computer, expecting to find the steps. But low and behold: you find that the "recipes" are only in a machine-readable binary format, that you cannot decipher them.
This is a freedomrespecting recipe violation!!! If the recipes really were free, you would have received not only the binary format, but the steps of the recipe in human-readable english as well!

Now lets say you have acquired a freedomrespecting recipe for a cake (and here I really mean a free recipe, in that it is not obfuscated or coded; but instead a description of steps). Lets say you have a bakery and sell a customer the cake (baked according to the recipe): do you have to give the customer the recipe?
No, since the cake is the output. You are not selling the customer the steps to produce the cake.

But now you might try and apply this to software and say: "But look here: the binary program is the output of the source code. So if you pass on the binary program, you don't have to pass on the source code, right?"
This would be a misunderstanding, since the program is NOT the output of the source code. Instead: the program is merely the output of a compiler. But the binary program is a direct transformation of the source code: The steps in the program, are still the steps in the source code. We say: the source code is the "CORRESPONDING SOURCE" of the program binary.
Thus with free software, the software ... in all the forms it is distributed: binary, etc. needs to include the "corresponding source", that give one the freedom to modify it.

~~Tony wrote: "If you buy a radio, is it unethical if you don’t get the construction plans for it?"
This analogy between construction plans and source code is also flawed.
The construction plans can be free (freedomrespecting). But the construction plans are not the corresponding source of the radio: The radio does not perform the construction steps. The radio does not have a corresponding source, since it is the output of the construction steps.

~~Tony wrote: "If you buy some software, is it unethical if you don’t get the source-code?"
Depends on your view. You can certainly argue: yes. First off: the steps the program runs, are the steps that are described in the source code. Furthermore: if the program runs on a general purpose computer, then you could easily change it (lets say it is not software that is burned into a ROM for an appliance like a toaster.) Then it is only fitting that you should really be able to make use of this possibility (changing the program on your computer), and that requires a form of the program that is best suited to do that job: the corresponding source.
On the other hand: If you have proprietary software, then - even though you are running the software on a device that easily allows changes - the owner of the proprietary software has deliberately decided to make this difficult or illegal for you to do. Then only the owner controls the program, and you might be called a fool for using it.

If you buy a processor, is it unethical if you don’t get the “hardware description language"-description (HDL) of the processor?

Depends on your intent: do you want to analyze what the processor's logic is doing, and then have the possibility to make changes to the processor and create your own (with the guarantee that your logic will be on the chip [and not some fab's back-door logic])?
If you buy a processor created by a fab with modern photolithography, then you get a chip that you cannot change. In that case you don't need the HDL-description. BUT: if you buy the whole fab itself (oh: so you have those billions of dollars?!), then you have the possibility to make changes. In that case you'd be a fool, if you don't insist on getting all steps, and descriptions, etc. for making the processor chip, and being able to change it, for example if the chip happens to have a serious bug! If you cannot fix the chips hardware-bug, you'll probably be out of business very soon.

If on the other hand you buy a FPGA (not so expensive: say 500 dollars or cheaper), and the processor is synthesized on that FPGA, then you can change the hardware-description (via the HDL) and load the changes onto the FPGA. In that case, you'd be a fool, if you don't get the freedomrespecting HDL-description (e.g. in Verilog or VHDL code), in order to actually do that.

The free software definition (of Stallman [via GNU project and the FSF]), applies to the source code and to the binary program. The 2 (source and binary) are linked: the steps in the binary program are the steps in the source code: they are just a transformed version of the same thing. Except that one is easy to change (source code) and the other is incredibly difficult to change (binary program).
The source code is the corresponding source of the binary program. Free software gives you the freedom to make changes (that you can realistically realize, since that's what you can do on general purpose computers), by providing you with the corresponding source.

Author information

Ryan Cartwright's picture


Ryan Cartwright heads up Equitas IT Solutions who offer fair, quality and free software based solutions to the voluntary and community (non-profit) and SME sectors in the UK. He is a long-term free software user, developer and advocate. You can find him on Twitter and Identi.ca.