The Three Software Freedoms

27th November 2016

Here are the Four Software Freedoms, as published by the GNU project. A program must have all four freedoms to be Free Software:

  1. The freedom to run the program as you wish, for any purpose
  2. The freedom to study how the program works, and change it so it does your computing as you wish
  3. The freedom to redistribute copies so you can help your neighbor
  4. The freedom to distribute copies of your modified versions to others

I think it's unfortunate that they decided to zero-index the list... I mean it's really confusing that freedom 1 is the second freedom and freedom 2 is the third freedom etc.

I also think it's unfortunate that they decided to shoe-horn two freedoms into freedom 1.

Also Freedom 0 is just silly I mean of course I can use the program as I wish.[clarification 29th Nov]

And we might as well combine 2 and 3 together since they're so similar.

Also I don't know why they use the term "program". I mean the software might be an OS; and people rarely describe an Operating System as a program. I think the term "software" is better.

Here I present a sanitised version, which I will use for the rest of this article:

  1. The freedom to study the software
  2. The freedom to modify the software
  3. The freedom to redistribute the software, modified or unmodified

So, why is each of these three freedoms important?

1. The freedom to study

I think this is the most important freedom. Computers are not toys anymore, people use them extensively and for important things. Therefore it's inappropriate for us to be using software that neither us, nor anyone in our society or even our government can read. We need to be able to know what it does, and to do quality or security audits.

The freedom to study is normally taken away because the software vendor keeps the human-readable version of the code secret, only distributing the compiled program.

I assert that there is no legitimate reason for a software vendor to keep the code of their software secret. If they are so ashamed of their code then they should fix it up. Or if they really want to stop people redistributing or re-using their code then they can use copyright to take away freedom 2 and 3, without taking away freedom 1.

Personally I think it should be illegal to distribute software with the code kept secret.

2. The freedom to modify the software

This freedom is almost as important as freedom 1, because if we cannot modify our software we cannot maintain it. If a problem is found in an important piece of software, it's unacceptable for us to be dependant on the vendor to fix it. The vendor might be unwilling, incompetent or slow, or just bankrupt.

A legendary example is what happened in 2014. Microsoft stopped providing security updates for Windows XP, even though hundreds of millions of people were still using it. It was not possible for third-parties to provide security support, because Windows is proprietary software, lacking all of the freedoms.

As an industrial example; if a safety problem is found in some code that controls a nuclear power station and we can't fix it... Do you think this is fine and great?

3. The freedom to redistribute the software, modified or unmodified.

Freedom 3 is just as important as freedom 2, because without the freedom to redistribute, we cannot share our code changes/updates/fixes with non-programmers. Non-programmers are the majority of computer users!

However, freedom 3 brings a big problem: if we have the freedom to redistribute software, it gives us permission to share it with each-other without paying. This can make it difficult for vendors to get payed for their product because everyone pirates it!

The solution is for people to grow out of their pirating habits, and for vendors to write software so good that people WANT to pay for it.

Why Free Software is great

Hitherto, this article has mostly focused on why it's bad to lack the software freedoms. But there's another point to discuss too: why Free Software is great!

Well for a start it allows community software development, which is so much more interesting than just watching the software companies constantly rewrite and tweak their stuff just to make it look updated.

The fun of collaborating on Free Software is what has driven the Free Software community to write and maintain thousands of Free Software programs and operating systems since the 80s. I run Free Software on all my computers[1] and it's great!

Also Free Software is empowering to the people, which is great if you're an anarchist.

Also, being a Free Software enthusiast is probably a much cheaper hobby than being, say, an apple fan-boy, or a gaming enthusiast. In practice, most Free Software doesn't cost anything so it's just a matter of finding great hardware that works with Free Software!

Should government get involved?

The government can help us by making software companies distribute the source code. They can say it's "in the interest of national security". And they can sort out the patent system (there are various problems with how the patent system handles software which are out of the scope of this article). So when you chat to your MP please mention this.

Now be free and have fun!

[1] except the ECU in my motor-scooter

[clarification 29th Nov] comments sent on various link aggregators and email expressed dismay at my disregard of freedom 0, so I feel obliged to clarify why freedom 0 is unnecessary:

Basically I value Free Software for two reasons:

  1. I think it's irresponsible and dangerous for us to be doing all of our computing using technology we cannot understand or maintain.
  2. I think community software development is great fun.

Freedom 1, 2 and 3 are all needed for these things, but freedom 0 is not.

If you want to do x, and the license on some software forbids x, then you use a different software. It's no different than if the software were simply unsuitable for x.