decoration decoration

When you want to know more...
For layout only
Site Map
About Groklaw
Legal Research
ApplevSamsung p.2
Cast: Lawyers
Comes v. MS
Gordon v MS
IV v. Google
Legal Docs
MS Litigations
News Picks
Novell v. MS
Novell-MS Deal
OOXML Appeals
Quote Database
Red Hat v SCO
Salus Book
SCEA v Hotz
SCO Appeals
SCO Bankruptcy
SCO Financials
SCO Overview
SCO v Novell
Sean Daly
Software Patents
Switch to Linux
Unix Books


Groklaw Gear

Click here to send an email to the editor of this weblog.

You won't find me on Facebook


Donate Paypal

No Legal Advice

The information on Groklaw is not intended to constitute legal advice. While Mark is a lawyer and he has asked other lawyers and law students to contribute articles, all of these articles are offered to help educate, not to provide specific legal advice. They are not your lawyers.

Here's Groklaw's comments policy.

What's New

No new stories

COMMENTS last 48 hrs
No new comments


hosted by ibiblio

On servers donated to ibiblio by AMD.

FSF: FOSS developers "still should not write software that depends on Mono"
Friday, July 17 2009 @ 04:53 AM EDT

The Free Software Foundation has issued another statement on Mono, C# after the recent Microsoft extension of the terms of their Community Promise to implementations of ECMA 334 and 335.

Is it safe to go back in the water now, as so many have been saying? FSF says no, that the "promise is full of loopholes, and it's nowhere near enough to make C# safe." The article also offers to help Microsoft get it right, if it is sincere in wishing to really reassure FOSS users it doesn't intend to sue them for using Mono.

It's an important enough topic that I'm reprinting the article in full for your consideration.

Update: A reader points out something in addition to the points made in the FSF article:

I think that there's a major missing element to the list of requirements ..., before you can consider using C#, and that is a commitment to ensuring that future standards are based on the same set of promises.

At the moment, even if all the conditions above were satisfied and it were safe to use C#, there's no guarantee that it's not an evolutionary dead-end for FOSS. Languages exist in a context, and they have to change and evolve to remain useful in a changing landscape. But there's no commitment that I've seen from MS to keeping the future safe for FOSS.


Microsoft's Empty Promise

Last week, Microsoft extended the terms of their Community Promise to implementations of the ECMA 334 and 335 standards. You might think this means it's safe to write your software in C#. However, this promise is full of loopholes, and it's nowhere near enough to make C# safe.

Why Worry About C#?

Since we published Richard's article about Mono last week, some people have been asking us why we're expressing special concern about free software developers relying on C# and Mono, instead of other languages. Sun probably has patents that cover Java. Maybe IBM has patents that cover C compilers. "Shouldn't we discourage the use of these too?" they ask.

It's true that all software patents are a threat to developers—but that doesn't mean that all software patents are equally threatening. Different companies might have patents that could be used to attack other languages, but if we worried about every patent that could be used against us, we wouldn't get anything done. Microsoft's patents are much more dangerous: it's the only major software company that has declared itself the enemy of GNU/Linux and stated its intention to attack our community with patents. If Microsoft designed a patent trap into C#, that is no more than what it said it would do.

The company has been quite clear about its intentions since late 2006. At a user conference in November that year, Microsoft CEO Steve Ballmer said, responding to a question about their patent agreement with Novell:

... the fact that [GNU/Linux] uses our patented intellectual property [sic] is a problem for our shareholders. We spend $7 billion a year on R&D, our shareholders expect us to protect or license or get economic benefit from our patented innovations. So how do we somehow get the appropriate economic return for our patented innovation...?
(Seattle Post-Intellegencer, The Microsoft Blog, "Ballmer on Novell, Linux and patents," November 16, 2006.)

A few days later, an interview with Microsoft President Bob Muglia was published, and he made it clear that they considered C# one of these so-called "patented innovations:"

There is a substantive effort in open source [sic] to bring such an implementation of .Net to market, known as Mono and being driven by Novell, and one of the attributes of the agreement we made with Novell is that the intellectual property [sic] associated with that is available to Novell customers.

(, "Microsofts Muglia Talks Longhorn, Novell and Java", November 17, 2006.)

They've been turning up the heat ever since. In May 2007, Microsoft followed all this up by announcing in a Fortune magazine interview that they believed GNU/Linux infringed 235 Microsoft patents. And recently they made it very clear that these were not idle threats: the company sued TomTom for using the VFAT filesystem implementation in the kernel Linux without buying a license from it.

All of this can't simply be brushed aside. These are statements and actions made at the highest executive levels of the company. Using patents to divide and conquer the free software community is a fundamental part of their corporate strategy. Because of that, C# represents a unique threat to us. The language was developed inside Microsoft, so it's likely they have many patents to cover different aspects of its implementation. That would make free software implementations of C#, like Mono, an easy target for attack.

The Community Promise does nothing to change any of this. Microsoft had an opportunity to take action and demonstrate that it meant us no harm with C#. Instead, they took meaningless half-measures that leave them with plenty of opportunities to hurt us.

Incomplete Standards

The ECMA 334 and 335 specifications describe the core C# language, including information about standard libraries that must be available in any compliant implementation. However, there are several libraries that are included with Mono, and commonly used by applications like Tomboy, that are not required by the standard. And just to be clear, we're not talking about Windows-specific libraries like ASP.NET and Windows Forms. Instead, we're talking about libraries under the System namespace that provide common functionality programmers expect in modern programming languages: binary object serialization, regular expressions, XPath and XSLT, and more.

Because these libraries are not defined in the ECMA specifications, they are not protected in any way by Microsoft's Community Promise. If this were the only problem with the promise, it might be safe to use applications that avoid these libraries, and stick to what's in the standard. But even the code that's covered by the promise isn't completely safe.

Figuring Out What's Necessary

The Community Promise only extends to claims in Microsoft patents that are necessary to implement the covered specifications. Judging just by the size of its patent portfolio, it's likely that Microsoft holds patents which a complete standard implementation probably infringes even if it's not strictly necessary—maybe the patent covers a straightforward speed optimization, or some common way of performing some task. The Community Promise doesn't say anything about these patents, and so Microsoft can still use them to threaten standard implementations.

Moving the Goalposts

Let's say you've written an implementation of one of the specifications covered by the Community Promise, and you want to determine whether or not you'll be sued for infringing a certain Microsoft patent. The necessity question already makes it difficult enough to figure this out. But even if you manage it, you should make sure you check again tomorrow, because the Community Promise might not protect you then.

The Community Promise does not give you any rights to exercise the patented claims. It only says that Microsoft will not sue you over claims in patents that it owns or controls. If Microsoft sells one of those patents, there's nothing stopping the buyer from suing everyone who uses the software.

The Solution: A Comprehensive Patent License

If Microsoft genuinely wants to reassure free software users that it does not intend to sue them for using Mono, it should grant the public an irrevocable patent license for all of its patents that Mono actually exercises. That would neatly avoid all of the existing problems with the Community Promise: it's broad enough in scope that we don't have to figure out what's covered by the specification or strictly necessary to implement it. And it would still be in force even if Microsoft sold the patents.

This isn't an unreasonable request, either. GPLv3 requires distributors to provide a similar license when they convey modified versions of covered software, and plenty of companies large and small have had no problem doing that. Certainly one with Microsoft's resources should be able to manage this, too. If they're unsure how to go about it, they should get in touch with us; we'd be happy to work with them to make sure it's satisfactory.

Until that happens, free software developers still should not write software that depends on Mono. C# implementations can still be attacked by Microsoft's patents: the Community Promise is designed to give the company several outs if it wants them. We don't want to see developers' hard work lost to the community if we lose the ability to use Mono, and until we eliminate software patents altogether, using another language is the best way to prevent that from happening.

Copyright © 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Privacy Policy.

Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice is preserved.


FSF: FOSS developers "still should not write software that depends on Mono" | 135 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
Corrections here
Authored by: Erwan on Friday, July 17 2009 @ 05:08 AM EDT
If any.


[ Reply to This | # ]

News Picks Discussion, here
Authored by: Erwan on Friday, July 17 2009 @ 05:08 AM EDT
Please, quote the article's title.


[ Reply to This | # ]

OT, the Off Topic Thread
Authored by: Erwan on Friday, July 17 2009 @ 05:09 AM EDT
As usual...


[ Reply to This | # ]

Authored by: Anonymous on Friday, July 17 2009 @ 05:31 AM EDT
I write open source and closed source software. I really like C# on a technical
level. But you'd be mad to consider using it in a FOSS project.

I think that there's a major missing element to the list of requirements above,
before you can consider using C#, and that is a commitment to ensuring that
future standards are based on the same set of promises.

At the moment, even if all the conditions above were satisfied and it were safe
to use C#, there's no guarantee that it's not an evolutionary dead-end for FOSS.
Languages exist in a context, and they have to change and evolve to remain
useful in a changing landscape. But there's no commitment that I've seen from MS
to keeping the future safe for FOSS.

They are in a bit of a bind because even if they did provide such a promise, in
my opinion it would be hard for anyone to trust them because of their past

[ Reply to This | # ]

FSF: FOSS developers "still should not write software that depends on Mono"
Authored by: Anonymous on Friday, July 17 2009 @ 05:38 AM EDT
On the side of the legal issues... there is no way to work around the fact that
mono/.net is a technical kludge which is driven by M. So whatever happens in the
legal plane, the technical plane makes it a definitive nono.
There are many other technical kludges which are quite less controversial. But
as my personal opinion, I do not recommend the use of *any* kludge.

[ Reply to This | # ]

Whatchya doin' there, Steve? Digging an elephant trap?
Authored by: Anonymous on Friday, July 17 2009 @ 05:41 AM EDT
Steve, that's an awfully big hole. Ain't it a bit obvious what you're doing?

Oh... you put up a sign saying "NOT an elephant trap". That's a nice
sign, real pretty.

So... I guess now it's just a trap for really gullible elephants then.

[ Reply to This | # ]

It's very straightforward, actually.
Authored by: Anonymous on Friday, July 17 2009 @ 05:53 AM EDT

It's back to square one.

.NET is always, going forward, going to run better on Windows. If you want the "real deal", you need Windows.

Why is it so important? What's this burning desire to integrate a framework into Linux, with all the attendant legal issues (as well as legal issues moving forward), when it's just completely obvious that it's never, ever, ever, going to be the "real deal"?

If you want .NET, and you want it to work, and you want to be in on the loop, you need to run it on Windows. Period, end of story.

As such, it really is kind of suspicious that it's being brought up in the way it is. It's essentially Microsoft's thing, let them have it. Let Linux do its own thing -- it's better that way.

Linux can't win this thing to begin with, before you even start talking about the legal issues. If you're giving a potential customer advice, and you want them to take full advantage of everything .NET has to offer, truth be told, you need to tell them to use Windows. I'm actually getting a little suspicious that it's so trumped up and such a big deal. Java, that's different. A working JRE and the OS isn't really so important - .NET isn't like that at all, and never will be. Even Java, with its less than completely popular status, is miles ahead a better choice than C# and .NET (or Mono). This mono thing is being pushed on Linux with no really adequate explanation.

It's what a lot of folks are saying -- yes, C# is advanced, has productivity improvements, the CLI accepts tons of different programming languages, and so forth -- those things are good -- but, how can you miss the fact that it's always, always, ALWAYS going to be the "real deal" only on Windows? That's arguably by design. We shouldn't even be talking about the legal stuff. This is being pushed on Linux. This "desire" or "need" to run Mono is artificially overemphasized.

[ Reply to This | # ]

Panacea for .NET patent trouble
Authored by: Anonymous on Friday, July 17 2009 @ 06:31 AM EDT
If Microsoft want .NET to be a cross-platform delevopment environment, they have
the option of releasing it under GPL3 (or LGPL3 if GPL3 does not allow anyone to
build propriatory software using .NET).
Since Microsoft don't make money from .NET licenses directly, that is the most
straightforward solution. It would mean they can incorporate anything that Mono
does better (which may be a lot, given that Mono has been under more scrutiny
that .NET.)

[ Reply to This | # ]

FSF: FOSS developers "still should not write software that depends on Mono"
Authored by: Anonymous on Friday, July 17 2009 @ 09:25 AM EDT
To put it simply, the proponents of Mono ask us to give Microsoft the benefit of
the doubt. Yet, experience has shown that giving MS the benefit of the doubt is
fatal to the donor.

Since there is a legal cloud over Mono, and no compelling reason to use it, it
is better to avoid it altogether.

[ Reply to This | # ]

Future Safe for FOSS - FSF: FOSS developers "still should not write software that depends ...
Authored by: Anonymous on Friday, July 17 2009 @ 09:38 AM EDT
"At the moment, even if all the conditions above were satisfied and it were
safe to use C#, there's no guarantee that it's not an evolutionary dead-end for
FOSS. Languages exist in a context, and they have to change and evolve to remain
useful in a changing landscape. But there's no commitment that I've seen from MS
to keeping the future safe for FOSS. "

That's the problem I see with all of Microsoft's promises. They limit the
"will not sue" promise to a specific version of the software, when
they already have another version in the works, to be released in a few months.
They support the last revision of Open Document Standard, and oh by they way,
find a part of the old specification, that when implemented doesn't work with
actual implementations by other developers. They expect everyone to write code
that accounts for all their bugs, but don't do anything the other way. That's
when you've taken the trouble to reverse-engineer their stuff to find all their
bugs. And oh by the way, after you've done all that work, you are violating
this patent which we did not promise not to sue on, so cease and desist!

Crud in a million gallon tank.

Trust Microsoft, to break anything you do that they don't like. Develop a great
app that becomes popular. Hey, MS will buy you out, and guarantee to pay you a
share of their sales of the product. Only they don't sell your product any more
but put it on the shelf and bring out their own lame variation, and you get

The only time they pay attention is when millions of customers tell them they
don't want their latest version of DRM laden .... and strip it from any new
machines they buy and put the previous version on it. Then they listen, kind
of. The benchmarks don't lie. For any given machine XP is always faster than
Windows 7.

The only justification I have for buying an XP netbook is that MS gets almost
nothing for it, and it's not my fault that the vendors have pulled all the Linux
netbooks from the big box stores. I know how to install a live CD. (Though
I'll need to learn how to make a live memory stick, but I'm told that's pretty
simple.) It will be an educational experience, and I'm looking forward to it.
Heck, I might go with a dozen variations, just for the fun of it.

(Does anyone know if MS has patents on the NTFS file system that might get
triggered? Would be surprised if they don't.)

[ Reply to This | # ]

Why MS's promise doesn't matter ot me
Authored by: tknarr on Friday, July 17 2009 @ 09:55 AM EDT

Several reasons:

  1. It's limited to the current version only, with no guarantees made that it'll extend to any new versions. Microsoft has a track record of creating new versions when it suits their business needs or when needed to render third-party software incompatible.
  2. It's hedged around with so many conditions that I consider it unsafe to assume any non-MS implementation meets all the requirements to be protected. Microsoft has a track record of interpreting things in the way most advantageous to them, and they've put too many things they can interpret in there for my liking.
  3. It doesn't grant a license. It's merely a promise that they won't sue. They can revoke that promise any time they want, and then where am I? Yes, I can raise collateral estoppel as a defense in court, but that requires that I go into court. That's always a losing proposition, the best I can hope for is to have to spend several tens of thousands of dollars to stay where I was before the excercise. Best just to not go there in the first place.
  4. This is Microsoft. Their track record speaks for themselves. I don't think there's a party who's ever gotten into bed with them who hasn't ended up regretting it. If I'm sensible, I'm not going to expect them to radically change their behavior overnight. Leopards, as they say, do not change their spots, and when someone's proven they're untrustworthy time and time again over the course of years the prudent person simply stops trusting them.

[ Reply to This | # ]

Authored by: grw on Friday, July 17 2009 @ 10:33 AM EDT
The reasons given by Mono developers for programming in C# and .net are
technical. It is better than anything else they claim. So why haven't any free
software developers invented an equivalent language and framework that is more
attractive to programmers than Microsoft's creation? It is not like inventing
new programming languages hasn't been done before. If there was something better
that was free of patent threats, then it seems to me that programmers would
migrate to it in due course. As a Gnu/Linux user, I like some of the programs
developed in Mono on the basis of features and design. From the point of view
of a user, I want to use the best programs available. Free is important to me,
but I have been willing to compromise and I do use some non-free programs, but I
prefer free and am wary of supporting something that may compromise my freedom.
However, non-ideological users will choose software based on features and
design, so it is incumbent upon free software developers who wish to promote
free software philosophy to develop programs that are compelling to people.

[ Reply to This | # ]

How to remove Mono
Authored by: Anonymous on Friday, July 17 2009 @ 02:00 PM EDT

Once these commands become settled, put them in the Groklaw sidebar?

Please refine these commands if they need it. Why does Debian removal require
more syntax than Fedora?

For your critique:

Debian: apt-get remove --purge mono-common libmono0 mono libmono1.0-cil

Fedora: yum remove mono-core

Slackware: Does Slackware even have Mono?

Yes, I've heard of "mononono" but haven't tried it. Supposed to keep
Mono from coming back on subsequent app installs. But when I've done that, I get
notified of other dependencies anyway, so once Mono is removed, you can tell if
wants to reinstall. Does mononono do more than this? Enlighten, please.

[ Reply to This | # ]

Lets not forget what they tried to do with OpenGL
Authored by: mobrien_12 on Saturday, July 18 2009 @ 06:16 AM EDT
Remember when MS bought a bunch of patents pledged royalty free to OpenGL? Then
decided it was time to charge for them?

[ Reply to This | # ]

  • Link, please - Authored by: tiger99 on Saturday, July 18 2009 @ 08:30 AM EDT
    • Links - Authored by: stegu on Saturday, July 18 2009 @ 11:58 AM EDT
FSF: FOSS developers "still should not write software that depends on Mono"
Authored by: Anonymous on Saturday, July 18 2009 @ 09:44 PM EDT
If my competition wants to keep using C or C++, more power to them. I'm
happy to retain the competitive advantage C# gives me. :-)

[ Reply to This | # ]

Not impressed with FSF's analysis
Authored by: Anonymous on Sunday, July 19 2009 @ 09:32 PM EDT
The rebuttal in this comment at seems spot on to me.

[ Reply to This | # ]

Groklaw © Copyright 2003-2013 Pamela Jones.
All trademarks and copyrights on this page are owned by their respective owners.
Comments are owned by the individual posters.

PJ's articles are licensed under a Creative Commons License. ( Details )