|
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.
(eWeek.com, "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.
|
|
Authored by: Erwan on Friday, July 17 2009 @ 05:08 AM EDT |
If any.
---
Erwan[ Reply to This | # ]
|
|
Authored by: Erwan on Friday, July 17 2009 @ 05:08 AM EDT |
Please, quote the article's title.
---
Erwan[ Reply to This | # ]
|
|
Authored by: Erwan on Friday, July 17 2009 @ 05:09 AM EDT |
As usual...
---
Erwan[ 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
conduct.[ Reply to This | # ]
|
- Absolutely - Authored by: Anonymous on Friday, July 17 2009 @ 10:33 AM EDT
- Absolutely - Authored by: Anonymous on Friday, July 17 2009 @ 11:44 AM EDT
- Absolutely - Authored by: Anonymous on Friday, July 17 2009 @ 12:01 PM EDT
- Absolutely - Authored by: Anonymous on Friday, July 17 2009 @ 02:23 PM EDT
- Thank you PJ - Authored by: Anonymous on Monday, July 20 2009 @ 10:33 AM EDT
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
- MIcrosoft? sincere? - Authored by: Anonymous on Friday, July 17 2009 @ 05:58 AM EDT
- Real deal? - Authored by: Anonymous on Friday, July 17 2009 @ 06:59 AM EDT
- You don't get it - Authored by: Anonymous on Friday, July 17 2009 @ 07:26 AM EDT
- C++. - Authored by: tiger99 on Friday, July 17 2009 @ 07:52 AM EDT
- Which makes it moot - Authored by: Anonymous on Saturday, July 18 2009 @ 12:38 PM EDT
|
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.)
Michiel[ Reply to This | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
Authored by: tknarr on Friday, July 17 2009 @ 09:55 AM EDT |
Several reasons:
- 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.
- 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.
- 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.
-
- 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 | # ]
|
- Translate away from C# - Authored by: davecb on Friday, July 17 2009 @ 11:16 AM EDT
- My language is better than yours... - Authored by: Marc Mengel on Friday, July 17 2009 @ 11:43 AM EDT
- C# - Authored by: Anonymous on Friday, July 17 2009 @ 12:12 PM EDT
- C# - Authored by: stegu on Saturday, July 18 2009 @ 10:53 AM EDT
- non-ideological? - Authored by: zman58 on Friday, July 17 2009 @ 02:12 PM EDT
- C# - Authored by: Anonymous on Friday, July 17 2009 @ 02:17 PM EDT
- Ada? - Authored by: Anonymous on Friday, July 17 2009 @ 08:27 PM EDT
- C# - Authored by: Anonymous on Friday, July 17 2009 @ 11:03 PM EDT
- Python? - Authored by: bigbert on Friday, July 17 2009 @ 11:29 PM EDT
|
Authored by: Anonymous on Friday, July 17 2009 @ 02:00 PM EDT |
PJ:
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
libmono2.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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
Authored by: Anonymous on Sunday, July 19 2009 @ 09:32 PM EDT |
The rebuttal in this comment
at
lwn.net seems spot on to me. [ Reply to This | # ]
|
|
|
|
|