Consider what we mean when we think of software being Free. Does Mono meet that standard?
What is Free Software?
Forget that “Open Source” stuff. I’m talking about the good stuff here. Good old “Free-as-in-Freedom-Fries” Free. How do we define Free software?
There are two common checklists: the “Four Freedoms” of the Free Software Foundation, and the Debian Free Sofware Guidelines. Let’s take a look at each one first:
| FSF Four Freedoms | Debian Free Software Guidelines |
|
0. The freedom to run the program, for any purpose. 1. The freedom to study how the program works, and change it wo make it do what you wish. 2. The freedom to redistribute copies so you can help your neighbor. 3. The freedom to improve the program, and release your improvements (and modified versions in general) to the public, so that the whole community benefits. |
|
Here’s the thing
We generally consider software Free based on the license under which it is released. Basically, if it falls under a GPL- or BSD-like license we call the software “Free”. This is because the entire implementation of Free Software is built upon the very clever use of copyright law that Richard Stallman saw. However the foundation of the concept is not restricted to the license alone. It is a lazy shortcut to determine if software is Free based solely on its license.
Consider this: Say I create a small bit of software and I get a clear patent on it. Assume there is no prior art and software patents are being upheld. I release the code under your favorite OSI-approved license while at the same time publicly stating I will sue anyone who distributes modified copies of the code for violating my patent. Is that software Free?
If you define your software as being Free based solely on its license, then yes it is. If, however, you define your software as being Free based on the ideas of the Four Freedoms or the DFSG, I would say it is not Free. This not just a silly thought experiment, there have been some creative attempts at parsing licensing in the past.
Consider this: Say in the future, there exists some new sort of legal classification of ideas. Call it “mindright”. Courts uphold that creators of a work control the “mindright” to a work, and if someone violates that “mindright” they can be sued. No existing license today speaks to “mindrights”. If I release a small bit of software under your favorite OSI-approved license while at the same time reserving “mindrights” for myself and publically stating I will sue anyone who violates my “mindrights” with the code, is that software Free?
Again, if you only consider the license, you may say yes. But if you consider the whole picture, you probably will say no.
This is because it is not the license alone that makes software Free. The license is a way in the existing legal system to try to realize the concept of Free Software. If something in our legal system (or business practice) changes, then it could become true that the existing licenses are no longer sufficient to enforce or permit the necessary freedoms, and therefore software so licensed is no longer Free.
That’s where GPLv3 comes in
Agree or disagree with it, but that is why the GPL often says “or any later version”, and that is also much of the reason for the GPLv3. At the time of the GPLv2, software patents were not a consideration. Now they are. So the text of the GPL had to be updated to stay effective in the changed business environment. Understand clearly that the principles behind the GPL never changed. Because it is not the license that makes Free Software, rather it is what the license enforces that makes Free Software.
Consider this: Say the GPL was found in court to not do what we all think it does. The judge decides some clause or two is wrong and so the GPL is invalid and not legally binding. The GPLv4 will have to be introduced to deal with this new development. Software that is released under the old versions of the GPL will no longer be Free Software, because the license can not enforce the requirements of being Free Software.
Whither now, Mono?
Because we know Microsoft holds patents over C#, the CLI, and other parts of .NET, it becomes risky to think that a license alone makes Mono Free Software, because the licenses Mono is released under are silent on the point of patents. We need some additional assurances. International standard bodies requires RAND licensing, but that alone is not enough for Free Software. A one-time payment of $5 is reasonable and non-discriminatory if required of everyone, but that certainly is not Free software in any sense of the word. No-royalty helps, but again there could be other terms that prevent RAND-Z technologies from being Free.
You could promise not to sue, but the problem with a promise like that is there are all sorts of doubt about what a promise actually covers. Companies go to court all the time for differences of interpretation in legal documents, and Microsoft making up a Community Promise or Open Specifications Promise mitigates, but does not eliminate all risk. (All risk can not be eliminated, of course, so that alone is not a failing of the Community Promise.)
The question then becomes: Do you think that the licensing of the software, when combined with the patent assurances Microsoft has given are sufficient to meet all the requirements of the Four Freedoms? Of the Debian Free Software Guidelines?
Think on that in great detail and see what answer you come up with – think on it first trusting Microsoft to do the “right” thing, and once again assuming Microsoft will do the “wrong” thing. Can software be conditionally Free, depending on the intention of Microsoft? It is a sort of Schrödinger’s Freedom – how Free the software is depends on how Microsoft decides to act!
Perhaps you think that the assurances of the ECMA/ISO standard and the Community Promise are sufficient when combined with the licensing terms to consider Mono Free Software. I do not think that is an unreasonable conclusion. Now, read Microsoft’s Moonlight Covenant, and see if you get the same answer about Moonlight.

#1 by Jo Shields on July 20th, 2009
A reasonable post, which can be boiled down to three main questions.
Is code which may cause legal issues for the user still Free?
And my answer to that would be “yes, absolutely”. DeCSS is Free Software. FFmpeg is Free Software. And those are examples where jackbooted thugs will literally storm your place of work to protect the holy grail of proprietaryness and patentdom (e.g. see http://www.theregister.co.uk/2008/03/07/patent_crackdown_at_cebit/)
Is code whose legal risks are mitigated (although never eliminated, as you correctly point out) by patent promises still Free?
And my answer to that would be “yes, absolutely”. Again, the example of OpenOffice.org implementing ECMA376, which is covered by Microsoft’s OSP, is relevant. And finally…
Is Microsoft’s Moonlight covenant sufficient safety for distributions of Free Software to feel comfortable?
And the answer there would be “not right now, no, but it doesn’t need to be”. See, the thing is, Moonlight 1.0 (which is all anyone packages today) consists of only one thing: a XAML renderer. XAML is Microsoft’s SVG-like display language. Moonlight does not have any program logic or libraries (it uses your browser’s Javascript engine for that, as SL1 is just Javascript). Moonlight doesn’t come with any codecs – codecs are either provided by your distribution’s FFmpeg package (which may or may not supply all required formats, depending on your distribution’s level of FFmpeg dismemberment), or via a binary download of patent-paid codecs, directly from microsoft.com. The only thing Moonlight 1 provides is the XAML renderer, and the glue to provide access to that renderer. And if (big if, as always) you feel that OOo’s use of OOXML under the OSP is safe, then try taking a peek at the “Microsoft Computer Languages” section of the OSP page, here: http://www.microsoft.com/interop/osp/default.mspx
The Moonlight covenant is effectively neutered and pointless, when the specification which Moonlight implements is under the more liberal OSP.
There’s the secondary issue, of course – that Microsoft would be flat-out retarded to attack anyone for using Moonlight when they’re trying to sell Expression Blend to people instead of Creative Suite as a way to make whizzy cross-platform web crap.
The problem with posts like this one, however, is the usual avoidance of the question “can you demonstrate that the non-protected replacement is itself free from potential patent pitfalls?”
#2 by Jason on July 20th, 2009
@Jo,
Thank you for the comment!
I don’t think limiting the consideration to Moonlight 1 is very useful. Silverlight 3 is already out, and surely the Moonlight project plans to implement Silverlight 2 and likely 3, if I understand correctly.
Is Silverlight 3 just an XAML renderer? My (admittedly superficial) understanding is that there are many features in Silverlight 3 that are beyond just Javascript.
Another point is that if Microsoft would be so “flat-out retarded” to attack Mono or Moonlight, then why all the patent agreement and FUD? I consider that an “attack” – I do not think you have to haul a company into court for it to meet the level of an “attack”.
In fact, I think that an actual court case is frequently the least likely or desired attack by even the most aggressive companies.
#3 by Jo Shields on July 20th, 2009
That is indeed the plan. However, one step at a time – let’s keep the consideration on what is in place today, then work on the future stuff in a mo. Cool with you? Nobody’s even thinking about 2.0 packages until you can actually build it without an up-to-the-minute copy of Mono’s SVN Trunk. And it stops leaking memory all over the place.
That’s correct. Silverlight 2 is a very different beast to SIlverlight 1 (hence the delays in Moon 2). It adds application logic, in the form of a cut-down .NET 2.0 runtime, plus a set of extra libraries on top of that cut-down runtime. And a security infrastructure to stop that runtime from being naughty.
Silverlight 3 adds GPU-acceleration on video; h.264 to the mandatory codec list; support for any codec with a Managed (C#) implementation (Vorbis proof-of-concept exists, work ongoing for Theora/Dirac); support for local app installation (think Adobe Air); and general fluff which is usual in new releases. SL2->SL3 is a much smaller jump (and Moon 2 already implements one of the features on the above SL3 list)
Is that a general comment on Microsoft’s recent behaviour with embedded device manufacturers, or a specific comment on the Microsoft Moonlight Covenant? I don’t want to misdirect my reply.
If the FUD itself is the attack, why fuel it by saying “this is dangerous, run screaming from it”? Surely you’d be doing Microsoft’s “attack” on their behalf?
#4 by Dan Serban on July 20th, 2009
Subjecting your customers to the humiliation of having to punch in license keys and activation codes is a retarded thing to do, so don’t assume anything when it comes to Microsoft.
Not sure how to read this question.
Are you asking if we can prove that Gnote is safe to use?
#5 by Jo Shields on July 20th, 2009
If it makes the money-pile get bigger, it’s not retarded. If activation increases the money pile, it’s not retarded. If encouraging a larger market for your design, development & server apps by “allowing” Moonlight increases the money pile via sales of those products, then it’s not retarded. Simple, no?
I’m asking exactly that. Gnote includes a partial implementation of ECMA335 (the csharp:: namespace) in order to make porting easier (i.e. Hub has C++ versions of .NET objects, with matching interfaces, such that only object and method names be changed, not their behaviour).
Actually, ironically, doesn’t that make it more risky than Tomboy, patentwise?
#6 by Thomas Holbrook II on July 21st, 2009
Jo, you’re wasting your time. The more you defend Mono, the less time you are spending improving upon the very thing you believe in, and the more ammunition you hand over to those who disagree with you. My suggestion is to stop wasting time arguing one way or another pertaining to the development framework in question.
#7 by AH on July 21st, 2009
Even RMS has no problem with Mono: it’s free software, and in his now infamous warning he said that it was good that it exists.
He warned people about relying on it. He didn’t warn people that it was non-free.
#8 by Jason on July 21st, 2009
@Jo:
Just a general comment. I don’t really think Microsoft’s recent behavior is different enough from its non-recent behavior to draw a distinction … unless it is to make the point that they continue to be hostile and abusive.
It’s not a serious inquiry, I just think it’s funny the assertion of how safe Mono/ECMA is/was, but the necessity for Promises/arguments that it would be “retarded” to attack, and so forth.
This is a very good point.
The thing is, I believe that the Novell deal is indeed acting on Microsoft’s “behalf”. There have been some statements from Novell that they don’t believe there are patent issues, but the deal itself and subsequent promotion do not vigorously support those statements. So, where does that put someone with that belief?
It is true that “running screaming from Mono” could be to Microsoft behalf, but it is also true that embracing it and – by extension – Novell’s actions is almost certainly acting on Microsoft’s behalf. That is one of the things that I think is so upsetting about the Novell-Microsoft deal, it is a “win-win” for Microsoft, and a “lose-lose” for FLOSS.
Better than to help less by resisting and showing other companies the trouble they will face for betraying the community, than to embrace betrayal and encourage more in the future. Again, I think this boils down to short-term vs. long-term thinking.
Yes, probably in that time period where such a situation exists. Which goes to show a major objection people have with the Community Promise: it could be used to “lock-out” competing implementations of .NET. A lot of people see Novell as being Microsoft’s cats-paw. So it is not so much that they are worrying about Microsoft going after Novell or Mono directly, but using Mono as the “One True .NET on Linux” and preventing any other Open Source development on partial or specialized or even competing implementations.
This concern is amplified by a factor of one point seven million about Moonlight.
#9 by Jo Shields on July 21st, 2009
My long-term observation is that we had Mono for 4 years before the Novell/MS deal – and that we still happily use Evolution (okay, for small versions of “happily” for that one), Go-OO, assorted Kernel foo, and other general cruft out from Novell.
Given that, honestly, I think it’s just a convenient excuse to attack Mono whilst still accepting things like, say, all their kernel work. I don’t know anyone who runs a “Novell-removed” kernel – do you?
Completely hypothetically, of course, I suspect that this was a measure of time more than anything else. If you were Miguel, and were told “we can get the CP paperwork through in about a quarter, but the lawyers won’t let me put it under OSP without giving them at least five quarters to pore over every potential detail and unforseen consequence”, given the increasingly cacophonous wail from your detractors demanding to see some evidence of safety, what would you do? Oh, and “tell the press” isn’t an option, since it’d spook the horses (e.g. fatboy Ballmer reading “Microsoft promises to give up its .NET patents” on The Register, and throwing chairs at everyone involved in the whole scheme, their family, and their pets)
#10 by Jason on July 21st, 2009
No, but then again I don’t think that rejecting Mono means everything from Novell must be rejected.
Very often – too often – mono defenders present two extremes and assert if you do or don’t do A, then you must do or don’t do B as well. This is simply not true.
Honestly, I would wait. Why not? It’s been 6+ years now and better to get the job done right. As I say, we can work with Microsoft on our terms.
But I can see your point – and I’m not asserting the CP will be used to lock-out other implementations, but I do not think it is unreasonable to point out that it could be used in that way.
#11 by Jo Shields on July 21st, 2009
I’m not sure why code which has been around for 4 years before the deal is singled out as worth rejecting as a result of that deal, when other “old code” or even “new code” is still embraced. That’s the double standard I see.
Ever seen the guy at a presentation? It should be a felony to give him caffeine. The first Moonlight alpha was knocked up in 3 weeks. I don’t think waiting is his style. But we’re all different, and all act in different ways.
I don’t necessarily think that those at Microsoft who can see the benefit to THEIR position (e.g. helping to sell more dev tools) are adverse to working, as you say, “on our terms”. Take the latest announcement of Microsoft’s new GPL’d kernel modules entering the gauntlet for inclusion in the mainline kernel as an example of “on our terms” engagement which, whilst unquestionably self-serving (as most businesses are), shows a willingness to interact in the appropriate way with a given group.
Perhaps the bigger problem is that Miguel’s the only one who made any serious effort to talk to the Beast about the ECMA334/335 issue? If the FSF had sent someone down from their ivory tower, perhaps we’d have a different arrangement in place. But this is all, of course, speculation. And the fact is, Miguel commands a LOT of respect within certain Microsoft divisions, which makes it easier for him to say “give us patent protection for these specs, please” than pretend journalists making pretend efforts to secure an equivalent.
I don’t think it’s unreasonable to point out problems with the CP. I just wish the motives from those attacking it were rather more transparent. And, as I’ve said elsewhere, I suspect that even a full GPLv3 release of Microsoft.NET with free muffins with every download will have lead to accusations of poisoned baked goods on certain sites. THAT, really, is the problem – why would Miguel hold out for a “better” deal, when no deal would be good enough for peace?
#12 by Apollo11CAPCOM on July 21st, 2009
I think *any* patented software can be rendered de-facto non-free by software patents depending on the provisions on the patents covering it, and that is the loophole the Microsoft-Novell agreement is exploiting once and again in order to erode Software Freedom.
Have a look at:
http://www.gnu.org/philosophy/w3c-patent.html
This is even from time before the Microsoft-Novell patent-protection agreement, and even before the GPLv3, it is not even an issue with Microsoft’s patents.
That is the reason why the GPLv2 included the section 7 and why GPLv3 included extra provisions for protection against de-facto proprietarization of GPL code through patents, and this shows software patents have been a long-time concern for the FSF and SLFC (and the Free Software community at large), and why we should oppose and fight the push from proprietary software companies and others with vested interests for the extension of this legal construct (software patents) to Europe and other areas of the world where they are not yet legal, as well as opose the pressures of those trying to make whole distributions dependent on software whose legal status respect patents is dubious.
ATM It is impossible to say if the patents covering the mono implementation of the .Net technology are safe or instead are working against the intention of the GPL and Free Software since Microsoft won’t disclose which Microsoft software patents which part mono potentially infringes.
Even accepting the inevitability in the short term of software patents being enforceable in the U.S., until these patents covering mono and its terms are disclosed (and disclosure to the public is the condition for the patent system providing a state-granted monopoly over an invention), and until Microsoft grants them under a licence or contract (not a promise, agreement or pact) that is fully GPLv3 compliant, we must be very wary of the status of this project with respect to Software Freedom.
#13 by Jason on July 21st, 2009
@Apollo11CAPCOM,
Thanks for pointing out that article – that is a great example of what I was trying to express.
It only took me 6 years longer to articulate it!
#14 by Apollo11CAPCOM on July 21st, 2009
@Jason: My pleasure. The FSF and SFLC resources are great and are available ouh there for a reason. That’s also the reason they are attacked so consistently by those with an interest on restricting and hindering software users’ freedom.
#15 by Robert Millan on July 25th, 2009
Not at all! See section 7 of GPLv2:
GPLv3 has the same aim as GPLv2, which is to find a compromise that allows preserving essential freedoms for everyone, using only those conditions deemed necessary to efficiently archieve that. Loopholes were found in these patent provisions, and exploited, and so version 3 includes different language with regard to patents, but it has the same goal.
#16 by Robert Millan on July 25th, 2009
Well, that would be interesting in many ways (including the free muffins!) but keep in mind that releasing code is not legally binding to those who release it. If I could choose, I would very much prefer if Microsoft distributed a huge bunch of FSF-copyrighted code (like a GNU/Linux distribution) instead.
Good question. But why discard the possibility that it is good enough? The FSF said it’s not, and has this page explaining why. It gives three reasons, titled:
– Incomplete Standards
– Figuring Out What’s Necessary
– Moving the Goalposts
But now imagine this scenario:
– Developers of Mono only make a stable release when they implement the complete API of a version of the standard.
– Developers of free applications based on Mono only use parts of Mono that are covered by the CP (plus any community-developed extensions like GTK#).
– Novell stops their “buy our protection” marketing campaign.
Wouldn’t the perception change?
Right now, what I see is a plan for integrating Moonlight into those apps, which is precisely the opposite direction to what I’m describing.
#17 by Jason on July 25th, 2009
@ Robert Millan,
Thank you for pointing that out in the GPLv2, I already said I thought “the principles behind the GPL never changed”, and it is nice to see the textual support for that.
This is why I find those who are so opposed to GPLv3 confusing? What is the objection? Isn’t the GPL always trying to do the same thing?
#18 by Jo Shields on July 25th, 2009
I suspect the landscape on this question will change significantly once we see version 3 of the moonlight covenant (a third version is required to reflect SL3’s existence – and SL3 explicitly supports desktop usage). I’m fairly sure Microsoft have been made aware that their current Novell-centric paperwork is harming adoption, and harmed adoption means they can’t sell Expression to people who were looking at Creative Suite. Which means less money. Which, I’ve heard, is bad for business.
#19 by vexorian on July 25th, 2009
I think that at a very least, if you plan on relying on the promises for legal safety then it is not really “free software” or “open source”. The “promises” specifically prohibit you from forking or adding on it, which means it is incompatible with both definitions.
To call it open source, or free software, you need to stop relying on the promises at all. And stop considering the promises as a ‘feature’ of the software. And yes, this involves getting ready to get sued if necessary to keep the idea open source/free software.
I am saying , that you will have to choose between advertising it as open source or advertising it as legally reliable thanks to “XXX promise”. But you can’t have both of best worlds.
The idea within MS and certain Novell PR vice president that moonlight can only be legally distributed by Novell is much worse issue…