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."
"The Community Promise is an excellent vehicle and, in this situation, ensures the best balance of interoperability and flexibility for developers," Scott Guthrie, the Corporate Vice President for the .Net Developer Platform, told me July 6.
Ok, I certainly hope he received more than just that before he began proclaiming to the world that Microsoft is doing such a thing.
The optimist in me is excited. The skeptical in me is dubious, confused and does not trust blogs. It's not listed on Microsoft's list of products under the Community Promise so I'm going to refrain from breaking out the champagne until all the facts are finalized.
Anyone else got a better source for this than a loosely affiliated blog that bills itself as "Communication from the Open Source Community at Microsoft" ?
My work here is dung.
What alternate reality have I stepped into this week!? -head explodes-
they must be up to no good.
If you mod me down, I will become more powerful than you can imagine....
Microsoft love us and want us to be happy :-)
echo -e 'global _start\n _start:\n mov eax, 2\n int 80h\n jmp _start' > a.asm; nasm a.asm -f elf; ld a.o -o a;
no, he will just come up with some bullshit about it not being as "free" (ironic how his ilk have been able to twist that word) as the GPL.
If you mod me down, I will become more powerful than you can imagine....
No he will not and here's why:
Mono, which is related to .NET and CLI is much more than what ECMA standards specify yet there is no reference to those.
If he makes noise, he will have a point.
The 'community promise' does not extend to commercial downstream recipients of open source MONO applications !
It sounds promising, and it may end up meaning Stallman was wrong all along and that it was safe to implement .Net/C# (which GNU have done anyway). It's be useful to have somewhere slightly more authoritative to hear it from (like Microsoft themselves) but at least people don't need to worry about "arrrghh, it's a patent trap" and can get on with "hurrah! I can focus on coding for the desktop in a decent language rather than having low-level memory concerns etc".
Not that I ever cared anyway. Stick to the registered standard definition of C# and Microsoft couldn't exactly kill off Mono anyway, as they'd probably have ended up breaching the "fair and non-discriminatory" part of the patent licensing or been forced to give Mono a free license anyway.
At which point Mono does the simple open-source thing of implementing just the ECMA spec (plus its own extensions in its own namespace) and all is good again and RMS is back to the "nothing to complain about in C#/.Net" position :)
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
Good, now maybe the anti-Mono FUDites will shut up and play nicely.
That'd make Mono pointless, though. It'd just be another implementation of a system nobody uses.
Okay, first off - I'm a Linux user. I love FOSS. I'm also a realist - i put my trust in that my staff will be able to write C# apps in Wintendo that will function. I expect in the near future that portions may be converted over to mono so that we may host items on Linux servers:
http://www.perfectreign.com/stuff/2009/20090312_secure_submitter.jpg
http://www.perfectreign.com/stuff/2008/20080912_JEDI_Vitals_Screen.png
http://www.perfectreign.com/stuff/2008/20081205_ie6_yoda_ii_ponte.jpg
My question is this - does MS moving to a new license change my current licensing? How does it interact with those running SLES or Virtualized Windows 2008 under XEN?
The Kai's Semi-Updated Website Thingy
"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.
Why do people think C# is some new amazing language? Clearly MS took Java and gave it a MS framework.
If you would just use java you probably wouldn't have this fear of MS trying to undermine the OSS movement. When a multi-billion dollar company other than google tries to "help" OSS, you can only be suspicious.
http://www.javacamp.org/javavscsharp/getStarted.html
Here's why:
There is no mention of other components the extend .NET!
From the document...
"...We introduce instructions newdata, lddata, stdata, castdata, isdata and
switchdata to create and manipulate classunion values..." (emphasis mine).
In fact, this announcement is not much different compared to the one 7 years ago!
Watch out folks. Microsoft's classic Embrace, Extend, Extinguish paradigm is very possible here.
From the Microsoft Community Promise, with my emphasis:
Free software is often distributed to the public while in an incomplete state. This Community Promise appears not to apply to such an implementation that is published before it is completely compliant.
Necessary Claims are the patents which can be proven to a court to be infringed by any compliant implementation of the specification.
Given the incoherent mishmash of vaguely-specific documentation underlying the myriad layers of .Net, it is my considered opinion that this promise is completely and utterly useless. Microsoft needs only to show that your violation lies outside the subset of technologies covered, or that a possible implementation does not infringe their patents. Then your innocently-assumed protection vanishes, to be replaced by a drawn-out legal battle... Or, more likely, another company which happens to possess similar patents randomly decides to sue you.
At best, this signals yet another small step by Microsoft toward actually competing. More likely, it is a continuation of their cynical gamesmanship, intended only to serve as a continued basis for hindering innovation.
Grab your ankles, folks, this will hurt us all in the end.
*** Don't be dull.***
This is nothing new and nothing we didn't already know. It still says nothing about ASP.NET, Windows Forms and all the other parts of .NET that are not part of the ECMA standard. Mono implements many, many things outside the ECMA standard, so anybody but Novell who distributes or otherwise uses Mono is at risk of patent shenanigans.
Portable versions of Firefox, GIMP, LibreOffice, etc
Why would Miguel De Icaza be so happy if his previous assertions that there is nothing to worry about mean anything?
If you file, maintain, or voluntarily participate in a patent infringement lawsuit against a Microsoft implementation of any Covered Specification, then this personal promise does not apply with respect to any Covered Implementation made or used by you
Is that a patent retaliation clause? Interesting.
Anyhow, the way I read that, you can't sue Microsoft if they make use of one of your patents in their own implementations, albeit limited to the specifications covered in this initiative. That probably wasn't very interesting in the context of what had previously been released under this scheme (HealthVault Service Specification, UI Automation v1.0 , etc.), but .Net/Mono is much more serious technology and therefore more likely to contain or sprout patents.
So, considering that isn't it more likely that it's the indie developer (less likely to take out patents on own work) who wouldn't mind this promise rather than any commercial technology provider (more likely to take out patents on own work)? If that logic holds then one effect of this Microsoft initiative would be to prevent the emergence of any real commercial Mono competition to .Net.
Blearf. Blearf, I say.
I love C# as a language, and .NET has been one of my favorite products from MS, it's great to use for development and seems to be what Java should have been. My concern with this announcement though is that I can't get The Lord of the Rings out of my head...
Three Rings for the Elven-kings under the sky,
Seven for the Dwarf-lords in their halls of stone,
Nine for Mortal Men doomed to die,
One for the Dark Lord on his dark throne
In the Land of Mordor where the Shadows lie.
One Ring to rule them all, One ring to find them,
One Ring to bring them all and in the darkness bind them
In the Land of Mordor where the Shadows lie.
in the wise words of Ash.
As far as I am aware promises have little legal binding. There is always the worry that they will decide that some element "wasn't covered by the promise" and try to collect royalties, or sue for damages. Is it clear where the "open" libraries end and the "closed" operating system call start? (this is a genuine question; I don't know)
Strange, they are making promises about C# and the CLI but you still can't use the FAT filesystem?
They tried to sue TomTom for using FAT with Linux only a few weeks ago.
Microsoft are full of it. You simply can't trust them.
Why? We'll get a C# compiler, what's bad or unimportant about that?
to make itself remotely relevant among geeks. But it's too late. I certainly never be using any Microsoft technology or God forbid a language invented by them. Thanks MS, but no thanks. You betrayed all the trust you ever had. Have a long and painful death, bye.
As the island of our knowledge grows, so does the shore of our ignorance.
No Matter how sensuously it moves it's tail, it's the snake's head that will bite you.
(or throw a chair at you.)
Until the head is removed, I'm not going to play with it.
I have been following Mono for a while but I am currently still using Java.
The question is which do I commit to?
The way I understand it is:
Java has less "patent liability" than Mono. .net are covered by the Communtiy Promise but not some of the supporting libraries (e.g. ado.net, winforms).
All of Java is under an open license including "essential" libraries (e.g. data access, gui).
Only the "core" (including the framework libraries?) of
I know that these .net libraries have been implemented in Mono but would we have to write new open-source libraries to replace thier functionality and remain "patent-threat" free?
If this is the case then I would imagine that Java would be the preferred choice IF you had to chose one.
What are the overheads of both the Java and Mono virtual machines running at the same time? Would we be better getting behind just one environment and using that.
For what it's worth I really like and prefer Mono - especially Banshee (is there an equivalent for Java?) and I want to develop for it but the Community Promise only covers the ECMA part of .net. Without the other libraries I fear Mono is hamstrung.
At least with Java I know where I stand, all the libraries are included and the functionality is already there.
OK, first off it's excellent news if MS are doing this. It would be nice if they did the same for the parts of Mono / .NET that are outside ECMA.
As far as motivation for this goes, they're a business for whom pure co-operation seems to have dubious benefits. I assume that they believe that in this case more people using .NET is good for them and that they can compete well on the quality of the implementation and debugging tools (probably true if only because they'll have a head start on new features).
But the question I'm really curious about: CLI / C# / Mono seems to have generated a massive amount of controversy and therefore a lot of noise. Some fairly popular new apps have been written using it. The whole situation seems to suggest that, whilst using the technology was generally considered to have many downsides, it must have pretty large benefits too: it's not just being suggested as a compatibility library but as a foundation for some pretty cool new stuff. So ... is this really the case? Is it that good that you'd want to write your note taking app in it (Tomboy) even though it's possible to write it in another language (i.e. Gnote)? Are the development tools that much better?
Or is it the case that a few "killer apps" happened to be written in C# as demonstrations of its abilities - even though another language would have done the job - and those apps are sufficiently desirable that Mono is getting pushed hard so that everyone can have these killer apps by default?
Personally, although I've not programmed in C#, I'm familiar with a variety of languages and implementation strategies. Different languages are certainly good for different things and more modern languages are typically less painful to work with. C# sounds quite nice. But what I'm wondering is: is the noise and push over Mono as a popular platform a result of it being particularly strong, or a result of a few particularly desirable apps depending on it? Obviously some (much!) of the noise generated is simply due to concerns over leveraging MS technology. But I do wonder how good the technology must be to justify this much noise and controversy!
It's a trap!!!!!!!!!!!
What's bad is that it furthers MS's goal of turning computing into a vending machine that they can tax. Maybe that feels good to you.
This does not adhere in spirit or law to any open source or free software definitions.
Baically, Microsoft can pull developers into their mindshare-trap, and later they will say: See, you are using our technology, which we developed, you really should contribute back to us, pay us.
Whereas true sharing, is done without any attribution or demands. Microsoft has still not figured this out yet and should be avoided like the plague by people who care about freedom and open technology.
Sorry, forgot to post the link to the FAQ:
http://www.mono-project.com/FAQ:_General
-dZ.
Carol vs. Ghost
Also, Mono is reputedly a pretty mean general purpose VM. From a python perspective, Google has beefed up CPython a bit, and the PyPy folk are doing some interesting things with LLVM, and then there is Stackless and Shedskin. But i's always good to have lots of backends bumping around. New backends (and the benchmarking that people do on them) often reveal bottlenecks.
Also, bindings in Mono could be a good Rosetta Stone for interpreted languages to interoperate with. Every time I see a library that has been hand wrapped for Python, Ruby, Perl, Erlang, Java and half a dozen other languages, I have to repress a gag reflex. There should only be 2 bindings - one for Java and C#(with all their Design Pattens), and one for people with things to do.
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
Thinking about it, the Community Promise is a huge win for Mono.
The Patent Trap was always a concern when I used Mono. I knew the external libraries ado.net, asp.net and winforms were "tainted" but was always unsure about the "core" on Mono itself.
Now that the "core" of Mono seems to be free from the patent threat from Microsoft Mono can take a new "patentless" path and develop equivalent versions of the libraries not mentioned in the Community Promise.
You won't be able to run Windows .net stuff (legally/safely) on Linux but you would be able to run Linux .net stuff on Windows.
GTK# seems to be a mature gui frontend the only major missing part is .ADO library for data access (unless something is already out there).
Mono does not *have to* follow Microsoft's upgrade treadmill and keep up-to-date compatibility with the latest version of .net instead concentrate on delivering applications on other systems - Linux, non-windows arm-based processors and macs.
In the end Mono could embrace, extend and extinquish Microsoft's own implementation.
Does Microsoft control this "Community Promise"?
Promises from a convicted mono-polist?
As others have already said: Thanks, but NO thanks.
What's in a sig?
When I see the words "Microsoft" and "Promise" together it just raises a comical sensation somehow. Perhaps it doesn't with many, but I am the typical Slashdot-Microsoft-hater for better or worse. I just don't trust Microsoft to not hold some strings somewhere or this to not be some sort of trap. Microsoft doesn't trust the market to choose Microsoft or its products to compete fairly against others. Instead, it typically needs to control the market and reduce competition in order to maintain its profit and position. They are the "Dick Dastardly and Muttley" (from the Wacky Races cartoon) of the technology marketplace. I have always found it ironic that they [D.Dastardly and Muttley] could somehow get in front of all the other racers in order to set some sort of trick or trap to slow down or knock out the other racers, but they can't simply take the lead and keep it. (Is it wrong that a 5-year-old child at the time had such thoughts watching these cartoons instead of just enjoying the slapstick action?) Microsoft is the same to me in this way. They have enormous resources and quite likely a vast arsenal of talented and creative people. They have more than enough of "the right stuff" to compete and win in the marketplace. But instead, they use their resources and creativity to cause other people to fail or otherwise harm others in the marketplace.
Obviously differences between the Dastardly Duo and Microsoft emerge on comparison as well. Microsoft actually manages to win most of the time.
I wonder if a lawyer could comment on this. . . if Microsoft *tried* to sue me in court after making this promise, could I hand this to a judge and ask the judge to throw out the lawsuit on the basis of this promise? If so, then this is as good as a license from Microsoft, isn't it?
Wow, I didn't know Vince Clarke programmed computers as well as synths!
-dZ.
Carol vs. Ghost
And, Microsoft has NEVER broken a "promise", has it? Only when it suits its purposes...
Comment removed based on user account deletion
Comment removed based on user account deletion
That'd make Mono pointless, though.
Weird, considering that Tomboy, for example, is built using "just the ECMA spec (plus its own extensions in its own namespace)"...
This isn't meant to be helping Microsoft's competitors, such as Linux. Quite the opposite - it's meant to be helping Microsoft.
Proprietary lock-in the key to Microsoft's business model, whether we're talking about Office document formats, proprietary Internet Explorer extensions and incompatabilities or C#/CLI.
In this case it seems Microsoft accrues multiple benefits from open source developers who can't resist the free candy being offered:
1) It helps spread adoption of Microsoft's proprietary standards
2) It stops open source developers from pushing and developing alternative open source standards
3) It sets anyone (Mono) reimplementing these standards up for the future rug-pull when they change and/or extend the standard in the future, which will be done according to the needs of Microsofts business model
There's a reason the document format for Microsoft's office applications often changes from release to release, and it's not simply because new features are added. This is to force people to upgrade - which is the basis of Microsoft's business model. You can be sure that C#/CLI will be managed in the same way - don't expect Microsoft to keep these standards static now that they have "kindly" encouraged you to adopt/reimplement them. Quite the contrary, once there is significant open-source reliant upon them, then they have more incentive than ever to churn them.
I think the language is quite weak, and could be stronger if they wanted. Quoting from http://www.microsoft.com/interop/cp/default.mspx:
Using you is suspiscious to me. There are lots of legal entities to which you doesn't apply.
Then there is a huge caveat
I read this to mean as long as you don't bother us, you can use this-and-that. Notice the word used at the end. The FAQ says
However, it never ever appears in "open-source-licenses" that I know of.
Stephan
http://stephan.sugarmotor.org
just so we have solid proof they need to gather together all of the stuff that they have under this "community promise"
and then etch the following onto titanium plates
1 the exact wording of the "Community Promise"
2 all of the code/concepts that are covered under the community promise
3 a machine readable copy of the source code (data glyphs maybe) with human readable chunks for failsafe (maybe on a left side right side basis
make like three copies of the plates and give one copy to the GNU foundation one copy goes in the national archives one copy stays with MS and if they try to sue over covered code HIT THEM WITH THE PLATES
Any person using FTFY or editing my postings agrees to a US$50.00 charge
Why? You've still got GTK# and Qt bindings, quite useful I would say.
That would explain why the "Gnote" fork of Tomboy was apparently easy enough to implement in C++ instead - which suggests that the use of Mono (rather than C++) was, while not necessarily outright "pointless", at least "unnecessary".
Hacker Public Radio is our Friend
That would explain why the "Gnote" fork of Tomboy was apparently easy enough to implement in C++ instead - which suggests that the use of Mono (rather than C++) was, while not necessarily outright "pointless", at least "unnecessary".
Use of *any* high-level language is "pointless" if your definition is whether or not you can translate the application to C or C++. They're all turing complete languages, after all...
The real question is, does C# and .NET provide you with tools and features that make programming more productive. My experience, having used Java, C, C++, C#, and a variety of other languages, says the answer is a resounding "yes" (hell, proper, integrated garbage collection, alone, makes a language like C# or Java worth it, IMHO).
'course, if you ask me, anything that allows someone to avoid the clusterfuck that is C++ is a boon to the industry. ;)
It still has what one slashdot poster called 'the stench of microsoft' on it. Even if microsoft GPLs the whole stack, there will always be that feeling of disgust in those of us who are old school.
those claims of Microsoft-owned or Microsoft-controlled patents that are necessary to implement the required portions (which also include the required elements of optional portions) of the Covered Specification that are described in detail and not those merely referenced in the Covered Specification.
Of course, anyone who thinks they can "design-around" a patent will claim that the patent is not actually "necessary" to the desired function. In order to enjoy this "promise" you have to confess that the only way to achieve the standard is to infringe on a valid MS patent.
Another potentially worrying point is this exception:
If you file, maintain, or voluntarily participate in a patent infringement lawsuit against a Microsoft implementation of any Covered Specification, then this personal promise does not apply with respect to any Covered Implementation made or used by you.
So..., anyone who even "participates" in a patent suit against MS (including, presumably, a patent suit filed by MS), loses protection for not only their own products, but anything they "use." For example, if FSF got into a dust-up with MS, MS could still claim infringement by FSF (or anyone else) for using Mono, even though MS has chosen not to pursue the authors of Mono or other Mono users. Referring to it as a "personal promise" also calls into question its applicability to businesses/organizations.
I am being overly paranoid, but the fact is, like so many other legal "promises", the value of this one will only be seen in the implementation. As a cynical lawyer, I don't see anything here that absolutely precludes MS from asserting infringement by Mono or any other OSS project. If Microsoft truly wanted to be benevolent they could easily make a much broader promise with less grey area. For example, they could name the patents that they claim to cover the specs in question and offer royalty free licensing, or make a non-assert pledge with some actual teeth. All they are saying here is "we probably, maybe won't sue you unless we do."
I'm a lawyer with excellent karma. Something's gotta be wrong.
If the definition of a "pointless" language/framework is that it's applications can be ported to C++, then Java, Perl, Python etc are pointless too.
This is fantastic news.
We're building a QT app and one of the decisions we had was whether or not to embed mono to host our applications 'data' and 'controllers' which would do all the processing web service calls, etc.
With the patent threat now lifted (we're not using any non ecma libs) we can have the best of both worlds, a fast C++ gui hosting a highly productive and maintainable core.
Thanks to all who helped make this happen.
And Gnome Do, Banshee, F-Spot and other more complex stuff than Tomboy? How easy would they be to port (feature complete) to C or C++?
I'm doing some work at the moment on a personal project. The back-end is core C# only, and eventually I'll add in Mono.Addins, which can be redistributed and used on MS's .Net and are part of Mono. There's a System.Windows.Forms front-end made through Visual Studio (because it's the only way to get a decent GUI editor for it). There's a GTK# front-end made through MonoDevelop (because S.W.F on Linux is ugly). Everyone on either side gets everything they need, and I get a nice and productive language to work with that has extremely useful features (garbage collection/memory management, good event hooks, delegate methods, easy extensibility, etc).
How can you tax something that is an open standard? If I write an app using core C# (which is an ECMA standard) and possibly some of Mono's extensions, how can Microsoft tax that? And given that I could have written it in Linux to work on Linux to do exactly what I want, how is adding a new app that does something new "turning computing into a vending machine"?
Or a contract?
People break promises all the time. I'd hate to be left holding the bag if they change their mind down the road.
---- Booth was a patriot ----
This is new and different! Microsoft has never before made intentionally vague and obtuse promises and later broken them!
So it's about time they did this, but you're insulting the guy who probably had a lot to do with making it happen?
One of the biggest mistakes you'll ever make in life is not knowing your friends from your enemies. I'd suggest a rethink.
And Gnome Do, Banshee, F-Spot and other more complex stuff than Tomboy?
I don't get what's so complex about Gnome-Do. In fact, it looks like an app that should have been imlemented in Python (to make it easy to write plugins)
How easy would they be to port (feature complete) to C or C++?
C is a stupid strawman here. Nobody is porting anything to C.
Everyone on either side gets everything they need, and I get a nice and productive language to work with that has extremely useful features (garbage collection/memory management, good event hooks, delegate methods, easy extensibility, etc).
Obviously, C# does all of this worse and Python, though it has a faster vm.
I find it funny how kids these days think C# brings something new to table. They don't have what it takes to do it in C++, but require the safety wheels of static typing in order to keep their spaghetti manageable.
Or you could use SWIG it's already got C#/java, etc.. bindings.
-Bucky
C# and .CRAP are proprietary mickeysoft junk. Nobody with any self respect or skill would use any of these. Java by it's cross-platform, open source nature should be the language of choice for REAL professionals (as opposed to hobbyists).
Obviously, C# does all of this worse and Python,
"Obviously"? According to whom? Python's reference-counting GC has certainly been hit-and-miss (eg, in the past it's handled cycles very poorly... not sure if it's better now). Events and delegates are basically equivalent (although Python more or less requires seperate named methods... it's lambda keyword is utter shit). Both are extensible.
Honestly, I think the worst thing to happen to Python is the influx of newbs who seem to think Python is the programming language equivalent of the second coming of Christ. Does it do some things well? Yes. Does it do some things extremely poorly? Hell yes.
I find it funny how kids these days think C# brings something new to table. They don't have what it takes to do it in C++, but require the safety wheels of static typing in order to keep their spaghetti manageable.
And I find it funny how kids these days think Python brings anything new to the table. They don't have what it takes to do it in Lisp, but require the safety wheels of mandatory indentation in order to keep their spaghetti code readable.
You are not protected under the promise if you ever sue MS for patent infringement, so you are basically surrendering all of your --and all of your user's-- patent portfolio to them in exchange for an *incomplete* platform license.
But... the future refused to change.
What? Mono is no long in question about infringing on Microsoft licensing anymore? Bah, Then I'm not using Mono anymore then! :P
Once we separate the jargon and the self congratulatory guff you put in to big up your legal eagle skills, it boils down to, they made a promise and you're telling us that we can consider it to be a... er, a promise - which is pretty much what we understood before you opened you gaping gob.
"You aint nothing but a Tomboy, crying all the time."
Its not just that its 'promised' to be added to the Community Promise, its only the ECMA 334 and 335 standards that will be added (possibly).
That is all that's needed because that's all regular Mono applications use.
So really, even if MS adds the 2 standards to their Community Promise, that still doesn't mean you get anything useful - if you write a simple app that does nothing, you're fine. If you want DB access, or web serving, or a GUI.. you're still in the same problem as before.
Mono uses Gnome for the GUI, sqlite and MySQL as a database, etc.
ASP.NET, ADO.NET, Winforms etc. are provided by Mono only for Microsoft compatibility, but most people don't use them or even install them.
C# is not Java and it's not intended to be like Java. C# is more like C and C++: a programming language and a standard library, with different platform specific libraries on different platforms. That's one of the things that many people like about C# compared to Java. The fact that Microsoft may claim intellectual property on Winforms and ADO.NET is no more relevant to Linux programmers than the fact that Microsoft may claim intellectual property on Win32.
If Richard Stallman had never existed and instead Miguel had taken his place, there would have been no gcc, no Emacs (Ok, maybe that would have been an improvement), no FSF, no GPL, no Linux. Miguel would have gone back to university so that he could get the green card to work for Microsoft (more openly) and Slashdot would not have been built. All the open source applications, if they existed at all would have been written to run on Windows with the predictable result that they somehow would never have been quite compatible with the OS they were running on. The cost of Microsoft applications would now be more expensive through lack of competition. Gates would still be CEO and Ballmer would never have danced the monkey dance. Microsoft Word would be mandatory and Open Office would not exist.
Miguel and his fellow Mono proponents are trying their hardest to make Linux and other open source products dependent on Microsoft technologies in a game where Linux is guaranteed to always be playing catchup. It benefits them as vice presidents and developers in the company which signed the deal with Microsoft but it doesn't benefit the Linux community as a whole.
I don't agree with everything that Stallman says, but I at least, can trust that what he says is what he thinks. I wouldn't trust Miguel as far as I could throw him - which, I concede, owing to the insubstantial nature of his frame, might be further than expected.
It moves the computing world closer to MS controlled and controlling technologies. ECMAs standards mean nothing, when MS decides to take the standard in a new direction, it will go there.
All the OP said was that right now if you want to play it safe with patents you pretty much have to avoid using most of the features that probably drew you to Mono/.NET in the first place.
I doubt it. Monodevelop doesn't even support Winforms and the .NET compatibility libraries aren't even installed on Debian and Ubuntu. You have to jump through hoops in order to use them.
Furthermore, none of the end-user Mono applications on Ubuntu use .NET compatibility libraries. Evidently, all the people who actually develop Linux desktop applications in Mono do so using native Linux APIs.
Even for a Linux enthusiast, the Visual Studio/Winforms stack is much more tempting for ambitious projects.
All Mono desktop applications that ship with Ubuntu are based on Gtk#. Winforms isn't even usually installed.
I'm a Windows developer by day and a Linux user by night, and I've got probably half and half MonoDevelop and Visual Studio projects at home. Pick the best tool for the job, they say.
VisualStudio and Winforms are proprietary and simply aren't a choice for Linux desktop applications (even if they didn't suck).
You're stupid, that's all. And you've never written a large program in C#. You can write much, much cleaner more maintainable code in C# compared to C++ simply because the language constructs are more powerful. Same with Java. C++ is a dead(*) language and you're a fucking dinosaur if that's all you know.
* By dead, I mean stagnating in use. It's still got its uses obviously, as do C and assembly. But it's largely becoming a specialized language.
Does this announcement fall under the Embrace phase, or the Extend phase?
Events and delegates are basically equivalent (although Python more or less requires seperate named methods... it's lambda keyword is utter shit).
They are nowhere near equivalent. You can trivially create a proper closure callback next to the callback registration.
Your lack of clue about lambda betrays your understanding (or lack thereof) of subject matter. You realize that you can call your function "la" (or whatever), right? And you can do it as many times as you want. You sound like one of those "OMGZ RuBy on Rails is object oriented11!" dudes.
Java has less "patent liability" than Mono.
Sun has lots of patents on lots of aspects of Java. The only area where you *may* be safe is if you use Sun's own implementations.
I know that these .net libraries have been implemented in Mono but would we have to write new open-source libraries to replace thier functionality and remain "patent-threat" free?
Most people who develop with Mono develop using standard Linux libraries, libraries that are free of any hint of Microsoft patents. That's one of the things that makes Mono so attractive.
prefer Mono - especially Banshee ... Without the other libraries I fear Mono is hamstrung.
Banshee, like almost all Mono desktop apps, is based on Gtk#, not Winforms.
What are the overheads of both the Java and Mono virtual machines running at the same time? Would we be better getting behind just one environment and using that.
IKVM runs Java inside a CLR. It also neatly avoids Sun's patents.
They are nowhere near equivalent.
What the hell are you talking about? In Python, to create an anonymous closure to register with a callback, you use lambda or a nested function definition. With C#, you create an anonymous delegate. What you end up with is a lexical closure. It's the exact same fucking thing. Although, as I already mentioned, Python's lambda keyword is basically useless in this context, as it can't encapsulate multiple lines of code, and they're limited to very simple statements, so you're basically stuck with the nested function approach.
Note, I should point out that Python's lexical closures are slightly different to C#'s... in that they're more limited. In Python, closed variables are read-only, while in C#, that limitation doesn't exist (as it should be... it's a stupid limitation).
As an aside, this is a great illustration of why Python really is an excellent example of someone trying to re-invent Lisp... badly.
Your lack of clue about lambda betrays your understanding (or lack thereof) of subject matter.
Funny, I was going to say the same thing about you...
Why engineer and implement this stuff at all, if there's so much stink swirling around? Is anything based on or leveraged from C# really worth all the hassle and in-fighting?
Does Mono address the biggest issues with (pick your slant here) software development, FOSS/Linux acceptance, or provide the Holy Grail of application implementation?
Are there not bigger challenges and better ways to get there than by riding on the coat tails of an organization of such questionable repute (when looking at business, programmatic, protective and innovative methodologies) as Microsoft?
The whole Novell/Mono/Tomboy/Ububtu drama is spreading everything more thinly and creating bitter factions - developers, users, distributions, observers.
My question is, honestly, is it really worth it?
Here is something to think about: /interop/cp/, unless otherwise noted with respect to a particular specification.
Q: Does this CP apply to all versions of the specification, including future revisions?
A: The Community Promise applies to all existing versions of the specifications designated on the public list posted at
Does Microsoft conspicuously fail to answer its own question?
I wish I had points to give you. I think this announcement is interesting but I want to see relevant discussion about the actual legal ramifications. Everyone is suddenly acting like they GPL'ed the standards or some crap. I'm no lawyer but I'd sure like to see someone from the EFF explain what this all really means. I have a great interest in C# but not if it's encumbered.
You're stupid, that's all.
I can't help thinking it's the C# *people* that are annoying, which the statement above sort of summarizes.
I wish you guys had kept writing your windows programs instead of poisoning the open source community with your presence.
Good luck with that wish, dinosaur.
> If the definition of a "pointless" language/framework is that it's applications can be ported
> to C++, then Java, Perl, Python etc are pointless too.
True enough. What would settle the question is if someone wrote an automated tool to machine translate C# to C++. With a tool to make native binaries from any C# source it might then be safe to say C# was pointless... except then the question would be which one was easier to write and maintain. If the C# were easier AND could be efficiently translated via C++ into a native executable it still wouldn't be pointless. The CLR would then be pointless.
And of course even if the C# to C++ translator never happens you can bet somebody will do a C# to Parrot implementation.
Democrat delenda est
ECMAs standards mean nothing, when MS decides to take the standard in a new direction, it will go there.
What the hell does that even mean?
If you develop a program for .NET 2.0, it'll run on Mono today, and it'll still run on Mono next year. If Microsoft publishes a new specification for C# 5.0, your program won't suddenly stop working. No one will force you to adopt language features that haven't been standardized yet.
If you decide to adopt "C# 5.0" features before they're standardized, then you're voluntarily giving up cross-platform compatibility, and you have only yourself to blame. Just like if you decide to use vendor-specific extensions or platform-specific libraries for C/C++ or any other language.
Visual IRC: Fast. Powerful. Free.
They can say "I promise to be open-source friendly." until they are blue in the face. It won't change my perspective that in the long-term, Microsoft's only aim is to undercut any of the advances GNU/Linux has made in reducing their "Operating System" product market share and "Applications" product market share and Microsoft is especially focused in regaining the revenue stream from U.S. gov contracts. Linux is making huge advances in that gov contract market share these days. Recently when discussing Linux versus Windows with some windows users over supper, the argument the applications are free in Linux was brought up. The gentleman I was talking to gave the the on-the-level answer to me: "Well Windows and all the Windows applications are free for me, too!" Then he started laughing. I'll tell you when I used MS products, I paid for them. This man doesn't understand that he is taking away the ability for future generations to learn from experience of "looking under-the-hood" and seeing how everything works in the windows operating system and all of the applications he uses. He doesn't understand Microsoft's long-term strategy is to reduce the importance of open-source in order to regain the government tax dollars that fuelled them in the first place.
It's important to continue gaining the momentum of open-source without confusion/dependence on Microsoft source-code. From what I understand Microsoft only promise to not sue anyone for using c#/cli, but as soon as someone starts using other MS stuff, I'm sure hook/line&sinker MS will take those people to court. This in turn will take away all of the momentum open-source will have gained if people thought using MS code was ok. WAKE UP AND SMELL THE COFFEE. USING MICROSOFT SPECS AND CODE FOR ANYTHING IN OPEN-SOURCE LINUX LAND IS NOT OK. MICROSOFT IS UP TO SOMETHING. BE WARY OF MICROSOFT. For as long as Microsoft is in business, individual digital freedoms will be at risk of being compromised in order for corporations to be given the upper hand in terms of DRM(Digital Rights Management).
Strange, I've written plenty of code in C++. I also vastly prefer C# because it lets me concentrate on getting the code done rather than worrying about the thousand stupid gotchas of C++. It actually makes programming enjoyable, as opposed to C++, which is a chore.
If there was a language as pleasant to use as C# that didn't use Mono (and no, Python isn't it, and neither is Vala), I'd use it. But there isn't, so I use C#.
If you don't want people to use C#, then provide a better alternative. None currently exists.
(Oh, and writing plugins for Gnome-Do is ridiculously easy.)
"You can either have software quality or you can have pointer arithmetic, but you cannot have both at the same time."
(honestly, without proper anonymous closures, I feel crippled as a programmer... as a tool for building clean, reusable, modular code, they're simply invaluable)
Feel like elaborating on that? I've been doing programming on the side for years, with most of the common languages, and I don't even know what that means .... (/grin)
#6495ED - cornflower blue
company policy changes ....
Read radical news here
Objective-C is nice, gorm is a workalike to interface builder.
Microsoft have everything to lose. Apple have plenty to gain by Microsoft's loss. Openstep has plenty to gain by Microsoft's loss/apple's gain.
OpenStep is a fine platform, but barely anyone seems to be developing for it. Everyone just wants to copy windows.
I'm putting my money where my mouth is too, Have just finished reading a book on Objective-C, bought a Mac Mini, and am going to stick OpenStep on the PC so I can get my feet wet with cross-platform application development for OS/X and OpenStep.
But serious question... why is Openstep apparently shunned so much? There seems to be so much wheel re-development going on, when we could have a platform that is reasonably common between OpenStep, Mac and Iphone...
I run: Windows, OS X, Linux, FreeBSD. Just because you have a hammer, doesn't mean everything is a nail.
Except that this promise is legally a case of promissory estoppel.
So you're full of shit.
"You can either have software quality or you can have pointer arithmetic, but you cannot have both at the same time."
You make some excellent points. I'm worried about the wording too, specifically "participate". PE will not operate if the promise is unclear. By releasing a potentially ambiguous promise like this they are making their own cause of dispute.
A clause to revoke the "personal promise" for participation in legal action is not particularly new, but the more I consider it the more it worries me. It is qualified by 'voluntarily', making the clause somewhere bare for the principle party, because being sued is not voluntary, thus it would rarely operate. In other words, should MS decided to sue someone, this clause would not extinguish the promise. So far-so-good for individuals, PE is your Jesus.
The clause would come into action if someone decided to sue MS for a "patent infringement lawsuit against a Microsoft implementation of any Covered Specification". Unless they can prove duress (and the need for action) so to render the clause unfair, they risk loosing the protection offered by PE. Surely this will prevent many individuals from suing MS? In other words this appears to be a cunning lure to prevent people suing MS and participating in such suits.
Far more sinister is the fact that "voluntarily" would encompass aggrieved 3rd parties. Should a 3rd party join a suit against MS, their action would revoke this promise, and they would be unable to rely on it in the future as the base of their defence in equity, leaving them as liable as the claimant.
A possible disaster scenario:
Matt
If MS would GPL anything at all, they would receive the credit they would deserve.
As it is, they aren't, they just continue to muddle the waters with licenses that nobody else is using.
IANAL but write like a drunk one.
And the fact that MS's CEO has said they are willing to use their alleged patents against Linux, as well as their back stabbing agreements with Novell, Xandros and others.
We have been told in clear, unequivocal, no uncertain terms that Linux is in the cross-hairs, but here you are, still asking what the fuss is all about when it comes to technology being pushed by that company.
IANAL but write like a drunk one.
Red Hat also has patents and the wording of the promise is nearly identical to the one of MS, I'm quoting RH:
http://www.redhat.com/legal/patent_policy.html
""" ...
Our Promise with Respect to Software Patents We Hold
Our Promise:
Subject to any qualifications or limitations stated herein, to the extent any party exercises a Patent Right with respect to Open Source/Free Software which reads on any claim of any patent held by Red Hat, Red Hat agrees to refrain from enforcing the infringed patent against such party for such exercise ("Our Promise"). Our Promise does not extend to any software which is not Open Source/Free Software, and any party exercising a Patent Right with respect to non-Open Source/Free Software which reads on any claims of any patent held by Red Hat must obtain a license for the exercise of such rights from Red Hat. Our Promise does not extend to any party who institutes patent litigation against Red Hat with respect to a patent applicable to software (including a cross-claim or counterclaim to a lawsuit). No hardware per se is licensed hereunder.
Each party relying on Our Promise acknowledges that Our Promise is not an assurance that Red Hat's patents are enforceable or that the exercise of rights under Red Hat's patents does not infringe the patent or other intellectual property rights of any other entity. Red Hat disclaims any liability to any party relying on Our Promise for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the Patent Rights permitted by Our Promise hereunder, each relying party hereby assumes sole responsibility to secure any other intellectual property rights needed, if any.
"""
They promise not to sue you just like Microsoft. I guess it's perfectly standard legalese then if two companies as far away as MS and RH use the same wording.
Now the RH promise is limited to software with a limited set of licence (they can add to it) while MS one is limited to some implementations of a standard.
I'd say that if a patent troll buys MS we're safe, but if a patent troll buy RH and the FSF needs to publish GPL 3.1 or 4.0 we're screwed since RH promise does not cover future licence.
IANAL
That doesn't explain how you can tax an open standard. As Mr2001 pointed out (and as I've seen mentioned by one of the Mono team) if Microsoft move a new iteration of C# in a direction that isn't compatible with open source (probably through patent issues) then all Mono does is continues to implement the previous standard and carries on with its own work in its own direction. It'll still be cross-platform, it'll still conform to C# standards, and it'll still be compatible with Microsoft's .Net framework, just not the very latest version.
So you're knocking down the strawman of C but not putting up any arguments on the "porting to C++" front?
It doesn't necessarily bring anything new to the table since Java had generics and GC first, and other languages probably do the delegates. What it does do, though, is wrap some of the Java-like functionality up in a nicer package for some people that integrates better with many desktops.
Working with objects in an OO environment where you talk about objects and properties? Well now you actually get a distinction in your code between functions/methods and properties. Want to subscribe one method to be called on three different events? You don't need to implement interfaces, add yourself and implement three different methods that do the same thing. Want to subscribe three different methods of one object to the same event? You can actually do it with delegates.
Personally, I'd just rather not write the spaghetti in the first place as it's a much more productive and enjoyable use of my time.
Writing without static typing can be done without too much effort on your own (it's effectively what you had to do in Java/C# before generics when you used collections - treat everything as a known type and assume that's all that's in there), but making sure that extensions and customisations don't break your code becomes debugging from stack traces and crashes once your app is running rather than finding that your app isn't doing what it should at the compile stage.
Wow cool. Did Stallman publish a response to this?