LWN.net Logo

de Icaza: From Microsoft: C# and CLI under the Community Promise

Miguel de Icaza reports on Microsoft applying its "Community Promise" to C# and the Common Language Infrastructure (CLI). This means that Microsoft will not assert its patents against the Ecma and ISO standard portions of Mono (and other implementations of those standards). "Astute readers will point out that Mono contains much more than the ECMA standards, and they will be correct. [...] In the next few months we will be working towards splitting the jumbo Mono source code that includes ECMA + A lot more into two separate source code distributions. One will be ECMA, the other will contain our implementation of ASP.NET, ADO.NET, Winforms and others."
(Log in to post comments)

de Icaza: From Microsoft: C# and CLI under the Community Promise

Posted Jul 7, 2009 13:50 UTC (Tue) by kragil (subscriber, #34373) [Link]

Does this prove that Novell and MS are not immune against "community uproar" ?

de Icaza: From Microsoft: C# and CLI under the Community Promise

Posted Jul 7, 2009 13:50 UTC (Tue) by tzafrir (subscriber, #11501) [Link]

Does this cover any latest updates the .Net environment as e.g. included in .Net3.5 (released) and .Net4 (in the works) of Microsoft?

de Icaza: From Microsoft: C# and CLI under the Community Promise

Posted Jul 7, 2009 14:42 UTC (Tue) by drag (subscriber, #31333) [Link]

I don't really understand the question. Maybe I am confused... but.

C# and the Common Language Infrastructure (CLI) is to .NET what C++ and compiler is to KDE.

.NET is a huge sprawling monster covering a massive amount of APIs, hooks, functionality and whatnot that is designed for a entire application programming environment.

Were as on the other hand C# and CLI is a open specification, published by ECMA on behalf of Microsoft, that defines a language and language runtime environment. The reason MS did that was to promote the language... they WANT 3rd parties to use it and establish it as real language and runtime environment.

So, no. The "promise not to sue" only covers the language, not .NET. These are two completely seperate things.

This is why things like Tomboy are safe for Linux distributions. (at least as safe as any other language). It (AFAIK) has no .NET at all in it. It is pure Gnome and does not use any Microsoft technology besides the actual CLI, which is a open specification.

However Tomboy being safe does not make all of Mono or all Mono programs safe. One of Mono's goals is to create a .NET compatibility layer so that it is easy for commercial folks to port their applications over to Linux.

In that case Mono is in the same league as Wine and Winelib. They are designed to do the similar things, which is to provide a development environment were users can build and run applications in Linux that will also run fine in Windows, and make it easier for developers to make Windows programs cross-platform.

So it really is a good idea to split off the ".NET" portions of Mono into seperate packages so that distributions can keep the "pure gnome" side of things seperate and be safe from Microsoft's patents.

de Icaza: From Microsoft: C# and CLI under the Community Promise

Posted Jul 7, 2009 15:03 UTC (Tue) by tzafrir (subscriber, #11501) [Link]

As the most common implementation of that standard (the Microsoft one) evolves, do the EMCA standards evolve with it?

de Icaza: From Microsoft: C# and CLI under the Community Promise

Posted Jul 7, 2009 15:26 UTC (Tue) by Jonno (subscriber, #49613) [Link]

Yes, usually in well advance of the .Net framework

de Icaza: From Microsoft: C# and CLI under the Community Promise

Posted Jul 7, 2009 15:30 UTC (Tue) by tzafrir (subscriber, #11501) [Link]

http://www.ecma-international.org/publications/standards/... - 4th edition (June 2006)

http://www.ecma-international.org/publications/standards/... - 4th edition (June 2006)

So where can I find those newer versions?

de Icaza: From Microsoft: C# and CLI under the Community Promise

Posted Jul 10, 2009 18:48 UTC (Fri) by jlokier (guest, #52227) [Link]

No. LINQ is part of the Microsoft C# language, but where is it in ECMA?

de Icaza: From Microsoft: C# and CLI under the Community Promise

Posted Jul 7, 2009 14:16 UTC (Tue) by quartz (guest, #37351) [Link]

That is the problem, this is one more way of enforcing that linux is always behind microsoft. First, Mono might not be allowed to implement the libraries. Second, AFAICT, this only covers the existing ECMA standard (even if microsoft allowed all ECMA standards they eventually pushed, it could take years for them to publish them...)

"announced" on a blog? and only for *complete* implementations

Posted Jul 7, 2009 14:29 UTC (Tue) by stevenj (guest, #421) [Link]

First, take this with a grain of salt because there is apparently no official announcement from Microsoft, only an unaffiliated blog article with a single somewhat ambiguous quote from MS saying only that the "Community Promise is an excellent vehicle."

Second, if the blog is believed, the Community Promise will apply only to the ECMA C# and CLI specifications, not to .NET.

Third, Microsoft's Community Promise contains the somewhat problematic condition for free software:

The CP applies only if the implementation conforms fully to required portions of the specification. Partial implementations are not covered.

"announced" on a blog? and only for *complete* implementations

Posted Jul 7, 2009 14:44 UTC (Tue) by jake (editor, #205) [Link]

> because there is apparently no official announcement from Microsoft

Well, the Port 25 blog post (http://port25.technet.com/archive/2009/07/06/the-ecma-c-a...), which Miguel references and perhaps I should have linked to, is on a Microsoft blog. Your other concerns seem like they may be issues, but I don't think there is too much question about the first.

jake

"announced" on a blog? and only for *complete* implementations

Posted Jul 7, 2009 23:32 UTC (Tue) by SEMW (guest, #52697) [Link]

> First, take this with a grain of salt because there is apparently no official announcement from Microsoft, only an unaffiliated blog article with a single somewhat ambiguous quote

The LWN paragraph links to the Microsoft Community Promise page ( http://www.microsoft.com/interop/cp ), which lists C# and the CLI as covered specifications.

What does this improve??

Posted Jul 7, 2009 15:34 UTC (Tue) by coriordan (guest, #7544) [Link]

The point of the article isn't clear to me.

Splitting the codebase won't change much. The problem with Microsoft's technologies is that they exist in an environment that's known to be heavily patented. This agreement might make it safer to make exact implementations of MS's systems (so maybe Novell is a bit safer), but using them as a starting point for free software packages is still a really bad idea. No?

What does this improve??

Posted Jul 7, 2009 15:48 UTC (Tue) by me@jasonclinton.com (subscriber, #52701) [Link]

> "No?"

No.

What does this improve??

Posted Jul 7, 2009 17:40 UTC (Tue) by bronson (subscriber, #4806) [Link]

That's quite a reply. If you can't/won't substantiate your position, you support coriordan's point quite nicely.

What does this improve??

Posted Jul 7, 2009 18:10 UTC (Tue) by coriordan (guest, #7544) [Link]

Tom "spot" Callaway (Fedora's licence guy) has a similar take:

It really doesn't affect our stance on Mono at all. Microsoft is "covering" less than OIN does for us, and it doesn't go anywhere near the areas we currently stay away from (Silverlight/Moonlight). Full of sound and fury, but signifying nothing.

What does this improve??

Posted Jul 9, 2009 15:33 UTC (Thu) by epa (subscriber, #39769) [Link]

When he says it doesn't change Fedora's position at all, he means that Fedora already ship Mono. They were happy with the legal situation even before this announcement, and this announcement doesn't change anything. Fedora refuses to ship Moonlight (for not very good reasons IMHO) and it is not covered by this announcement, so they are going to continue with that policy.

de Icaza: From Microsoft: C# and CLI under the Community Promise

Posted Jul 7, 2009 15:52 UTC (Tue) by tdz (subscriber, #58733) [Link]

Does anyone know how safe this is? Microsoft can promise a lot, but without any concrete agreement between them and, lets say, the Mono Project, how much weight would such a promise have in court?

Regards, Thomas

my guess: not safe

Posted Jul 7, 2009 17:36 UTC (Tue) by coriordan (guest, #7544) [Link]

Microsoft can promise a lot

They can, but they don't even do that much. This agreement only protects people who are writing C# and CLI compilers/interpreters. The (careless) people who use either of these technologies to make their own software are still left unprotected in a very patent dangerous field.

my guess: not safe

Posted Jul 8, 2009 4:03 UTC (Wed) by njs (guest, #40338) [Link]

Can you clarify how you conclude that? The actual text begins:

> Microsoft irrevocably promises not to assert any Microsoft Necessary Claims against you for making, using, selling, offering for sale, importing or distributing any implementation [...]

Which on its face would seem to cover, well, not just making but also using, selling, etc.

Is the idea that in writing C# code you will necessarily produce additional instances of infringement, above and beyond those present in the runtime itself?

de Icaza: From Microsoft: C# and CLI under the Community Promise

Posted Jul 7, 2009 17:57 UTC (Tue) by bronson (subscriber, #4806) [Link]

This gets into some very gray legal areas. If you're interested, read up on estoppel. Would Microsoft intentionally estop themselves? It seems rather unlikely.

I would guess there's enough ambiguity in this promise that it doesn't actually amount to much legally. I'm basing that on MS's rather long history of saying one thing and doing another -- I haven't actually read this particular situation very closely. Personally, I find it much easier just to not install Banshee and F-Spot. :)

de Icaza: From Microsoft: C# and CLI under the Community Promise

Posted Jul 7, 2009 23:37 UTC (Tue) by SEMW (guest, #52697) [Link]

In particular, I think bronson's mention of Estoppel above is worth expanding on here. I'll quote from the Wikipedia article:

"In general, estoppel protects an aggrieved party, if the counter-party induced an expectation from the aggrieved party, and the aggrieved party reasonably relied on the expectation and would suffer detriment if the expectation is not met.

"While there are many types of estoppel, in simpler terms, most estoppels prohibit an individual or group from being harmed as a result of another's deeds, statements or promises, when later actions or statements contradict or undermine what was originally stated, promised, or inferred."

Children's poem summarizes this perfectly

Posted Jul 7, 2009 16:21 UTC (Tue) by dskoll (subscriber, #1630) [Link]

Will you walk into my parlour?" said the Spider to the Fly,
'Tis the prettiest little parlour that ever you did spy;
The way into my parlour is up a winding stair,
And I've a many curious things to shew when you are there."
"Oh no, no," said the little Fly, "to ask me is in vain,
For who goes up your winding stair can ne'er come down again."

Mary Howitt

And the moral...

Posted Jul 7, 2009 19:47 UTC (Tue) by ikm (subscriber, #493) [Link]

"...If Microsoft to Mono
Is spider to the fly,
Then so be it, my dear friends -
That Mono has to die!"

(grinning :)

And the moral...

Posted Jul 7, 2009 23:21 UTC (Tue) by jordanb (guest, #45668) [Link]

That's pretty good. The meter is a bit off though. I think it works better like this:

If Microsoft to Mono
Is the spider to the fly
Then so be it, dear friends
That Mono has to die

That gives seven syllables in the first two lines, and six on the next with a rhythm:

U S U S U S U
S U S U S U S
U S U S S S
U S U S S S

The rhyme scheme is still a bit wonky though: A B C B

And the moral...

Posted Jul 8, 2009 1:26 UTC (Wed) by dskoll (subscriber, #1630) [Link]

Microsoft and Mono
Are the Spider to our Fly.
Nothing's done pro-bono:
They want OSS to die.

Better rhyming scheme? :-)

And the moral...

Posted Jul 8, 2009 2:42 UTC (Wed) by jordanb (guest, #45668) [Link]

Well, Mono and Bono are a poor rhyme (it'd work better if you were referring to the singer), and you too the meter out back and shot it. ;)

Microsoft really has us going...

Posted Jul 7, 2009 16:38 UTC (Tue) by astrophoenix (guest, #13528) [Link]

so Microsoft puts out one little announcement, and now all the mono devs are scurrying around like ants working their asses off. what if next week Microsoft announces something contradictory? this sucks.

Microsoft really has us going...

Posted Jul 7, 2009 17:17 UTC (Tue) by drag (subscriber, #31333) [Link]

I think it has much more to do with making distributers and users comfortable with Mono's CLI and C# implementation then it has to do with the Microsoft announcement.

Nothing has fundamentally changed with this announcement. Anybody paying attention knew pretty well that C# and CLI were safe to implement.

The questionable portions of Mono, from a legal standpoint, were the parts that implement .NET compatibility.

So Mono working to split off the .NET stuff from the CLI stuff is going to make it easier (not to mention reduce the footprint) for distributions to incorporate C# programs that don't use .NET (like Fspot) without worrying about it.

-----------------------

Personally I am not a huge fan of C# or whatever.. but I hate to see a huge amount of hard work knocked down through nothing more then ignorance and paranoia.

Microsoft really has us going...

Posted Jul 7, 2009 17:38 UTC (Tue) by tzafrir (subscriber, #11501) [Link]

What you write here actually makes me more uncomfortable.

Could you please explain why do you think Mono is useful and should be included in distributions? I wonder how this split affects those arguments as my feeling is that it doesn't.

Microsoft really has us going...

Posted Jul 7, 2009 18:18 UTC (Tue) by drag (subscriber, #31333) [Link]

I think that it should be included for the same reasons why they include python or C++ support.

It's a nice language that a lot of people who are new to Linux already know very well and is comfortable with. Schools and universities are full of people that are learning C#. So it's a very nice option to have and is a nice alternative to programming in C for Gnome folks. Python is very high level and is slow, and C is very fast. C# is a nice in-between and it's bindings are very good.

It's just that I feel that distributions should stay away from including the .NET stuff by default. Lots of users need that sort of thing and is a nice option to have, but there are lots of stuff that is not included in distros by default for lots of reasons. Just as long as its packaged and available should be fine.

Microsoft really has us going...

Posted Jul 7, 2009 20:06 UTC (Tue) by tzafrir (subscriber, #11501) [Link]

The counter argument to that is that Mono and .Net are not the same thing. "Mono-Safe" seems to only cover basic parts. It also fails to cover later features of C# and the run-time (anything later than 2006. That's the latest thing I see on EMCA's page).

But those students will want features only available in Mono-Risky. And I wonder how we can reduce the risk here.

Microsoft really has us going...

Posted Jul 7, 2009 20:24 UTC (Tue) by drag (subscriber, #31333) [Link]

That would be right that Mono isn't .NET. But I think that C# with Gnome would still have positive benefits, even if your dealing with people that are only familar with .NET so far.

Microsoft really has us going...

Posted Jul 8, 2009 6:11 UTC (Wed) by jamesh (guest, #1159) [Link]

Could you please explain why do you think Mono is useful and should be included in distributions? I wonder how this split affects those arguments as my feeling is that it doesn't.

The same reason as you'd include any framework in a distribution:

  1. It is required by applications that would be nice to include in the distribution.
  2. It is useful for people using the distribution as a development platform.

With the proposed split, some distributions might decide that only the core portion of Mono satisfies those goals (e.g. because the apps they want to include use GTK# rather than WinForms), and omit the portions not covered by Microsoft's promise.

Microsoft really has us going...

Posted Jul 8, 2009 1:27 UTC (Wed) by ncm (subscriber, #165) [Link]

C# and CLI were [already] safe to implement. The questionable portions of Mono, from a legal standpoint, were the parts that implement .NET compatibility.

False. MS's US patents appear to cover possibly unavoidable details of implementation of CLI. They may assert these patents against Mono with or without .NET attached. As coriordan noted in 340344, protecting the Mono developers, if in fact this announcement does such a thing, does nothing for Mono distributors, Mono coders, or Mono users.

Microsoft really has us going...

Posted Jul 8, 2009 2:08 UTC (Wed) by drag (subscriber, #31333) [Link]

Mono folks worked based off a standard Microsoft set up themselves. They shared code with Microsoft, went to Microsoft conventions, announced products, did demonstrations.

Microsoft even made sure to license them codecs free of charge in order to get silverlight legal to distribute for Novell.

Microsoft has had full knowledge of Mono from _day_one_.

Now Microsoft has publicly announced, under no uncertain terms, that they will absolutely not file claims against anybody who makes, uses, sells, distributes or imports in any manners.

Now you and other people decide that none of this means anything.. that a company can sit on patents for years and help a competitor and then all of a sudden a decade later go after them... even after publicly announcing, in writing on their own website that they won't. But from what I can tell and from what I know that is a whole bunch of flaming horseshit and, in fact, C# is safe to use.

Protestations notwithstanding

Posted Jul 8, 2009 2:43 UTC (Wed) by ncm (subscriber, #165) [Link]

As I and others have noted, "going after" users or distributors of Mono, who Microsoft has never addressed, is not the same as "going after" Novell or its employees who MS helped in developing Mono. It's in MS's interest for dependence on Mono to spread to all corners of the earth, just as it's in the interest of a codec or RAM bus developer to get its use standardized and unavoidable. In either case such activity broadens the field of possible licensees. Failing to assert a patent, for any number of years, does not reduce the force of the patent, until of course the patent expires. It's common, though, to stipulate in a license contract that royalty or other demands continue in force after the termination of the patent itself, so there's no hurry. Waiting until a few years before expiration to start extorting is just good business.

Therefore, all your protestations of MS's foreknowledge are irrelevant and, in fact, misleading.

I doesn't makes the rules, I doesn't legally advises about the rules, I only reports the rules.

Microsoft really has us going...

Posted Jul 8, 2009 13:45 UTC (Wed) by dgm (subscriber, #49227) [Link]

Never forget that no matter how open the specification, Microsoft still retains full control of the intellectual property.

This "promise" allows you to use their purported property, if and only if you play by their rules (there is, at least, one "kill switch".)
So, no, it's not any safer to use Mono (.NET or not) than before.

In my opinion, we should be helping people migrate off .NET ASAP, not helping it spread. To that goal, Mono is a disaster. It can barely run non-trivial software written for .NET, and instead does encourage new developments in those patent encumbered technologies.

Microsoft really has us going...

Posted Jul 9, 2009 16:44 UTC (Thu) by Quazatron (guest, #4368) [Link]

I have nothing against C# -- except that it's yet another runtime bytecode interpreter to have loaded, consuming precious memory, in order to run a simple note taking program.

I don't run Mono apps for the same reason I don't run KDE apps when using a Gnome desktop: memory consumption.

I already have a python instance running on my desktop. I'd like it if Gnome developers kept the language selection to a minimum. If they start including applications made in every language under the sun, soon we'll need Java, PHP, Javascript, Ruby and OCaml runtimes loaded as well.

Microsoft really has us going...

Posted Jul 11, 2009 9:52 UTC (Sat) by nix (subscriber, #2304) [Link]

Well, part of this depends on how big the bytecode interpreters are. The
bytecode interpreter is probably small: the downside is the entire
heavyweight optimizer, native-code JITter, and enormous library that
probably comes with it.

Lua is a pretty good example of an interpreted language so small and fast
that you don't *care* if a program uses it (and with LuaJIT the speed hit
drops even further to the point where it's often indistinguishable from
native code). The 'big' languages with big libraries (Python and Perl to
some degree: Java and C# definitely) you always know are there :/
amazingly the Java people tried to turn this into a *benefit* -- the '100%
Pure Java' thing, which was supposed to emphasise binary-portability
benefits that nobody needs and instead emphasised 'hey, this program is
really big and slow, go find something else' to most of its potential
users.

de Icaza: From Microsoft: C# and CLI under the Community Promise

Posted Jul 7, 2009 18:50 UTC (Tue) by butlerm (subscriber, #13312) [Link]

In hindsight, the Mono project should have split out the .NET stuff from the
very beginning. WinForms, ASP, ADO, WPF, ...

With that split out, the Fedora attitude to not including the Mono core seems
pretty juvenile to me. The whole Linux world is a compatible implementation
of a proprietary operating system. Serious case of NIH syndrome.

One might as well use the same argument with the POSIX API - it is derived
from Unix, the vendors cannot be trusted, therefore we should eliminate any
trace of POSIX and send Linux to an early grave. Or at the very least,
Microsoft could sanitize its systems from any POSIX influence. Maybe that is
what they already did.

de Icaza: From Microsoft: C# and CLI under the Community Promise

Posted Jul 7, 2009 19:41 UTC (Tue) by rahulsundaram (subscriber, #21946) [Link]

What Fedora attitude are you talking about? Fedora has included Mono for
quite sometime.

http://lwn.net/Articles/179597/

Fedora up until the last version includes Mono (because of Tomboy and F-
Spot). You don't get Mono by default if you install from the Live CD since
Fedora 10 but that's because of lack of space as opposed to anything legal.
Gnote will be default in Fedora 12, again because of the same reasons.

http://fedoraproject.org/wiki/Fedora_11_Alpha_release_not...

de Icaza: From Microsoft: C# and CLI under the Community Promise

Posted Jul 7, 2009 19:51 UTC (Tue) by rahulsundaram (subscriber, #21946) [Link]

de Icaza: From Microsoft: C# and CLI under the Community Promise

Posted Jul 7, 2009 19:43 UTC (Tue) by einstein (subscriber, #2052) [Link]

> The whole Linux world is a compatible implementation of a proprietary operating system. Serious case of NIH syndrome.

It has nothing whatsoever to do with NIH but rather the danger of exposing linux users to lawsuits.

Promises, promises, promises

Posted Jul 7, 2009 19:33 UTC (Tue) by mjw (subscriber, #16740) [Link]

Last time Microsoft made a Promise, the Open Specification Promise, it turned out not to be as good as one would have hoped:
http://www.softwarefreedom.org/resources/2008/osp-gpl.html

Does the Community Promise fix this?

Promises, promises, promises

Posted Jul 7, 2009 23:45 UTC (Tue) by SEMW (guest, #52697) [Link]

No; as far as I can see, their complaints still apply. In particular, all the quotes from the OSP singled out for complaint are still to be found on the CP page.

de Icaza: From Microsoft: C# and CLI under the Community Promise

Posted Jul 8, 2009 7:46 UTC (Wed) by jengelh (subscriber, #33263) [Link]

The whole thing would be totally easy if Microsoft just did assert their patents against someone.

Or

Posted Jul 8, 2009 16:55 UTC (Wed) by man_ls (subscriber, #15091) [Link]

It would also be easy if Microsoft had never asserted their patents against anyone. As it is they seem to just want to create FUD -- OH NOES CANT BE!

Copyright © 2009, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds