Mono Brings .NET to Open Systems
- By Stephen Swoyer
- May 11, 2004
A dream several times deferred inched closer to reality last week when Novell announced the first public beta of the Mono 1.0 open source development platform for Microsoft Corp.’s .NET application architecture.
The Mono Project was announced in mid-2001, when it was launched amid great fanfare by Ximian co-founder Miguel de Icaza. Over the next 30 months, however, several Mono 1.0 delivery dates came and went with nary a sign of the finished project. Then, in November of 2003, Novell -- which took ownership of Mono when it purchased Ximian last year -- announced that Mono 1.0 would be available in Q2 2004.
Novell still expects to squeak in by that deadline, says Mono product manager Erik Dasque: “We have a Beta 2 that’s scheduled to come out on June 1st, and a final release [Mono 1.0] on June 30th, which means that we’ve established parity as far as .NET compliance with what Microsoft is shipping today, which is .NET 1.1.” In addition, says Dasque, Mono version 1 beta 1 also supports several features that Microsoft has announced for its forthcoming .NET 2.0 (formerly, .NET 1.1) release, which is expected sometime next year.
The stage was set for the Mono Project when Microsoft -- under some pressure from ISVs, customers and many industry watchers -- agreed to submit the C# and Common Language Runtime specifications to industry standards body ECMA International. Because Mono proposes to be an open source implementation of these specifications —- ECMA #334 (C#) and ECMA #335 (CLR) -— it must essentially deliver versions of both specifications for the Linux, Unix and MacOS platforms, along with the equivalent functionality of Microsoft’s .NET framework, which provides the client-side plumbing for .NET applications.
“.NET is the marketing term for Microsoft to characterize their implementation of those two standards and some APIs,” says Dasque. “Beyond implementing the specifications, we also implemented the whole Microsoft stack, which includes ADO.NET and ASP.NET, as well as a lot of APIs that we created that we think are important within the context of developing cross-platform applications as well as developing new applications on Linux.”
These include an API to talk to the open source Mozilla Web browser, which—in the Mono world—assumes the ubiquity of Internet Explorer in Microsoft’s .NET implementation. “In Outlook, for example, when you display an HTML mail, it’s actually Internet Explorer that displays it, and we need the same type of functionality [for Mozilla],” he explains. “And we have support for the open source databases, [such as] MySQL and PostGreS[QL], so if you use ADO.NET or ASP.NET, you can rely on a full open source software stack.”
Because the Mono Project figures as a means to bring Microsoft’s insular .NET technologies to the open systems world, it has attracted the attention of ISVs and enterprise developers alike, says Dasque. “We have ISVs who are looking at .NET today on Windows and looking for a way to have their application run on other systems, yes,” he confirms. “And we also have existing Visual Basic-type developers on Windows who are told by their CTO or CIO that they have to migrate to Linux desktops, and they have to find a way to build applications.”
At the same time, he stresses, many participants are involved with Mono because they’re genuinely enthusiastic about the C# and CLR specifications.
“A lot of people ask us what if tomorrow [Microsoft] stop[s] submitting [the C#, CLR and other specifications to the ECMA] and just do their own thing, but it’s not so much a concern, because we looked at .NET and we liked it and that’s why we implemented it,” he asserts. “What we wanted to do is get on parity with them because that’s what we like. In the future, they may go in a direction that we don’t like, but if we have to fork, then we could fork, it wouldn’t be a problem.” Adds Dasque: “With Mono 1.0, we’ve achieved what we wanted to do.”
Stephen Swoyer is a Nashville, TN-based freelance journalist who writes about technology.