The phantom fifth freedom

Not for the first time, I’ve seen the suggestion in the echo chamber that Mono packages should be moved from Debian into the non-free repository, which is not formally part of Debian. The reason, as it so often is, is patents – specifically this time, the searing risk posed to Debian and its users that Mono’s packaging does not (and technically could not without forking from upstream) provide base class libraries which implement only the content of ECMA-335 4th Edition. As I understand it, this implies three things about the suggestion/demand: firstly, that the individual in question believes that Mono end users are at risk from patent litigation from Microsoft Corp because Mono’s implementation of Microsoft.NET beyond the content of ECMA 334/335 infringes on Microsoft patents; secondly, that the Microsoft Community Promise which promises not to assert legal claims over third party implementations of ECMA-335 4th Edition (and ECMA-334 4th Edition which defines the C# language) would render a pure ECMA-only runtime safe if it existed (which it does not); thirdly that without the protection offered by the Microsoft Community Promise, the source code licenses of Mono are irrelevant – the patent risk renders the software non-Free.

It appears, unfortunately, that the community of “Free Software Advocates” don’t actually understand what Free Software actually IS. That explains an awful lot, but should surprise nobody. So here’s a lesson on what, exactly, is being advocated for.

The Free Software Foundation defines four Software Freedoms – these are the minimum criteria required for something to be considered “Free Software” by the FSF:

  • The freedom to run the program, for any purpose (freedom 0).
  • The freedom to study how the program works, and change it to make it do what you wish (freedom 1). Access to the source code is a precondition for this.
  • The freedom to redistribute copies so you can help your neighbor (freedom 2).
  • The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

Other groups have their own variants on these, but those are really just clarifications on the FSF definition – for example, the Debian Free Software Guidelines mostly line up, but have some additional clauses such as clause 4 which allows software to be considered Free if source code may be redistributed without modifications, as long as patches may be shipped alongside.

These four freedoms are offered to you by the software’s copyright holders only, and apply regardless of their choice of license – any “Free” license, from a lengthy legal tome like the MPL to the completely-Free WTFPL, will offer you these four basic freedoms as a minimum, and any additional clauses in their licenses cannot seek to restrict these freedoms.

These four freedoms represent the beginning, and end, of whether a piece of software is Free or not.

Software does not need to be developed in the open, in a community-responsive way, in order to qualify as Free – projects such as Google’s Android, which are developed under a “throw a final release over the wall, bugs and all, and expect people to thank you for it” model, are still free, even if contribution is difficult. Actually, on a related note, software does not need to solicit upstream contribution of any kind in order to qualify as Free – as long as you personally can redistribute the code with changes, then that’s enough.

Software does not need to serve a fully or even partially legal purpose in order to qualify as Free – the favoured tool for causing distributed denial of service attacks, Low Orbit Ion Cannon, is Free Software, even though realistically it serves no legal purpose. DeCSS, the code initially used to allow DVD media to play on Linux (by breaking the CSS encryption mechanism) is Free Software.

Software does not need to be useful or tasteful in order to qualify as Free – the Last Measure Operating System, a minimalist OS primarily designed to loudly display the famous shock site images from goatse and related, is Free Software. Even in somewhat less clear-cut cases of taste, your personal opinion of software has no bearing on whether it is Free Software, as long as the four freedoms are guaranteed by the author(s).

Software does not need to have only Free dependencies to qualify as Free Software – it is entirely permissible to write software which relies upon a non-Free framework or library, and release your code under a Free license. It is the downstream recipient’s problem to provide the dependencies, including their choice to craft a Free replacement for any non-Free code you make use of. Debian has a special repository called contrib, where Free software which only works with non-Free data, lives – for example, Free game engines which require the insertion of proprietary game data in order to operate. You could write Free addons for expensive proprietary software such as Matlab, and as long as your code is Free, your responsibilities are met.

Software does not need to avoid patents – software, algorithmic, or otherwise – in order to qualify as Free. The Freetype font library was still entirely Free Software when Apple were slinging threats around regarding font hinting data. FFmpeg, the Swiss Army knife of media codec libraries, is Free Software regardless of the number of codec patents it breaks.

Software does not need any third party approval to be Free Software – the rights of Free Software can only be offered by the copyright holders, and the opinion of third parties is an irrelevance as to whether software is Free. The GPL’d clone of Blizzard Entertainment’s Battle.net servers, bnetd, is Free Software, regardless of legal takedown notices.

Third parties cannot influence whether or not a piece of software is Free. They can influence tangentially related topics, such as whether the software can be legally used, but that’s the limit. And even within a given piece of software, where copyright is shared by contributors, the author of one component has no say on other components. And you can’t make code which is already released as Free, suddenly un-Free – you can, if you hold all the copyrights, close up future versions, but your existing code remains Free forever. Reasonably, you can opt to avoid using a piece of software because you have requirements beyond it merely being Free Software – Cdrtools has been avoided in Debian for a long time due to the upstream author’s legal threats and rambling – but that is a side issue as to the question of whether or not the software is Free.

Patents are simply not involved in the question of whether or not something is Free Software, except for one narrow case: where Free Software is released by somebody who also holds related patents, and uses a license such as Ms-PL or Apache 2.0 or GPLv3 which requires them to also release those patents to those using/distributing the software. Outside that narrow situation, patents do not relate to the question of whether something is Free Software – even if a company releases some source code under a license like BSD then demands patent fees from end users.

So, on to the original topic of Mono. Every piece of Mono’s source code is released by its authors under a license which guarantees the FSF’s Four Freedoms. Whether or not you find Mono useful or tasteful does not affect that Free status. Whether or not Mono infringes upon any laws or patents does not affect that Free status. That Mono contains some libraries whose upstream author is Microsoft does not give Microsoft even the remotest claim to a single line of code outside the code they wrote – and even then, it wouldn’t be an issue, since the licenses they use are Free. In fact, both the licenses used in the Microsoft portions of the source base make patent grants to all users, in addition to guaranteeing the FSF’s Four Freedoms – and any license contamination would decrease, not increase, any risk of legal attack from Microsoft. There’s even plenty of Microsoft code available for re-use at a lower level than the currently re-used libraries: The Microsoft.NET Micro Framework (for use on embedded platforms direct to the metal) is under the Free Software Apache 2.0 license, and would provide access to some of Microsoft’s runtime and class library code, complete with a patent grant, if it were desired.

Please try to keep your thought processes straight. If you want to argue that you’re all for Free Software, please remember that there’s plenty of Free Software you might not approve of – and don’t claim to be a “Free Software advocate” then use bogus arguments to claim that Free Software is not Free. Free Software includes LMOS and LOIC and Mono, whether you like it or not.

27 Responses to “The phantom fifth freedom”

  1. Can’t it be argued that patent litigation risk violates the four freedoms? After all, if a lawsuit forbids you of using the software, you cannot have any of them.

    I’m not saying you’re wrong, I’m just a little bit confused by the difference of “will be sued” and “might be sued” in the context of freedom.

  2. @Donny, nope, that’s the point. “might be sued” or “will be sued” don’t actually affect your “four freedoms” – they’re additional side issues to whether something is or not Free Software.

    No third party can affect the four freedoms, only the copyright holder.

  3. @directhex, thanks.

    I just read too fast. Pretty much clear now.

  4. Except that logically the FSFs freedoms are messy. freedom 1 should be split up and freedoms 3 and 4 are the same thing really.

    I don’t believe mono packages should be put into non-free,

    But I do believe Linux .Net developers who are relentlessly pushing their garbage into inclusion into Ubuntu for purely religious reasons, should be told to go to hell.

  5. @Martin Owens,

    Except that logically the FSFs freedoms are messy. freedom 1 should be split up and freedoms 3 and 4 are the same thing really.

    Not sure I agree.

    Freedom 0 (you’re meant to count these from 0, for nerdy reasons) seems like a no-brainer, but plenty of software has a EULA which says what you may or may not use software for. Freedom 0 essentially bans the EULA.

    Freedom 1 is what you get from several commercial outfits – and things like Microsoft’s dreadful “shared source” licenses: the right to poke some source code. http://www.gaussian.com/ is a molecular dynamics app, and you can get source to poke about, for a mere $35,000.

    Freedom 2 is met by any “freeware” that allows verbatim copying – e.g. nvidia.glx.

    Freedom 3 is what ties it together – by allowing you to share (freedom 2) source changes (freedom 1).

    The only superfluous one, really, is Freedom 3 – and, funnily enough, it’s also the most important one, which explains what combining the others should mean. There’s not much of the FSF’s activities I like, especially in this day and age, but I like their definition of Freedom. It’s pretty concise. I like that.

    I don’t believe mono packages should be put into non-free,

    But I do believe Linux .Net developers who are relentlessly pushing their garbage into inclusion into Ubuntu for purely religious reasons, should be told to go to hell.

    I don’t think religion plays much of a part in software development, outside apt:bibletime. Developers evangelize the things they like, but that’s entirely normal – Qt developers evangelize Qt, Telepathy developers evangelize Telepathy, Haskell developers evangelize Haskell. There’s nothing sinister about evangelizing the things you like, and it’s not a “religion” to like something.

  6. I’m not very sure against who the viciousness of the last sentence is directed at, and why.

    I’d really like if you could precisely define “relentlessly pushing”, “garbage” and “purely religious reasons”, and then provide links proving that people are in fact doing that.

    I admit I don’t follow every Ubuntu developer blog and mailing list possible, but I don’t really recall occasions where the inclusion of a Mono application was suggested based on something other than pragmatic arguments.

  7. So you’re saying that irrespective of whether a third party legally or practically prevents you from using freedom 0, as long as the copyright holders grant freedom 0 the software is still Free?

    And the phantom fifth freedom would be “The freedom to legally use the four freedoms granted by the copyright holders”.

  8. @Greg K Nicholson,

    So you’re saying that irrespective of whether a third party legally or practically prevents you from using freedom 0, as long as the copyright holders grant freedom 0 the software is still Free?

    Precisely. Otherwise, it would be trivial to say “Foo is not Free Software because it is not legal in backwater banana republic Barbazquuxistan”. Or, as a more real example, was OpenSSH not Free Software because US export restrictions once added auxiliary concerns?

    And the phantom fifth freedom would be “The freedom to legally use the four freedoms granted by the copyright holders”.

    A freedom which cannot be offered by the person providing the software, and is therefore farcical.

  9. Don’t feed the trolls. You can’t win with “Free Software” zealots whose only contribution to software is whining. It’s all one big waste of time. (so is Debian, Gentoo is better ;))

  10. Let’s try an analogy. Imagine a person. The person is owned by itself (analogous to copyright holder?). However, the person has committed a crime and is now in prison. His freedom of movement has thus been restricted. Would you call him free and claim he has freedom of movement? He could theoretically escape prison and be free — but would you call that freedom? He may be a “free spirit” and feel free and behave as if he were free, but he is effectively constrained.

    With software I see it similarly: As a copyright holder you may create software that theoretically has freedom. But if that is legally restricted, none of those freedoms can be used. You may lose the right to distribute or to use — and without those you cannot enjoy its freedoms. They’re only there for you in theory, not (legally) in practice.

    If you choose to ignore law, fine you can call it free. But you that’s not really the real world we’re talking about, then. And I think for something to be called free, it needs to be free in the real world, not only in theory. Otherwise: Tell the prisoner he is free.

  11. @Anonymous Coward, So software which implements encryption cannot be Free Software, if it potentially violates the law (as OpenSSH did, under US export restrictions)?

  12. @directhex, it could be used anywhere as Free Software where the law allowed. It has always been Free Software by it’s spirit, but ultimately distribution was legally restricted (which violates the “freedoms”).

  13. @Anonymous Coward, did that make it not Free Software? If some software’s author says “here, I wrote this, you can have it”, and some third party (the US government in this case) flaps their arms and shouts “NO YOU CAN’T NO YOU CAN’T”, that doesn’t alter the author’s statement regarding the redistribution terms he placed the software under.

  14. I sometimes use free software. I try to contribute back when it makes sense and I am actually contributing something of substance. That said if a project does not have an active maintainer I am unlikely to commit code.

    I primarily use open source libraries. If it’s a copy left license like the lgpl I will simple not use that library. When someone picks a license that is copy left, it tells you something about their mind set. I have enough problems making a living without that possible pain. Therefore, I stick to software with a license like the mit license.

  15. So what you are saying is, because you can be sued if you use software X in banana republic Y does not make X unfree?

    I agree with that. How would the copyright holder know about all the laws and patents in every single country of this world?

    If you agree with that you must agree that Y could be ANY country of this world.

  16. @Myself, bingo!

  17. @directhex, so ANY could also be the US, the world capital of lawyers… 😉

  18. @Myself, also bingo!

  19. It seems to me that the CRUX of your argument is this part:”Software does not need any third party approval to be Free Software – the rights of Free Software can only be offered by the copyright holders, and the opinion of third parties is an irrelevance as to whether software is Free. The GPL’d clone of Blizzard Entertainment’s Battle.net servers, bnetd, is Free Software, regardless of legal takedown notices.”

    Which looks like a flat assertion to me. The four freedoms you quote make no references to copyright holders or authors so giving them special status needs something more than an assertion.

    Since you assert that legal restrictions make no difference WRT the freedom of software I assume that you are not concerned with a copyright holders legal rights but with a purported moral right of the author to restrict the usage of the software.

    I think when RMS defined Free Software in terms of the four freedoms his position was somewhere between “Authors have a moral obligation to distribute their software as free software” and “Authors have no right to distribute software as anything other than free software”. If one takes the “no right” end of that spectrum then clearly the author or copyright holder has no special moral right to grant or withhold said freedoms.

    If that is accepted then I would suggest that the only criteria for software freedom are availability of source and possibly whether you can reasonably expect to exercise the four freedoms without fear of reprisals (which could come equally from either copyright or patent holders).

  20. @William Hay, I use the term “copyright holder” rather than the FSF’s preferred terminology “developer”, since there is usually a difference between the two in the real world. But the full test on the FSF’s website specifically cites what a developer can and can’t do.

    And yes, I assert that legal restrictions make no difference WTF the Freedom of software, Again, I repeat the example of encryption software – is it impossible to write Free encryption software because some governments don’t consider it legal to use?

    I’m not all that fussed by what RMS believes, but I personally believe that authors have the absolute moral right to decide how their software is used, licensed and distributed. If an author wants to release an app under a restrictive or even silly license (I’m aware of one Mac app which forbids use by anyone who uses air travel more than twice per year), then that is ultimately their decision and their right. The better decision for the benefit of society is to release as Free Software, but developers absolutely do and should have the right not to do so. My position and explanation comes from a default position (and the default position of copyright law in this country) that any creative work is, by default, your personal private property with zero implicit redistribution or usage rights granted to others.

  21. This being the internet not sure what country you mean by “this country” but most countries have time limits on copyright which is quite different from property rights which usually persist until abandoned.
    It seems to me that the implication of your position is that you think people who disagrees with your position on the validity of copyright “don’t understand what Free Software actually IS”.
    I’d say that the freedom of a piece of encryption software varies with where you are it might be free where you right but unfree once it crosses the french border.
    Software patents are spread widely enough,in practice if not in theory, that one can see them as a significant impairment of the freedom of a piece of software.

    Is speech free in North Korea? You can after all say what you like there just as much as anywhere else. The difference is largely in the consequences of saying it.

  22. Actually, I think you’ll find that the DFSG predates GNU’s four freedoms. It’s certainly not a ‘clarification’.

  23. […] Jo Shields: The phantom fifth freedom (apebox.org) […]

  24. Now how do you do freedom 3 and 4 if patent holder decides to get on your back?

    The answer is you cannot. Its not a 5 freedom at all its a requirement to implement freedom 3 and 4 to at least attempt to allow people todo 3 and 4 without fear. Also

    freedom 0. The freedom to use the code how the user sees fit. Patented restrictions mean person cannot use the code any way they see fit but only the way the patent holder wishes unless you have a license stating that.

    Lets call it the 5 freedom so we can fail todo everything required to live up to the 4 freedoms.

    Freetype and ffmpeg include options to disable patented parts so people can ship those freely. Ok reduced functionality but freely.

    The requirements of the 4 freedoms is not static with time. 4 freedoms define the actions people should be able todo with your source code without worrying about landing in court.

  25. @oiaohm, Freetype and FFmpeg still include those dangerous parts *in the source*. Configure flags don’t affect what’s in your source tree. And it’s Free Software if you can ship the *source*. You know the difference between source and binaries, right?

    How about another example, DeCSS? Is it Free Software or isn’t it? It has no usage which isn’t deemed illegal by various bought & sold courts.

  26. Opps 3 and 4 should be 2 and 3 your odd ball numbering stuffed me up.

    Freedom 1-4 is the normal numbering.

  27. @oiaohm, better get your buddy Stallman to correct his numbering then: http://www.gnu.org/philosophy/free-sw.html

Leave a Reply