There are a lot of ways you could define “free software”. For example, you could say Candy Crush or CCleaner is free software, because you can install it for free.
When people say that software is “free as in freedom”, or “libre”, they mean something else. Under these definitions, neither Candy Crush nor CCleaner would be free software. In order to be free by these definitions, software generally needs to fulfil these four criteria:
- The ability to run the software for any reason, without restrictions. This means that the free version of TeamViewer is not libre, as it tells you that you must purchase a license to use it commercially.
- Being able to study and modify the program’s inner workings. This requires the source code being available – just as you can’t make your own version of a store-bought cake without the recipe (or some clever reverse engineering), it’s necessary to have the source code readily available to easily modify a program. Software that doesn’t provide the source code thus cannot fulfil this term, and software like Snapchat, which bans users for running modified versions, is definitely not one of these.
- Being allowed to redistribute the software. If you buy a MacBooks, you can install updates for free, but you certainly aren’t allowed to redistribute these updates.
- Being allowed to distribute modified versions to others. If you’re not allowed to download the app, make some changes, and send that to people, it breaks this rule. The YouTube app is free, but Google doesn’t allow users to make their own changes to it and distribute it to others.
All of the software mentioned in those four basic rules is “free”, but not free. All of the software mentioned goes against every one of the four freedoms. The distinction between “freely available” and “free to do as you please with” is often signified by saying “gratis” or “libre” – gratis software is free as in “free donuts”, but libre software is free as in “freedom”.
As with anything, it’s hard to make clear cut rules to define what is and isn’t an example of libre software. The Cooperative Software License (CSL) prohibits most companies from using the software, but is otherwise entirely libre. This violates the first rule above, because certain people aren’t allowed to use the software, but I would say it’s still a free software license (just a less permissive one), although many – including the Free Software Foundation – would disagree with me on that.
While the Free Software Foundation argues that the CSL is not free because of its restrictions on who can use it, they also argue that obfuscated JavaScript is not free because even though the source code is available, it has been intentionally made much harder to read and modify. Going back to our cake example for earlier, this is like if your storebought cake came with a recipe, but it was written in hard to read cursive handwriting and all the ingredients had been replaced with generic names, like “ingredient 6” and “ingredient 4”. It’s still technically a recipe, and if you can figure out what ingredients are being referred to, it’ll still work, but the FSF would argue that that doesn’t count. For a computer, obfuscated source code and non-obfuscated source code are the same thing – a computer doesn’t care whether you call a button a pickle, it’ll still understand that if the user clicks on the pickle, something needs to happen. But for a human, obfuscated code is much harder to read than plain code, and thus the FSF considers it different.
And finally, you might be interested in the Free Software Foundation’s article on what is and isn’t free software. This is where those four rules came from – the FSF calls them the four essential freedoms. It’s worth noting that they again outline here that “Obfuscated ‘source code’ is not real source code and does not count as source code.”
Neither of these links are necessarily an endorsement of the content contained within. Although the CSL page is hosted on my own server, which is an endorsement anyway.