
Three Software Freedoms - xylon
http://www.naughtycomputer.uk/the_three_software_freedoms.html
======
mjevans
He has a valid point about restructuring the three freedoms that he did keep
to make sense. However that 'zeroth freedom', which both the FSF and he
initially forgot, is important as well.

"The freedom to run the program as you wish, for any purpose"

This is about licences that restricted possible uses of software. Just as you
are free to drive your vehicle anywhere * , and transport anything * while
using it, so to should you be free to use software the same way.

( * the point is no artificial additional restrictions, not literally
wildcard)

Multiple edits: I will never get used to the crazy custom syntax HN posts
have. It isn't pure plain text (maybe with hyperlinks), a form of psudeocode
tagging, or markdown like.

~~~
tzs
I'm not sure that the FSF considers freedom 0 to be essential anymore. They
describe it as follows:

> The freedom to run the program means the freedom for any kind of person or
> organization to use it on any kind of computer system, for any kind of
> overall job and purpose, without being required to communicate about it with
> the developer or any other specific entity. In this freedom, it is the
> user's purpose that matters, not the developer's purpose; you as a user are
> free to run the program for your purposes, and if you distribute it to
> someone else, she is then free to run it for her purposes, but you are not
> entitled to impose your purposes on her.

AGPL was accepted by the FSF as a free software license, yet it is quite
problematic when it comes to freedom 0.

Suppose I find a program that displays an interactive chess board in a window,
and lets you play over chess games that you enter by pasting in the moves.

I modify the program so that it includes a simple HTTP interface. Someone on
the network can connect to that interface, and if the person sitting at the
terminal is willing, the person on the network can play a game of chess with
the person sitting at the terminal. If I'm already a playing a game, people
who connect over the HTTP interface will be placed in a queue to wait for me
to be available.

If this program was under AGPL, I have to give my modified version to those
who play chess with me over the network.

To make that requirement be in accord with freedom 0, it is necessary to claim
that I am not a "user" of the program and/or that I did not "run" the program.

It's kind of hard to say I'm not a "user", since I am sitting at the damn
terminal using the program. Same for "run". I typed the command that started
the program running.

(Note: I've seen people argue that the person coming in over the net is a
"user" and that they "run" the program. Even if so, that is not relevant here,
because AGPL is not trying to impose any requirements on them. It is trying to
impose a requirement on me, and so is only whether or not I am a "user" and
what I did was to "run" the program that is relevant as far as determine
whether or not imposing a requirement on me violates my freedom 0).

~~~
cyphar
But you are "conveying" the software to the users, that's the whole point.
AGPL just extends the meaning of the word conveying to also include users
connecting over the network.

As for it infringing on freedom 0, I don't understand how your logic wouldn't
also apply for the GPL. I disagree that you cannot "use the software for any
purpose" with the AGPL. You haven't given an example of you being restricted
by it. If a user gave a copy of their program to another user they would have
the exact same requirement (under the plain GPL). If you wanted to run a
private copy of your modified program you just have to make it forbidden to
connect to that interface.

Also, there's no reason you cannot just provide a link to a git repo for your
modified project. Which means that you don't even have to modify your program
to distribute its source code to users.

~~~
tzs
> But you are "conveying" the software to the users

No, you are not conveying the software to people who merely interact with it
over the network. From the text of AGPL itself:

AGPL> To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through a
computer network, with no transfer of a copy, is not conveying.

> As for it infringing on freedom 0, I don't understand how your logic
> wouldn't also apply for the GPL. I disagree that you cannot "use the
> software for any purpose" with the AGPL.

Being able to "use the software for any purpose" is not sufficient to satisfy
freedom 0. As the FSF explains:

FSF> The freedom to run the program means the freedom for any kind of person
or organization to use it on any kind of computer system, for any kind of
overall job and purpose, without being required to communicate about it with
the developer or any other specific entity.

Note that you have to be able to use it for any purpose _without_ being
required to communicate about it with the developer or any other specific
entity. If my purpose with the program from my example is to play chess from
my computer with remote people, I am not able to do that under AGPL unless I
communicate my modifications to them.

~~~
cyphar
> No, you are not conveying the software to people who merely interact with it
> over the network. From the text of AGPL itself:

Yeah, you're right it's not called "conveying" in the AGPL. But the whole
point of section 13 is that it's _like_ conveying. I'm not a lawyer and I
doubt you are, so the distinction is without a difference IMO.

> Being able to "use the software for any purpose" is not sufficient to
> satisfy freedom 0. As the FSF explains:

> Note that you have to be able to use it for any purpose without being
> required to communicate about it with the developer or any other specific
> entity. If my purpose with the program from my example is to play chess from
> my computer with remote people, I am not able to do that under AGPL unless I
> communicate my modifications to them.

I don't agree with that reading of what the FSF says. "developers or any
specific entity" is referring to telemetry. If you have to give a copy of the
code to all users of software you've exposed on the network, you are not
sending it to "developers or any specific entity" \-- it's just the users that
you're communicating with over the network.

The whole point is that you can _choose_ to not share your code with anyone --
meaning that you can choose to not offer a network service to anyone.

~~~
pseudalopex
> "developers or any specific entity" is referring to telemetry.

I generally agree with your reading, but I think this part more likely refers
to things like registration.

~~~
comex
There are many oldish licenses that allow modifying code but require sending
all modifications to the original developer of the software. I believe that's
what's being referred to. Some of them are listed in the GNU license list [1]:
AT&T Public License, Reciprocal Public License, Open Public License, eCos,
Plan 9, APSL v1, and (not old, and hence obnoxious) the Oculus Rift SDK
license.

[1] [https://www.gnu.org/licenses/license-
list.en.html](https://www.gnu.org/licenses/license-list.en.html)

------
dkbrk
The author makes a serious mistake in calling Freedom 0 "just silly". He
doesn't seem to _disagree_ with Freedom 0, just considers it obvious and
trivial ("I mean of course I can use the program as I wish").

An example demonstrating that this freedom is _not_ obvious, even to people
who believe in "free software" is the "Hacktivismo Enchanced-Source Software
License Agreement" [0]. To quote from the FSF [1]:

> The Hacktivismo Enhanced-Source Software License Agreement (HESSLA) is a
> software source license that tries to put restrictions of ethical conduct on
> use and modification of the software. Because it restricts what jobs people
> can use the software for, and restricts in substantive ways what jobs
> modified versions of the program can do, it is not a free software license.
> The ironic result is that the community of people most likely to feel
> sympathy for the goals of the HESSLA cannot contribute to HESSLA-covered
> software without violating its principles.

> The restrictions in the HESSLA prohibit specific activities that are
> inexcusable: violations of human rights, and introduction of features that
> spy on the user. People might ask why we do not declare an exception for
> these particular restrictions—why do we stick to the general policy of
> rejecting all restrictions on use and on the functionality of modified
> versions?

> If we were ever going to make an exception to our principles of free
> software, here would be the place to do it. But it would be a mistake to do
> so: it would do harm to free software movement and would achieve nothing.
> Trying to stop those particular activities with a software license is either
> unnecessary or ineffective.

[0]:
[http://www.hacktivismo.com/about/hessla.php](http://www.hacktivismo.com/about/hessla.php)

[1]:
[https://www.gnu.org/licenses/hessla.html](https://www.gnu.org/licenses/hessla.html)

~~~
xylon
I, the author, have added a clarification on 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.

------
crististm
I like free software just as much as the next guy and I don't find it
appealing to remove a freedom just for the sake of a blog post.

I mean, why is it implicit that I can run a program but e.g. distributing it
is not?

Next time I get some free AI software I will find that I don't actually have
the freedom to put it in my car/tractor/vacuum/etc because software license
says so, not to mention the hardware locks that I would have to overcome.

Edit:

Example: BMW decides to release their AI software driving their car under a
"free software" license. In this hypothetical situation, Audi would not be
allowed to use BMW' software because the license restricts this. But now,
because _using_ the software in any way you wish is no longer an explicit
freedom, nobody could claim that BMW software is not __FREE__

I know of at least one GPL licensed project for audio editing and synthesis
that has an explicit ban on using it in commercial applications.

~~~
Symbiote
> I know of at least one GPL licensed project for audio editing and synthesis
> that has an explicit ban on using it in commercial applications.

Then either it is not GPL licensed, or the restriction can be ignored (see
section 7 of GPL v3).

[https://www.gnu.org/licenses/gpl-
faq.en.html#NoMilitary](https://www.gnu.org/licenses/gpl-
faq.en.html#NoMilitary)

~~~
crististm
Took me a while to find it but here it is:

[https://www.linuxsampler.org/faq.html#commercial_products](https://www.linuxsampler.org/faq.html#commercial_products)

[http://svn.linuxsampler.org/cgi-
bin/viewvc.cgi/linuxsampler/...](http://svn.linuxsampler.org/cgi-
bin/viewvc.cgi/linuxsampler/trunk/README?view=markup)

It's still not clear with me how they reconcile this restriction with GPL

~~~
jimktrains2
The GPL contains an optionally removable but there by default "or any later
version" clause. This doesn't appear to remove that clause, and so the GPLv3
contains a "If the Program as you received it, or any part of it, contains a
notice stating that it is governed by this License along with a term that is a
further restriction, you may remove that term." clause, so it can just be
deleted?

~~~
jimktrains2
I wish people would comment instead of down voting; it's very difficult to
have a discussion when people don't voice their thoughts.

Nothing I said is factually wrong. The GPL, the version they use, has the
upgrade clause, and v3 lets me remove restrictions on use.

~~~
grzm
Or at least comment in addition to down voting :) I up-voted just to balance
things out. Given the neutral fact-reporting nature of your comment, I would
have just passed it over otherwise (no hard feelings, okay?)

~~~
jimktrains2
> Or at least comment in addition to down voting :)

Yes, that is what I meant :)

> I up-voted just to balance things out.

I'm always hesitant to seem like I'm "complaining about down votes" when all I
want is an actual discussion. I'm not trying to fish for anything; I honestly
want to know if I'm wrong, but more importantly why!

~~~
grzm
For the same reason I've sometimes included a statement like "If you choose to
down vote, I'd appreciate it if you'd also take the time to reply in a
comment. I'm interested in hearing what you think!" I want to make clear that
I'm not opposed to people down voting me. I want to improve my comments, and
that's hard to do if you don't know what you're doing wrong.

Edit to add: Oh, and to be clear, I didn't read you as complaining.

------
hvidgaard
Am I the only one sitting here, thinking that I value the 4 freedoms, but
thinking that software vendors does not owe that to us in any way?

I use free software where it makes sense. I don't use it for my desktop,
because it cannot do what I need it to do. I use it for my 3d printer because
it can do what I need it to. I pay (at least indirectly through my MSDN
subscription at my job) for Windows, and it it suddenly stops working that is
it, and I'll have to figure out a different solution.

I don't like that the ECU of my car is closed down, but trade secrets an all,
I can understand. I would love to be able to at least look, not necessarily
modify the software, I'm not qualified to do that and I don't want to void my
warrenty. But this is a trade secret, of course it is not open for anyone to
look at.

~~~
mikekchar
> Am I the only one sitting here, thinking that I value the 4 freedoms, but
> thinking that software vendors does not owe that to us in any way?

A lot of people feel that there is an absolute sense of justice. What do the
vendors owe us? From my point of view, whatever they owe us is a factor of the
societal norms.

My interpretation of the idea of free software is that software that is not
free potentially harms society. The kinds of things that vendors/governments
can do with the power they gain from denying software freedom to their users
is detrimental to us all. In that way it behoves us to strive for software
freedom.

Do they owe us? No, I don't think so because it is not part of our cultural
norm. It would be nice if it was, though.

~~~
hvidgaard
When designing an algorithm, you pour hours upon hours into creation and
testing. If the source is freely available, you basically hand this over to
other people to copy. We would completely hamstring R&D in the private sector
if we don't allow them to guard this secret.

Now if govenerments actually posted money into basic R&D in collaboration with
the private sector on the premises that the work will be public domain, this
might not be a problem, but when they pay for it themself, it's foolish to
belive they want to share in this market economy. I could see a model where
all e.g. car manufactures collaborate on creating an ECU software company,
they all pay to, but it requires ALL manufactures to participate, otherwise
someone enter the party, without paying the entrance fee. It's a classic
prisoners dilemma - if all play nicely, it's a net benefit for all of them,
but if one doesn't it's a net loss for all.

I would like a "Rights of ownership" define access to the source code, I just
cannot see how.

~~~
mattmanser
Hours upon hours is the problem, hours upon hours isn't very long. Putting a
couple of days work into something isn't something that should be patent-able.
It's practically obvious.

I was thinking about this the other day, the basic problem with software
patents is that almost all problems are trivial to solve as soon as you
actually ask the question. It's just that there are so many questions in
software engineering. Most programming problems are fairly easy to solve for a
smart person. Many programmers have come up with virtually ideal solutions
very quickly, people matching grep's search speed in days or came up with
almost an identical shuffling algo as the ideal one in a couple of minutes.

Until you have a storefront and logged in users, you can't ask the question
"how can my users quickly buy something online", and come up with a one-click
button.

And so instead of being awarded for hard, complicated work that took months or
years of man-effort, patents are being awarded for being the first to ask
questions that are simple to solve with a few hours work.

~~~
hvidgaard
When I said "hours upon hours" I was thinking about years of work to create or
prove something. If you cannot protect and benefit from that work, private
companies are not going to do it.

We agree on the sad state of software patents right now, but it seems that
there is some movement against it.

------
mordocai
The biggest exception for freedom 0 i've seen is the license on the original
JSON implementation
[http://www.json.org/license.html](http://www.json.org/license.html).

> The Software shall be used for Good, not Evil.

The JSON license is not considered a free software license due to this
violation of freedom 0(not to mention all the problems with definition
including the fact that many things could rightly be considered neither in
Good or Evil and the license actually explicitly says it must be used for
Good).

~~~
hueving
IIRC IBM got an exception from the author to use it for evil.

~~~
zyx321
"IBM, its customers, partners, and minions."

Which reveals what a farce the 'no evil' clause is, since IBM has in the past
sold typewriters to the Nazis, and probably has no qualms to do business with
more modern evils either.

------
thescriptkiddie
The author's dismissal of freedom 0 makes me a little uneasy. It is arguably
the most important of the Four Essential Freedoms.

------
dvh
No matter how I counted, I always end up with 5: use, study, share, modify,
share modifications

~~~
jupiter2
> I always end up with 5: use, study, share, modify, share modifications

I wish the author had expanded the four freedoms (for clarity) instead of
trying to condense it. I just don't think it effectively targets the different
limitations that exist in software.

The categories you listed above are so clear and concise that further
explanation seems unnecessary:

The 5 software freedoms in just 6 words.

It does a great job of breaking down the areas where I have seen limitations
imposed by other software packages over the last three decades.

Even the first item - use - which at first glance may be the least
troublesome, is riddled with limitations related to running on specific
hardware, under certain conditions (non-commercial, certain networks, etc).

Final thought: I wonder if this list could be further expanded with a ' _No
Software Patents_ ' or similar item - as it relates to _Software Freedom_
(maybe this is just redundant?).

~~~
dvh
Patents are in use, if there are patents you can't use it (without some sort
of licence for those patents)

------
kristianp
Ok so this is the 'Information wants to be free' based list of freedoms. It's
too narrow, only applying to OSS.

I think we need a list of rights that does more than cover the OSS-ness of our
software.e.g

Privacy of personal information.

1\. Use software without having to login to facebook or google to do it. e.g.
Android apps.

2\. Sign up using credentials (e.g. email or phone) that cannot be sold to
other parties.

Copyright

3\. Be able to sell software without it getting freely redistributed contrary
to the license.

4\. Be able to reverse engineer commercial software.

Open web

5\. Discourage web pages that are only available through social networks, e.g.
small businesses using facebook pages.

6\. Somehow reduce peoples dependence on Facebook as their primary online news
source.

------
_ph_
I fully agree with most points made. But there are some caveats:

\- there are quite a lot of commercial software packages around, which depend
on constant paid programmers work to keep up to date. Without a guaranteed
revenue stream, those would not exist.

\- if people are free to modify all software, liability questions can arise. I
am mostly thinking about any kind of firmware, like the one controlling cars
or any other software which has the potential to create expensive if not
disastrous accidents when malfunctioning.

There is some work needing to be done addressing those issues before we can
have a completely free-software world (which I would like to have).

~~~
stevepurkiss
Your caveats are age-old FUD!

Many people are paid to work on Free Software, companies like RedHat re Linux
and Acquia re Drupal are two examples.

If by releasing your code suddenly means a whole bunch of people suddenly
spring up and start maintaining it that's fantastic as it means your
maintenance costs have disappeared and your users will be free and better off.
If you can't find anything else for your staff to do of value, then your
business deserves not to exist and you should set your workforce free to do
something of value.

As for the firmware argument, you are mixing free code and security.
Proprietary software is far worse for this, examples include pacemakers which
don't cope for pregnant women but can't be reprogrammed, and of course the
recent Volkswagen incident. You should be able to see the code which runs
anything - especially cars which have to make life and death decisions, and
security can be provided by comparing checksums during installation and use.

If you really would like to have a completely free software world then please
learn more about it and stop the FUD spreading ;)

~~~
_ph_
Sorry, my arguments were not meant as FUD, but as challenges to be solved. I
like the idea of every piece of software being free, but those points need a
solution to make that work. I am of course aware of Red Hat and its business
model. It mostly works, because there needs to be a "standard" distribution
for commercial Linux platforms. But there is expensive software sold to
corporations where the open source model just wouldn't work. Software, which
costs tens of thousands per seat, where there is almost one developer per
user. This eco system would break apart.

And for the second point, you misunderstood me. I would be very happy if every
firmware would be open source, so everyone can see how the device works. But
whether it is ok, that every user is free to change the installed software is
a different question. If you brick your TV changing the firmware, that is up
to the user. But safety-relevant software is another thing. At minimum,
liability is affected, but for example for cars, they might need to be
recertified before they can be used on public roads again.

------
mlinksva
The best thing about this is it doesn't hector readers about features of their
individual consumption or production (e.g., licenses). The call to action at
the end instead is:

> 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.

------
joesmo
"Also Freedom 0 is just silly I mean of course I can use the program as I
wish."

Tell that to people spending time in jail for using a program in a way that
was frowned upon by government. Clearly the author hasn't spent much time
thinking about these topics.

~~~
stevepurkiss
Sadly no software license will stand up against corrupt governments, Freedom 0
is there to stop the creator of the software or derivatives thereof exerting
control over the user.

------
userbinator
_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._

This is an argument which I think could go away if more people knew reverse-
engineering, and decompiler technology has also been constantly improving in
the meantime. The freedom to study and availability of source code are related
but not entirely the same thing; regardless of legality, people have been
studying and modifying software for _decades_ without source code. One great
example of this is in security research, where plenty of vulnerabilities are
discovered without needing to obtain source. In fact I'd argue that sometimes
it's better to not use the source, since it could be somewhat misleading ---
whereas the binary, the actual instructions that execute, is _the truth_.
Thus, one can have all those freedoms without having source code.

 _It was not possible for third-parties to provide security support, because
Windows is proprietary software, lacking all of the freedoms._

Look at the various unofficial patches available. They might not be legal, but
they are definitely possible and made without access to the original source
code.

As the saying goes, "Source code? We don't need no stinkin' source code!" ;-)

~~~
leni536
What about restrictions on reversing? Like [1] and [2].

[1] [http://www.wolfram.com/legal/agreements/wolfram-
mathematica....](http://www.wolfram.com/legal/agreements/wolfram-
mathematica.html) (Prohibited uses, b.)

[2] [http://maple.soft112.com/eula.html](http://maple.soft112.com/eula.html)
(7.)

