It enabled me to answer the following questions, that were posted on my blog by a guy called Tony.
If you go to a backery and buy a cake, is it unethical if you don’t get the recipe as well?
If you buy a radio, is it unethical if you don’t get the construction plans for it?
If you buy some software, is it unethical if you don’t get the source-code?
If you buy a processor, is it unethical if you don’t get the “hardware description language”-description of the processor?
Stallman sees it as an ethical issue. Maby he is ultimately right. I simply don’t know.
He’s right that sharing is a good thing.
But is it really an ethical issue whether or not you get some recipe, construction plans or source-code??
Tony wrote: \"If you go to a backery 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 you present 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 aquired 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 souce 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 souce 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 applianc 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 souce.
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 propriertary 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 possiblity 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), 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.