Hacker News new | comments | ask | show | jobs | submit login
Three Software Freedoms (naughtycomputer.uk)
76 points by xylon on Nov 27, 2016 | hide | past | web | favorite | 58 comments



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.


"You are free to drive your vehicle anywhere for any purpose" seems to be going away:

https://electrek.co/2016/10/19/teslas-new-self-driving-car-c...


It is already gone for many cars.

Some higher end cars will detect your location on various racing tracks and void your warranty.

Cars equipped with OnStar cam be shutdown and located remotely.

Famously, the Nissan skyline also voids your warranty if you use the launch control feature more than a handful of times.

Seems pretty innocent so far, but this type of thing should be banned before it gets worse. Right now there's zero manufacturer incentive not to hide these kinds of things in the firmware.


The car can be used anywhere, but the warranty (rightfully) is a different issue.

Note also that the car can't "void your warranty" in any meaningful way, all it can do is record if certain actions occured; and that's orthogonal to the warranty issue. Driving on a racing track makes the warranty just as void (or not) if the car didn't record anything, it's a legal matter depending on the warranty conditions and your local law, all the car provides is some more information that can help establish what the facts are.


The OnStar is an obvious example.

But how does voiding the warranty restrict your ability to drive where you want?

It's the vendor simply saying "you're doing something we did not intend you to do with the product, so it's on you if you fuck up". How does that infringe on your freedom to drive where you want?


Ironically no. You still are free to drive your Tesla anywhere for any purpose. The limitation is only for the future self-driving feature.


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


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.


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


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


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


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


Maybe I read it differently. When I read "the developer or any other specific entity", I don't think that the network users count as "specific entities"; they are other users of the software, and you have control over exactly who those people are. Neither the original developer of the software, nor any specific (i.e. predetermined, exact) entity must be communicated your modifications, only those you choose to put yourself in that situation with.


Actually, Richard Stallman is quite clear about it:

https://www.gnu.org/philosophy/programs-must-not-limit-freed...


If it helps, use the phrase "making available" instead of redistributing. For example, a movie theater don't simply use a movie, or else anyone who bought a copy could start up their own theater. If you are providing a way for others to experience the artistic work of the author, you are going to run into permission problem if all you got is the permission to run it.

There is a bunch of similar situation where copyright law and licenses interacts when more than one user are using a single copy. Radio for example is legal to run in Sweden, but not played aloud in public areas (like a restaurant). A musician can run other artists music sheets around a handful of people, but need permission in case they do so on a concert. And movies as mentioned earlier is legal to run in a household without getting more than one license, but not when it could be considered a crowd.

The only problem with "making available", is that the term is horrible from a philosophical perspective. Copyright for cases where no copy has been created is much closer a market regulation than the classical theories of author rights.


> I modify the program so that it includes a simple HTTP interface.

Now your program supports two different shells[1]. Your original window-style (probably graphical) user interface is a popular type of shell. The new shell uses HTTP for transport, probably in a style derived from the block oriented terminals like the IBM 3270[2].

While these are very different types of shells which support very different sets of features, the are both common ways to interact with computers. The person using the HTTP interfaces is using a shell on your computer to run programs, and thus is a user of the chess program. The limitation of only being able to run one program only makes the HTTP interface a very limited shells, which isn't relevant to the {,A}GPL.

> I've seen people argue that the person coming in over the net is a "user"

Yes, because the person coming in over the net is a user if the program. The person that is at the local terminal is also a user of the program. Being a user doesn't require physical locality or a particular type of interface.

> because AGPL is not trying to impose any requirements on them

Correct. The GPL licenses are copyright licenses, not some sort of EULA. They only impact the person who is distributing the software, or in the particular case of the AGPL, the person providing the network service. The latter is important because of the trend bypass the user's* freedoms (even the remote user). The AGPL closes the loophole of using a Service as a Software Substitute (SaaSS[3]) to avoid the usual distribution of the software.

> It is trying to impose a requirement on me

Only if you allow other people to use the software. (or if you distribute it and need a license for copyright reasons)

> imposing a requirement on me violates my freedom

No requirement is imposed on you for using the software. The AGPL only requires that you provide the other people that uses the software through your new interface the same freedom.

[1] https://en.wikipedia.org/wiki/Shell_%28computing%29

[2] https://en.wikipedia.org/wiki/IBM_3270

[3] https://www.gnu.org/philosophy/who-does-that-server-really-s...


> Correct. The GPL licenses are copyright licenses, not some sort of EULA. They only impact the person who is distributing the software, or in the particular case of the AGPL, the person providing the network service.

Distribution is one of the exclusive rights copyright law gives to the copyright owner. Hence the need for a license from the copyright owner to allow others to distribute.

What copyright rights do you think are implicated in interacting with a program over a network, particular in a case like my hypothetical chess program where the interaction is just exchanging small amounts of data? The only one I see that can maybe apply is the public performance right. How that applies to computer programs is not clear under current caselaw. My recollection is that it is generally believed it would apply to things like video games, where someone observing the "performance" would be seeing copyrighted elements of the video game. For things like databases, communications programs, and the like, trying to apply the public performance right is much more questionable.

Calling GPL a copyright license makes sense, because the acts that trigger obligations under GPL are acts that require permission from the copyright owner. AGPL triggers on those, and on providing network access, which unless the public performance right can be made to apply does not generally require copyright owner permission. That puts AGPL into EULA-like territory.

> The latter is important because of the trend bypass the user's* freedoms (even the remote user). The AGPL closes the loophole of using a Service as a Software Substitute (SaaSS[3]) to avoid the usual distribution of the software.

That's Stallman's updated position. His earlier view was that software (even proprietary software) on a server does not limit the freedom of those who use the program remotely:

RMS> ...a proprietary program on a web server that somebody else is running limits his freedom perhaps, but it doesn’t limit your freedom or my freedom. We don’t have that program on our computers at all, and in fact the issue of free software versus proprietary [only] arises for software that we’re going to have on our computers and run on our computers. We’re gonna have copies and the question is, what are we allowed to do with those copies? Are we just allowed to run them or are we allowed to do the other useful things that you can do with a program? If the program is running on somebody else’s computer, the issue doesn’t arise. Am I allowed to copy the program that Amazon has on it’s computer? Well, I can’t, I don’t have that program at all, so it doesn’t put me in a morally compromised position.

(http://radar.oreilly.com/2006/08/open-source-licenses-are-ob...)


> The only one I see that can maybe apply is the public performance right. How that applies to computer programs is not clear under current caselaw.

Anyone is free to bet money on it. Streaming cases has been done in several countries, and the outcome was expected. The argument for lets-play often discuss classical assets like images and sound, but the purpose of the artistic work in a game is the full experience. A networked chess program that anyone can use for free would be more akin to a pirate version of Steam than a lets-play. The installation directory just happen to be remotely rather than locally.

> interaction is just exchanging small amounts of data

I can encode a video to be just small amounts of data in comparison to the original. I have yet to see any infringement case where the amount of data is relevant, except in the pirate bay case where that argument failed.


When editing before posting, I omitted some qualifications I had intended to include. By "small amounts of data", I meant small amounts of data that contain no copyrighted elements whose copyrights are owned by the owner of the program's copyright.


When it comes to software, "no copyrighted elements" is not clearly defined.

For example, the output of a word processor is clearly not copyrighted by the word processor author. Most people agree to this.

However, if I created a remote login system where millions of users could access one and the same windows word installation, I would likely get sued by Microsoft. Even if the small amounts of data that is streamed through remote control has no copyrighted elements that is owned by Microsoft, the fact is that I am evading the copyright of Word and undermining the market value for the program (or at least thats what I suspect the lawyers should say).

This is generally where clear lines end, and the fuzzy world of legal opinions of juries/judges starts. The output of a word processor program not the same as the output of remote controlling said program. Evading the copyright through remote control doesn't sound as something a judge would look favorable on, and in the end it is the infringer that need to convince the judge and jury that their activity is within the license/law, or that the usage is within reasonable expectations.


One trick to get around the use of asterisk for italicizing test for footnotes, use a character like this one: † I keep a copy at the top of a file that I always have loaded in my Emacs.


I've created the program symbol2unicode¹ for that. You can enter ascii representations of a symbol, say ->, and you get the unicode symbol (→). It has a CLI interface and a web interface. I keep it always around in a terminal tab and made some Vim binding as well.

¹https://github.com/htdebeer/symbol2unicode


Cool!

I don't play the Node.js game, but I'll see about polishing my 2 decades rusty Javascript web page experiences and see if I can't make this into a simple web page which I can keep a tab always loaded with, I pretty much only use Unicode characters for web comments and the like. Although if this makes it a lot easier ... and I suppose I should see if Emacs has such a feature.

Anyway, thanks!



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

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


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.


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.


> 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


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

https://www.linuxsampler.org/faq.html#commercial_products

http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/linuxsampler/...

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


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?


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.


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?)


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


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.


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.


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


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.


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.


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.


I'm not sure about this. In the prisoners dilemma, you may be at a loss if you don't care about others. Likewise, you may be at a loss if you don't value enough these freedoms for others when building and giving 'things'.


The biggest exception for freedom 0 i've seen is the license on the original JSON implementation 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).


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


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


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


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


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


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


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.


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


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 ;)


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.


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.


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


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.


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!" ;-)


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

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

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


You're likely not going to be able to make any very large modifications to a big project by doing this though.


Sure, but in many languages, such as C++ _a lot_ of information can be checked and then thrown away at compile-time, leaving an artifact that might not be all that understandable, especially for new people.




Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: