Please create an account to participate in the Slashdot moderation system

 



Forgot your password?
typodupeerror
Patents Microsoft Software

Microsoft Puts C# and the CLI Under "Community Promise" 465

Posted by timothy
from the if-it's-a-trap-please-clarify dept.
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."
This discussion has been archived. No new comments can be posted.

Microsoft Puts C# and the CLI Under "Community Promise"

Comments Filter:
  • by ThisIsAnonymous (1146121) on Tuesday July 07, 2009 @07:17AM (#28606257)
    Every blog/news article that I've found about this story links to: http://www.microsoft.com/interop/cp/default.mspx [microsoft.com]
    And I can't find anything on that page that mentions C#. Perhaps I'm reading it wrong...
  • by bogaboga (793279) on Tuesday July 07, 2009 @07:27AM (#28606355)

    Here's why:

    There is no mention of other components [nyud.net] 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.

  • Necessary Claims (Score:1, Interesting)

    by Anonymous Coward on Tuesday July 07, 2009 @07:35AM (#28606429)

    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.

  • why so happy? (Score:2, Interesting)

    by Anonymous Coward on Tuesday July 07, 2009 @07:40AM (#28606467)

    Why would Miguel De Icaza be so happy if his previous assertions that there is nothing to worry about mean anything?

  • by Anonymous Coward on Tuesday July 07, 2009 @07:47AM (#28606521)

    The latest ECMA spec covers C# version 2, the version from Visual Studio 2005. The new features in C# version 3 (in Visual Studio 2008) are not described in any independent standard.

    If you program to the latest version of the language (which is the default in Mono) you are not covered by this announcement.

  • by minsk (805035) on Tuesday July 07, 2009 @08:05AM (#28606701)

    In part I agree with you. In designing C# (and .NET in general), Microsoft correctly identified a lot of the hiccups of Java development.

    Unfortunately, IMO, their solutions were a disaster.

    Erasure-based generics are annoying, but the CE-incompatible hacks of runtime generation are worse. Writing getter/setter for trivial properties is annoying, but limited and buggy syntactic sugar is worse. Having all objects be pointers is annoying, but making structs silently stack-allocated is worse. Needing to use arrays to fake reference parameters is annoying, but side-effects on partial execution are worse. Having to scrunch different languages in to a Java-tailored bytecode is annoying, but the gymnastics required by MSIL are worse.

  • by Lemming Mark (849014) on Tuesday July 07, 2009 @08:12AM (#28606783) Homepage

    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!

  • by Ed Avis (5917) <ed@membled.com> on Tuesday July 07, 2009 @08:20AM (#28606873) Homepage

    If you program to the latest version of the language (which is the default in Mono) you are not covered by this announcement.

    Only if there are enforceable patents held by Microsoft which are specific to C# (the language) version 3. You see, C# 3 compiles to the same bytecode as C# 2, and runs on the same virtual machine. The MS patents that people worry about are on implementation techniques for the virtual machine. You use the same ECMA-specified virtual machine to run bytecode compiled from C# 2 and C# 3, so it's covered.

    If there are (enforceable) software patents covering the language itself, specifically the new features in C# 3, then you have a point.

  • by samkass (174571) on Tuesday July 07, 2009 @08:24AM (#28606911) Homepage Journal

    That was my immediate reaction. Microsoft like to play "the version game"... remember when they traded a license to the Mac GUI in exchange for a specific version of Office, then immediately revved the version? (No, probably not-- that happened in the 80's and 90's.)

    So now that they've come out with a new version, they're freeing up the previous version. While that's a nice step, it doesn't exactly make Mono free and clear, nor does it allow Mono to create a runtime that will run any .NET app on any platform other than Windows. The old argument that C# locks you in to Windows is still largely true.

  • by binarylarry (1338699) on Tuesday July 07, 2009 @09:04AM (#28607483)

    Let me show you how this works, fan boi o mine:

    Person A makes statement, this in case, I said "Java and C# are very, very similar yet many uneducated folks seem to think they are radically different." This is a statement that can be refuted by another party, take Person B for example.

    If Person B disagrees, (s)he can respond with "You're totally wrong, see X which is vastly different than Java and not some marketing feature."

    However, in this case, Person B said "Oh no you di-int" and stopped there.

    However, as posted elsewhere, you should investigate the following work: http://www.javacamp.org/javavscsharp/ [javacamp.org]

    Once you do, you'll realize how correct my original post was. C# is essentially someone running find and replace over the Java language and claiming it's "new," "radically different," and "much, much complex and serious."

    Ah fanbois, what would I do with out you.

  • by hoggy (10971) on Tuesday July 07, 2009 @09:12AM (#28607613) Journal

    I've used both for serious commercial development and I personally prefer C# to Java. If it means anything, I consider myself pretty impartial, as Java and C# are just two of the dozen or so languages I've worked in and I consider neither to be the most interesting.

    C# and Java are only really similar in the way that you would expect two garbage-collected, object-oriented, C-derived languages to be similar. People who say C# is 95% the same as Java are missing the point: it's the small differences that make one language nicer to use as a developer.

    Your mileage may vary. You should give both a go and make up your own mind.

  • by macshit (157376) <miles@ g n u.org> on Tuesday July 07, 2009 @09:44AM (#28608115) Homepage

    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?

    Neither, really. MS is clearly pushing C#/CLI very hard as the primary Windows development infrastructure -- so if you care about Windows, you probably need to care about them. Miguel is obsessed with duplicating everything MS does, so the Gnome project has put a lot of effort into cloning C#/CLI, but they don't really seem to have gained much traction in the FOSS world. I suspect that besides the patent fear, FOSS has much more solid alternatives than MS users do, and a far more diverse development culture; the general feel of bloat and "one giant do-all blob" that you get from CLI/C# may not be to many peoples' tastes.

    Combine those factors with a general mistrust stemming from MS's hard-won reputation for turning around and stabbing its partners in the back, and things don't seem nearly so rosy for Mono on FOSS as they do for C#/CLI on windows...

  • by automandc (196618) on Tuesday July 07, 2009 @10:05AM (#28608445)
    Yes, that is all well and good, but you need to read the actual 'promise' [microsoft.com] before you leap to conclusions. It is (in my opinion) somewhat vague. For example, they promise not to assert "necessary claims", which are defined as:

    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."

  • by Anonymous Coward on Tuesday July 07, 2009 @10:42AM (#28609013)

    That was of interest to some people, but to many of us we only cared about having a better development platform to Linux software. It turns out that GTK+ bindings for Mono are fucking beautiful, because GObject maps very nicely to Mono's object model (unlike, say, C++ which has multiple inheritance or Haskell which doesn't really work in this type of model). But you've had FUD machines like RMS and these guys from "Boycott Novell" telling us what languages we should be allowed (or not allowed) to write in, and to get acceptance you'd have to write in something more tedious like C. So instead of writing great code quickly, you've been stuck in this ridiculous political situation because people who don't even write the code are freaking out about code written in C# (and even in some cases going so far as to try to get open source hackers fired from their jobs for using C#).

  • Re:It's about time (Score:3, Interesting)

    by Qubit (100461) on Tuesday July 07, 2009 @10:55AM (#28609213) Homepage Journal

    It'd be easier for them to just upgrade .NET to be incompatible with everything they promised not to sue over. Then they can sue when people upgrade, because there's no promise covering the new versions.

    Steps:

    1. Microsoft purchases patent license for H.264 (or whatever) in their products.
    2. Microsoft makes H.264/whatever mandatory in C# version+1.
    3. Mono can't get a patent license for H.264 and still be Free Software, so it won't be covered by patent promise if it tries to implement C# version+1.
    4. Well, shit.
  • by YourExperiment (1081089) on Tuesday July 07, 2009 @11:00AM (#28609287)

    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?

    Interesting question. I don't think it's to do with the existence of a few desirable apps. I've had plenty of experience with C# / .NET through work, and it's really very nice to work with. The language, the libraries, the platform and even the development environment all add up to a whole which (to my disappointment) I find much easier to work with than any free alternative I have yet discovered.

    I still try to stay away from proprietary technologies in my personal projects, but I can see why people are excited by the prospect of a truly free version of this toolset. I'd switch to it in an instant if it happened. I don't think this announcement means we're there yet, however. Neither do I hold out much hope, with Microsoft being the way they are, that we will ever truly get there.

  • by Anonymous Coward on Tuesday July 07, 2009 @12:12PM (#28610345)

    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.

  • by shutdown -p now (807394) on Tuesday July 07, 2009 @01:04PM (#28611183) Journal

    Simply put, C# is Java with true generics, RAII, full-featured lambdas with short syntax and ability to mutate captured variables, operator overloading, and opt-in low-level operations complete with pointer arithmetic and unions. (This is still a simplification, but it's close enough).

    If you are a Java coder who understands what the above means, and it makes you go "wow gimme!", then welcome to the club (though you may also want to consider Scala in this case).

    If you understand, but it makes you wince, then you're probably a senior Java developer who writes "Hello, world!" as an enterprise JavaBean :)

    If you do not understand, but you know Ruby and like it, and wish Java had at least some of the tasty features of Ruby, you should definitely take a look.

    If you don't understand it at all, then don't bother.

  • by 280Z28 (896335) on Tuesday July 07, 2009 @02:24PM (#28612467) Homepage
    What I haven't seen mentioned is very important: even in BCL classes that are covered by ECMA-335, the members you find might not be what you expect. For example, there are no TryParse [microsoft.com] methods for any of the primitive types, which forces exception handling as flow control. "No one" uses the regular Parse methods in the face of unknown inputs. Honestly, there are a surprising number of items "missing" in the ECMA-335 standard. Originally I wanted to implement it precisely but I found it was hindering my ability to code with good practices. Where do you draw the line.

    There are also some errors in the documentation in the standard. Not some large number of them, but certainly enough to make you wonder how flexible the promise is. Errors range from omissions to ambiguities to a couple instances of clearly incorrect/contradictory statements.
  • by jipn4 (1367823) on Wednesday July 08, 2009 @01:21AM (#28618411)

    Now, rationally and factually, without your own personal bias and agenda, please explain to us why they aren't a choice for Linux apps and why they suck.

    For VisualStudio: it's hard to learn, needlessly complex, commits numerous user interface sins (modal dialogs, bad layouts, etc.), and developers are not very productive in it. For Winforms: apart from numerous niggly technical issues, they are not native to Linux and don't work quite right on Linux. It's the same problem Java has on Linux (and then some). Furthermore, Gtk# is natural and familiar for Linux programmers while Winforms is not.

    But, in any case, neither of them are a choice on Linux anyway because they aren't distributed with Linux distributions.

    If you have an out right oversion to proprietary apps then you're just a dipshit.

    I don't have an "outright aversion". I just think VisualStudio and Winforms are bad. There is some proprietary software I use, despite the hassles.

    and think you've probably not used VisualStudio if you're going to make such statements.

    There's another thing you're wrong on.

    I can see how you may prefer Monodevelop over VS

    Fortunately, the world doesn't come down to just those two choices. But, yes, given the choice, I prefer Monodevelop.

  • by HiThere (15173) <charleshixsnNO@SPAMearthlink.net> on Wednesday July 08, 2009 @12:32PM (#28625087)

    I have frequently had proprietary applications that I depended on stop being produced. Frequently it wasn't because the company went out of business, even, but merely because they wanted me to buy their latest product.

    Now I generally prefer to avoid proprietary products. Moving to Linux has made this practical. This doesn't solve everything (I was appalled when I was switched to KDE4 from KDE3. KDE4 is abysmal by comparison. Fortunately there's Gnome, which while it isn't as good as KDE3 is better than KDE4...except that it install mono by default. But that can be removed without causing problems, to the extent that I wonder what political manuvering was used to get it made a default install. Given that it's pushing MS (an application developed in mono can run on MS without critical problems, and the converse isn't true, because the MSWind developers will use libraries that aren't available elsewhere), I really don't think that it should be pushed by Linux distributions. It's against their best interests. If you need an interpreted cross-platform language, why not use Java. (Or Python, but Java is faster, at least unless you use Swing.)

"Why should we subsidize intellectual curiosity?" -Ronald Reagan

Working...