Microsoft moves C#, .NET CLI to community license, helps Mono

In an announcement yesterday, Microsoft representative Peter Galli (a former ZDNet blogger) told the company's shared source community that it's decided to make its C# programming language and the Common Language Infrastructure model that makes C# programs run in the .NET Framework, available under the company's unilateral Community Promise.

As a result, it may become feasible for anyone to build a C# interpreter and a compatible CLI, or even a C# low-level compiler -- not even necessarily for Windows -- without having to pay Microsoft a fee. The implementer now need only promise in turn not to take IP infringement actions against Microsoft, essentially accepting that the technology is Microsoft's to give away.
"The Promise applies to developers, distributors, and users of Covered Implementations without regard to the development model that created the implementations, the type of copyright licenses under which it is distributed, or the associated business model," Galli wrote.

Previously, C# and the CLI were only available under the Microsoft Reference License. That meant that developers could see the source code (thus the "sharing"), but could only contribute corrections or additions to the code in the context of its original distribution from Microsoft. They could not create their own derivatives or improvements and distribute them for themselves.


Back in October 2007, there was an initial wave of enthusiasm as Microsoft appeared to release the source code for its entire .NET Framework to the open source community. But that's not actually what happened; instead, it made the source code visible under the Reference License. The reason for that, it turned out, was more self-serving than a gift to the community: For Visual Studio's debugging tools to work thoroughly for .NET applications, it needed to be able to debug not just the developers' code, but Microsoft's as well -- which meant that developers needed to be able to see what was being debugged. The Reference License did permit that.

At the time, that revelation prompted blogger Robert Scoble to withdraw his initial enthusiasm, declaring Microsoft's move "lamer" than those of competitors Adobe and Sun Microsystems, which had completely opened their Flex and Java frameworks, respectively, to the open source community.

Both C# and the underlying CLI were accepted as ECMA international standards way back in July 2005. Technically, that's what enabled a team of developers led by Miguel de Icaza to produce Mono, a cross-platform implementation of the .NET Framework that enables such radical implementations as a C#-based real-time gaming platform for the Mac. But in actuality, that project has been seen as enabled by Microsoft's controversial patent covenant with Novell, a principal backer of the Mono Project.

As a result, open source community members have been hesitant to redistribute Mono -- for instance, in conjunction with Linux distros -- believing that doing so may become legally interpreted as tacit acknowledgement that Microsoft originated C#'s and .NET's underlying technology...even though it's pretty clear that it did anyway.

Yesterday, in a blog post that was "overflowing with joy," de Icaza reported that Microsoft's move came at his request -- specifically, a request made to company representatives including Server and Tools Division President Bob Muglia to "clarify" the terms of the company's license. As he also made clear, however, Microsoft's move does not completely clarify everything for Mono, especially with regard to components such as its implementation of ASP.NET -- components that are still rooted to Microsoft technologies.

So the solution, de Icaza said, will be to make Mono available in split distributions: "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."

20 Responses to Microsoft moves C#, .NET CLI to community license, helps Mono

  1. fatty says:

    Interesting move for steps in the right direction although they have a very long way to go. I will still stay far away from C# and make sure my employer does too. .Net simply does not scale and have the tooling which Java does.

    • DotNet_Coder says:

      @Fatty: Really? .Net does not scale and does not have the tooling that Java does? Please explain where you are getting these *facts* from? I've been coding in both Java and C# for the past 10 years (well, 9 years for C#) and can honestly tell you that scaling and/or refactoring an application in .Net is 10x easier than in Java.

      Have you even compared the two languages and frameworks recently? I have (I use both almost daily), and in all honesty, I would take C# and .Net over Java/J2EE any day.

      • fatty says:

        How many vendors make .net servers? How many vendors make Java Servers? How many Open Source projects/frameworks/tools are there for .net? How many Open Source projects/frameworks/tools are there for Java? How many banks write their core processing engines in .net? How many banks write their core processsing engines in Java? How many IDE's are there for C#? How many IDE's are there for Java?

        Microsoft is no where near mission critical back end systems...they are newcomers to the back office and it shows in their immature solutions. We had Microsoft send five of their ringers to do a proof of concept around SOA and we had two BEA guys do the same on their tooling. The Java solution outperformed the Microsoft solution by a factor of 4:1 transactions per second on the same hardware. Although we used Red Hat Enterprise for Weblogic and Oracle rather than Windows Server 2003 and Sybase, i mean SQL Server.

      • KingMotley says:

        There are tons of open source projects in C#, quite a few frameworks, and tons of tools for .NET (more than java). How many banks are using .NET? I'd say almost all of them. In their backoffice, on the desktop, in their reporting offices, collections, and even in their ATMs.

        As for the back end systems, Microsoft was there 10 years before Java was even first developed. Your slant is apparent. Microsoft sends "ringers" and BEA sends "guys". Did both systems do the exact same thing? Or are you hand picking things from an apple and orange tree, and saying look..The orange is so much Did the Java implementation mention that you would likely need to hire an additional DBA to micro manage your Oracle server for $100k a year? Was the hardware you purchased specifically tailored to your java platform, and an equally priced but different system that would favor the .NET implementation have changed the outcome?

        Additionally, I find it extremely odd that they would use Windows Server 2003, considering how old that platform is. Were you comparing a 7 year old .NET to a modern java implementation?

        I have yet to see any non-trivial study that shows Java out performing .NET (or Java even coming remotely close) if both are tuned and given free reign to work the way they do best.

      • fatty says:

        Mr dotnet_coder, why does it not suprise me to hear you say you love the proprietary .net stack? Perhaps your name? Now, i would be shocked if someone posting with that username said they did not like Microsoft's Java clone.

    • DataWeasel says:


      .NET and C# are some of the most scalable products I've ever worked with. Why do you think they don't scale well?

    • KingMotley says:

      There may be an argument for Java over C#, but scaling definitely isn't one of them. But I assume that fatty doesn't know that because he's staying too far away from C# to make an informed decision.

    • Anastasia2007 says:

      Again, fatty is commenting on something he has no clue about. I bet you have never tried VS 2008 and don't even care to. So, that makes your comments worthless.

      • shormanm says:

        I worked extensively with Java/C/C#/C++ .... etc. I used NetBeans/Mono/Eclipse/VS/Anjuta/Kdevelop. Nothing comes close to VS2008 and I have no doubt that VS2010 will also come on the top. Go and try the beta if you care. I still do not understand why many people are against .Net. When I first found about Mono I was very glad. It meant there is finally an easy path to port many nice .Net code to Linux.
        .Net rocks and VS rocks. Having a taste of it in Linux does not hurt I guess.
        .Net scales very well and I am not sure where that criticism is coming from. I am sure those why say so have no clue about either .Net or VS.

        Is there any development environment better than visual Studio out there? I really would like to know if there is.

      • fatty says:

        Hey i understand all the Microsofties on this site defend their beloved proprietary technology...that is how you all pay the bills. Since you all obviously have never done any prototyping or bakeoffs as you just accept what Microsoft gives you as they are the only vendor you can go to (classic vendor lock-in which intelligent people try to avoid), yes, you give mutliple vendors the _same_ requirements and you have them run solutions on _your_ hardware. The hardware we ran for that POC were Dell Power Edge 2950's. Yes, in the non proprietary, vendor lock-in world, there is choice and you can pit vendors against each other.

        Oracle is very simple to maintain, and yes, I would rather have a DBA manage my enterprise database than some developer who thinks they are a DBA. In fact, we are in the process of moving a bunch of stuff off SQL Server 2005 to Oracle 10g as SQL Server 2005 can not handle the volume of transactions we are now throwing at it. Oracle is king of the RDBMS....SQL Server can not touch it.

      • fatty says:

        "I worked extensively with Java/C/C#/C++ .... etc. I used NetBeans/Mono/Eclipse/VS/Anjuta/Kdevelop."

        Sure you have used every IDE and language known to man, and all at the same time, latest versions. Do you do plumbing too?

      • PC_Tool says:

        Pure comic genius.

        He claims it doesn't scale and when corrected, he goes off on an "lack of support" tangent, ignoring it completely. When that gets debunked, he derides those correcting them as being "Microsoft fanboys".

        Yup. Typical fatty. ...and he accuses me of changing the topic. Hah...

        He obviously knows as much about .Net as he [url=]knows about Silverlight[/url], guys. Don't bother.

      • fatty says:

        @PC_Tool : "He claims it doesn't scale and when corrected..."

        I was corrected? Huh? Forget the meds again?

      • PC_Tool says:

        What, you utterly failed to read the two responses directly after your comment that stated .Net wasn't scalable, that in fact, .Net was far more scalable than Java?

        You missed that? It didn't register with you? Multiple people stating flatly that "you are wrong" didn't actually get absorbed into that mush you call a brain??

        huh... Shocking.

        Admit it. You are as clueless about .Net as you are about Silverlight and then crawl back under your rock, you ridiculous troglodyte.


      • fatty says:

        What i read is pure fantasy. I have seen the performance first hand and was not impressed with the proprietary .net stack. Which is why we are using Java for our application which serves over 22 million subscribers. Not to mention we avoided vendor lock-in and saved a boat load of money.

        tell me Mr. KnowItAll, PC_Tool, what kind of Enterprise applications do you develop? And i do not mean applications servicing 100 internal business people. LOL.

      • PC_Tool says:


        Well, unlike you, I never claimed to be an Enterprise Developer. Then again, unlike you, I also didn't claim to be knowledgeable about a [url=]web technology I was utterly clueless about.[/url]

        Funny how you still expect anyone to view your anecdotal evidence, in light of such ignorance, as at all superior to the "fantasy" of the *several* enterprise developers posting above.

        But that's just you. Not only ignorant about the products you deride/support, but of your own ignorance and irrelevance regarding them. You really do think you have a clue, don't you?

      • fatty says:

        What is this link you keep trying to go off topic with? If you are so clueless, why are you posting in this thread? Oh yeah, because all you do is troll.

      • PC_Tool says:


        Oh...the link is relevant. Imminently relevant.

        It shows you, The Great Pretender, trying to assert that you know what you are talking about regarding Silverlight (a tech not entirely unlike .Net), asking a question that proves beyond all doubt that you are, in fact, absolutely clueless.

        Go ahead. Click it. It's an amusing read. You go on and on about how you can't code for it outside of Microsoft IDEs and how it cannot be hosted on anything but Microsoft servers.....all of which of course, is complete and utter bunk.

        It is the epitome of relevance in any discussion in which *you* are involved, since it removes *all* doubt as to your credibility; of which you have none.

      • shormanm says:

        "Sure you have used every IDE and language known to man, and all at the same time, latest versions. Do you do plumbing too?"
        No I do not do plumbing, but I know that I write programs for living and it is the only thing I do beside eating and drinking :/
        Is it really that hard to know them all? I sure know some of them more than the others, like VS/NetBeans/Eclipse, but that is because I found the rest of them as a waste of time for me: too buggy sometimes (looking at you Kdevelop), or not as rich as the others.

  2. vlad137 says:

    I did some job with J2EE, mostly as architect for telecom/egov apps. Then was lucky to start working with .net. Was also unsure .net is scalable, robust, and powerful enough. Now I am sure it is.
    But what is more important. Probably I am not a guru in system software, but it is what I’d like to do for myself. And I was tired of this 40 years old stack of C for things like OS kernel etc.
    C++ is great. I started to use it when it just originated; I had to write my own preprocessor to C to work with its notation. C++ is the most “natural” language for me, but there are a lot of reasons, why it is not ideal for system software development.
    Java was designed with no clear idea of purpose in mind, and I’d say its creators are really generous; they were able to implement a lot of concepts now widely adopted. But they violated the spirit of C++ and made Java fundamentally inapplicable as native system language.
    In contrast C# designed as true descendant of C++ both in spirit/notation and in ability to control and minimize overhead when compiled to native code. I appreciate to play with both MS and Mono implementations of this option. At least some MS concepts (SIP – software isolated process etc.) and tools (Bartok – MSIL to native code compiler, MSBuild – XML-based build tool for large projects, F# - functional language useful for static verification etc.) finally made development for new hardware cool again. Nice to have as much of this as possible open source.
    A few years ago it was hard to imagine the origin of software metaphor with so unique area of applicability – from next generation OS to line of business. And all with very high level of developer productivity and fun.

© 1998-2020 BetaNews, Inc. All Rights Reserved. Privacy Policy - Cookie Policy.