Software Libre Foundation
A computer program is nothing more than a collection of instructions that explain to a computer what it should do. These instructions can be written down in a human readable language called a programming language.
A collection of these instructions is called a computer program, or program for short. To make these instructions readable to a computer they must be processed by a translator program usually called a compiler. Unfortunately this translation step makes it very hard for a human to extract the original instructions from the translated program.
In the early days of computing it was customary to distribute both the human readable and the computer readable version of a program. Human nature being what it is, there will probably be flaws in the program. If one had an understanding of programming languages, it was possible to remove the flaw, re-translate the program and instruct the computer to run it again without the flaw and hand over the fix to other people that were experiencing that flaw using the program .
The human readable version of the program is called the source-code, and the computer readable version is called the binary.
It is somewhat analogous to recipees
and dishes or score and symphonies, where the recipe and score are the human readable forms, and the food and symphonies the binary ones, with
cooks and orchestras translating one into the other
At some point software producing companies starting prohibiting the distribution of source-code, probably attracted by the large margins that selling
binaries which can be reproduced at virtually no expense give.
In other words, like mythical dragons, they were hoarding. Not a pile of gold and gems, but something far more valuable, namely knowledge.
Not extraordinary magic knowledge, but knowledge that was quite common, and not with the noble goal of protecting it against evil forces either,
but to make other people dependant on common knowledge.
They didn't even have to do an extrordinary test of faith and courage to aquire that knowledge, but they simply used the accidental incompatibilities of human-speech and computer-speech. Doing this meant that the software flaws would remain unfixed even in skilled hands, and that the end-users of that software would have to suffer these flaws and be dependant on the people who controlled the source-code.
Ofcourse they were allowed to do this, since frankly, most of them did write the source-code to their programs. It just
isn't a very nice thing to do, trying to control people who use your software.
Unfortunately they managed to convince the users who did not know a programming language, that for them this source-code was useless anyway. And eventually they convinced the normal computer user that not making the source-code available made no difference to them.
"Fortunately", for programmers it is immensely frustrating to use a piece of software with a flaw that could potentially be easily fixed, but to be forbidden and obstructed to actually fix it.
This frustration is what gave birth to the Free Software movement and subsequent community.
This movement came to life because there were people who had experienced getting source-code with their binary programs, and how usefull it was to fix the flaws and to be able to share this source-code with others. What they experienced now was that they were forbidden to function to the best of their abilities, since they could not use the software they needed to do their job to its full potential.
Instead they had to work around the flaws and wait untill the vendor granted them a new version which hopefully had that flaw removed.
They had to work with "equipment" that was crippled and sub-par for the job they intended it to do.
So they started building a body of software of which they were allowed to make fixes in the source-code and hand over the source code to others.
In the beginning the majority of this body of software was mostly usefull to people whose business with computers were the computers themselves. But since people were allowed to add features and fix flaws themselves, this body of software grew and the number of flaws were reduced quickly.
At a certain point there became programs available that were used by normal computer users such as spreadsheets, word processors and what-not. These programs grew as well since programmers use these sort of programs too or they were asked to build or improve such a program, but without losing the advantages of quickly being able to reduce flaws or adding features. .
This is when normal users who don't know a programming language noticed that even if they don't use the source code, it's still benificial to them and the job they're using that software for.
Their using these programs attracts more programmers, and there being more programmers makes such programs better and more numerous, which in turn attracts more users.
These days there are complete software environments which allow for fixing flaws and adding features, and helping others who use that software to do their job.
When we speak of "Free Software" it means you're free to fix flaws in software, free to add features to that software,
free to distribute that software to others, and free to use the software as you see fit.
In other words, Free Software grants you rights to:
and not to be obstructed with these in any way.
There are many different explanations, and even interpretations, of the term "Free Software" of which
the most widely known ones can be found on the websites of the
Free Software Foundation and
Open Source Initiative.