Microsoft Puts C# and the CLI Under "Community Promise"
FishWithAHammer writes "Peter Galli of Microsoft posted a blog entry on Port25 today, regarding the explicit placement of C# and the Common Language Infrastructure (the ECMA standard that underpins .NET) under their Community Promise: 'It is important to note that, under the Community Promise, anyone can freely implement these specifications with their technology, code, and solutions. You do not need to sign a license agreement, or otherwise communicate to Microsoft how you will implement the specifications. ... Under the Community Promise, Microsoft provides assurance that it will not assert its Necessary Claims against anyone who makes, uses, sells, offers for sale, imports, or distributes any Covered Implementation under any type of development or distribution model, including open-source licensing models such as the LGPL or GPL.'"
Adds reader anshulajain: "Understandably, Miguel De Icaza is jumping with joy."
Now Microsoft is estopped from going after people using c# and .net technologies.
This is the answer I've wanted from Miguel ever since the Novell brouhaha.
Promissory estoppel serves as a "consideration substitute" in contract law that renders certain promises otherwise lacking in consideration binding and enforceable. In such cases, the promisee's reliance is treated as an independent and sufficient basis for enforcing the promise. Promissory estoppel can be viewed as a legal device that prohibits the promissor from denying the existence of a contract for lack of consideration.
http://www.lawnix.com/cases/promissory-estoppel.html
"Q: Is this Community Promise legally binding on Microsoft and will it be available in the future to me and to others?
.NET but not covered by the standard (like Winforms)
A: Yes, the CP is legally binding upon Microsoft. The CP is a unilateral promise from Microsoft and in these circumstances unilateral promises may be enforced against the party making such a promise. Because the CP states that the promise is irrevocable, it may not be withdrawn by Microsoft. The CP is, and will be, available to everyone now and in the future for the specifications to which it applies. As stated in the CP, the only time Microsoft can withdraw its promise against a specific person or company for a specific Covered Specification is if that person or company brings (or voluntarily participates in) a patent infringement lawsuit against Microsoft regarding Microsoft's implementation of the same Covered Specification. This type of "suspension" clause is common industry practice."
tl;dr they can't sue you, ever, unless you sue them over patents.
Also, Mono contains
1) parts that are covered by the ECMA standard (C# and the CLI)
2) original namespaces (like Mono.Simd)
3) open-sourced Microsoft stuff (like ASP.NET, under the OSI-approved MS-PL license)
4) parts that are in
which is why Miguel de Icaza says they'll be splitting their distribution up into now definitely safe (1 and 2) and potentially dodgy (3 and 4) packages, which is what already happens on Ubuntu for instance.
Sorry, but you're spreading FUD. You can write a GUI in Mono without Windows Forms, and its generally even a good idea anyway since WinForms on anything but Windows looks and works horrible. On Linux its generally done with GTK#.
If you want a GUI on Windows, or using the Windows libraries, sure.
GTK# is entirely developed by the Mono project, and requires none of the aforementioned Microsoft parts. That means applications like Tomboy and Banshee should now be fully RMS-friendly.
Mono is more than just 'running Windows applications on Linux'. There is a large ecosystem of utilities developed with it, because (a) a properly object-oriented language with native bindings is much better than the C-with-Gobject alternative, and (b) Java was not Free at the time.
Maybe you pro-Mono FUDites should read what they are really promising. It only covers the core language and run-time, not anything useful like the libraries.
If you install libgdi+, Winforms works just find on FreeBSD.
As for looks that's a matter of taste, I never minded how Windows looks, but Gnome never really suited me. With libgdi+, winforms tend to look a lot like plain old Windows.
Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
The lawyers amongst us are leaping for joy. I happen to be a law convert. So ill try and explain why we're happy!
Promissory estoppel is a legal defence (a so called shield). When a party (A) intending legal relations promises not to assert their strict legal rights, and another party (B) moves to rely upon this promise, that party (A) is estopped from enforcing their rights (against B) by way way of promissory estoppel.
It goes something like this: Now MS has promised not to enforce their C#-rights , and people rely on this promise, such as start development/deploying C# applications because of this promise, if the case came to court, MS's argument would be estopped by a defence of promissory estoppel.
It's a little more complicated. For instance it must be inequitable for B if A reneges on their promise (fairly clear if they suffer a disadvantage or loss as 'one who comes into equity must come with clean hands'), the promise must be clear and unequivocal (I'd say yes), there must be a change in reliance on the promise (yes), and it is a shield not a cause of action (in other words, we can't sue MS for revoking the promise, we can simply aovid being sued).
However, things get a little confusing. MS have declared that this promise is unilateral, in other words, it is a promise to the world without the need for a formal agreement. Such things are valid in the eyes of the law, and enforced by the fact promissory estoppel acts as an equitable remedy - there is no need for consideration, a key ingreediant to the traditional offer/acceptance/consideration contractual model.
Promissory estoppel is a common law principle. It's basis in England is from Lord Denning's High Court decision in High Trees.
Law bit:
In High Trees, due to WW2, the claimant ("High Trees") agreed to reduce rent for a block of flats. After the war, the claimant brought action seeking the past and future rent. Lord Denning said "When a promise is made that is intended to be acted upon, and is acted upon, you are estopped from going back on it."
In High Trees Denning referred, not to a previous case of Foakes v Beer (about the part payment of debt), but Hughes v Metropolitan Railway to establish his basis for promissory estoppel. In Hughes, it was held that the opening of negotiations for sale of a property had an implied promise not to enforce an outstanding notice of repair that would forfeit the respondents lease.
Key to the criticism over Denning's decision is that Hughes only suspended rights, whereas High Trees may extinguish them. This position has recently been approved in the UK by the House of Lords in Tool Metal Manufacturing Co. Ltd - the promisor may revive rights by formal notice, unless it is impossible for the promisee to resume his original position.
Is it impossible to resume the original position prior to this agreement? We're talking about computers here. The agreement has come now, not several years ago. Consider Mono as it is now, as the original position. This is such a contentious area when you consider MS can revoke the promise, creating ambiguity, and because under Coombes v Coombes promissory estoppel is not a cause of action, the Mono community cannot sue MS to enforce this promise!
Matt
He has already done that with Java, after Sun released it under the GPL.
Before that, he deprecated Java like he’s doing with Mono now.
I find it pretty amazing when you mention this to most C# programmers, they'll go on about how different C# is from Java.
"They" do? Really! Funny, as a C# programmer who has fairly extensive experience with Java, I've never said any such thing. Maybe you should try *not* stereotyping large groups of people, eh?
For the record, C# is really Java polished up. It provided generics and a foreach loop first, implements type-safe function pointers, lambdas (the absence of lambdas in Java always annoyed the hell out of me), a much better native call interface, and a few minor but handy language features (eg, safe ref and out parameters, using blocks, etc). And I very much prefer the native GUI of C# applications (although the nasty boilerplate necessary to build them makes a GUI builder absolutely required).
On the API side, they're about equivalent, though both have their warts... although, I must confess, some of the problems in the .NET API are a bit baffling (date handling in .NET 2.0, for example, is unbelievably primitive... there is simply no facility for doing arbitrary time zone conversions... seriously, what the hell?).
But anyone who argues that C# is basically the same as Java doesn't understand how some of those features can make a programmer's life *much* easier. Are they necessary? No, of course not. But they certainly are handy (honestly, without proper anonymous closures, I feel crippled as a programmer... as a tool for building clean, reusable, modular code, they're simply invaluable).
And as an aside, while I realize that Java is starting to take on a lot of these features, keep in mind, it probably never would have if it weren't for the competition that C# and .NET are offering. So, in the end, the Java fans out there can thank Microsoft for Java finally moving forward and gaining some of it's new, modern features (can we say "generics"?).
That was a research paper on ILX from 2001.
The research work from ILX was folded into .NET 2.0 and is part of ECMA 4th edition.
All of the instructions that you listed are deprecated, they never really made it into .NET, their much improved, polished and battle field tested versions did. And they are the foundation for C#'s generics support and Don Syme's F# compiler, both which run just fine in Mono today.
Writing GUI-based GTK# applications does not require any libraries not covered by this promise. There are FOSS database access libraries available for Mono that interface with MySQL etc. without needing ADO.NET. In fact, none of the high profile C# complex(!) applications for Linux like FSpot, Banshee or Tomboy require any libraries not covered. And Mono is separating the source code into two parts in a future release so that you can run the libraries in doubt at your own discretion and risk. You're the one who's missing it, not everyone else. Here is a figure for clear delineation. http://primates.ximian.com/~miguel/tmp/two-stacks.png
This space for rent.