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