Mono is an open-source implementation of Microsoft .NET for Linux and other operating systems. In this article, Tim Anderson interviews project leader Miguel de Icaza. Why is Mono now partnering with Mainsoft to ease migration to J2EE?
Miguel de Icaza on Mono
I have long had a keen interest in Mono, the cross-platform implementation of Microsoft's .NET Framework. It offers an intriguing alternative to Java, and helps Windows developers who want to target other platforms. Microsoft is of course in two minds about Mono. On the one hand, the .NET Framework was designed with cross-platform in mind. Microsoft standardised C# and the CLI (Common Language Infrastructure) with ECMA and has released an implementation for BSD Unix, apparently aimed at academic research. On the other hand, Microsoft's license deliberately makes this implementation useless for commercial purposes, and in reality most Microsoft folk that I talk to regard .NET as a selling point for Windows, and have no interest in its applicability to other platforms.
To give you an example, I had a conversation with Brian Goldfarb, Microsoft's Product Manager for the Web Platform and Tools, at Tech-Ed 2005 in Amsterdam. When I asked what he thought of Mono, he said, "We're excited about what they're doing, but we don't support the Mono project. They are completely on their own."
I asked him to confirm that at least Microsoft does not oppose the project. "No," he replied. "We are totally indifferent towards it. I think it's great what they're doing, but it's neither here not there."
When you put together the words "totally indifferent" with "it's great what they're doing", you can see what I mean by Microsoft being in two minds about Mono.
Whatever, when I was invited to interview Miguel de Icaza, who works at Novell and is the Project Leader for Mono, I jumped at the chance. The interview was also at Tech-Ed, but was conducted as a teleconference over a mobile phone, which was sub-optimal to say the least. Nevertheless, Miguel made some interesting observations.
The teleconference was also joined by Yaacov Cohen, President and CEO of Mainsoft, who told me about the Grasshopper project, which takes a different approach to cross-platform .NET. The Grasshopper compiler converts your compiled ASP.NET project into Java byte code, for deployment on a J2EE application server; it is nearly the opposite of IKVM, which JIT-compiles Java byte code to run on Mono. Mono has helped Mainsoft create some of Grasshopper's supporting libraries.
There is more to say about the Mainsoft project, but what follows is mainly focused on Mono. However, the Mainsoft link intrigued me, since I was initially surprised to see de Icaza so closely involved in supporting what is, in some respects, a Mono alternative. He explained that Mono is not positioned at the high end of the enterprise application market, and maintained that Microsoft cannot succeed there either:
"The hole that Mainsoft's product fills is one that Microsoft has not been able to penetrate with ASP.NET, and we very much doubt it will be able to penetrate it. There is a segmentation of the application server space, which is the high-end market, the mid-market, and the low market. The low market is anything that costs less than $200,000 to develop and deploy. It includes every technology that you've heard of. Then you've got the high market, which is any project where the cost of deployment is over two million dollars, and in that market J2EE is firmly entrenched. There is no other technology considered today in that application space. In part that's because people need to have multiple vendors providing the same solutions, so they like the fact that there's BEA and there's IBM and there's Sun. There's different J2EE providers. There's also different hardware providers. So that market is very hard for Microsoft to penetrate.
"That leaves the mid-market, which today is about 50% Java, with the other 50% made up of ASP.NET, and a couple of other proprietary frameworks."
The problem that de Icaza wants to address in partnership with Mainsoft is how to make Mono useful to Enterprises that have standardised on J2EE, bearing in mind that in his view, "ASP.NET is a technology that has been forbidden for everyone working on the high market. Mainsoft is a big help to these people because they can deploy ASP.NET on their existing servers, just little pieces, probably the front-end, while they continue to use everything they have already in J2EE."
De Icaza takes the view that the main benefit of .NET is in productivity. "The development model in ASP.NET is lighter than the development model with J2EE. J2EE has taken this approach of Model-View-Controller, which is a beautiful thing from an academic perspective, but it does add a burden. At Ximian we consulted with a number of software companies. They said, 'We can develop applications 20 to 25% faster than with ASP.NET than we can with J2EE.' Developers like ASP.NET because you don't have these three layers of Model-View-Controller. Instead there is the presentation layer, and the model is the database. You don't have this intermediate layer."
I asked de Icaza what is the current state of adoption for Mono in the Enterprise. He says that the numbers are not being tracked. "We get people's feedback, mostly when something doesn't work, but we do not track Enterprise applications. What we do know is that a lot of new applications are built on Linux using Mono. We do know that a lot of the existing open-source applications are now being certified to run directly on Mono. We're going to have a program of certifying to run with Mono shortly."
Novell is also using Mono for its own products. "It's being used for iFolder, which is a file system technology from Novell, both for the server and the client. Pretty much all of the desktop efforts are built on Mono. That includes Beagle desktop search, many of the applets on the desktop, and the new media player that we're shipping. So there's a lot of internal use of Mono at Novell," says de Icaza.
However, the main purpose of Mono is to ease migration. "It enables the large number of VB.NET and C# people to target a platform other than Windows. Yes, there is an effort in porting an application, but we're not talking about a rewrite. We're not talking about a year of development, we're talking about a couple of weeks, making sure that everything works."
An interesting case study is the City of Munich, which decided to move entirely away from Windows onto Linux. It had an application for provisioning and human resources management that was running on ASP.NET. The company which developed the application came to Mono for help with porting. "We fine-tuned Mono, and made sure that the bugs were fixed, so by the time Mono 1.0 was released they could deploy it on 500 servers in the City of Munich. Now we're seeing the software also deployed in the city of Berlin."
Indigo and scalability
De Icaza made some sharp comments concerning Indigo, the next-generation Windows technology which replaces COM+ and .NET Enterprise Services, when I asked him if Mono will support it. "The problem that Indigo faces is that it's not a 1.0 technology yet. It will probably be launched around the same time as Longhorn. Before you see the first applications using Indigo, we're talking about two to three years for the early adopters.
"At the same time we have a lot of developers who are interested in technologies like Indigo, but who need something today. We've been pointing these people either towards the Corba stack, which has everything Indigo has and more, but with considerable complexity, or to a very nice product from ZeroC, a company made up by many of the ex-Corba people. They wanted to have something simpler than Corba, and created Ice [Internet Communication Engine], which works in Java, C++, PHP, and of course any of the .NET languages.
"What is interesting is that many of the multi-player games are using ICE, because it's a high-performance, very thin library. It supports all sorts of interesting things like proxies and batching and scheduling and recovery and so on. So when people ask me about Indigo I say well, you can get Ice today. Ice has everything you can dream of. You can try it out for free, for free applications, or you can buy a commercial license. Ice is fantastic, and people deserve to know more about it."
Of course de Icaza's comments need to be taken in context. Mono may not be used in high-end Enterprise application, but Microsoft's platform is not entirely invisible in this space. The London Stock Exchange is a counter-example which Microsoft frequently promotes. The role of vendor-independence in corporate technology adoption should also be scrutinised. Adopting the J2EE standard is surely a great help if you want to move from one application server to another, but in reality moving from say WebSphere to BEA is unlikely to be easy, and migrating between database servers may be even harder unless portability is a design goal from the beginning. Still, overall there's no doubt that J2EE is the dominant player in this area.
It's also worth noting a contradiction in Mainsoft's marketing. The company promotes Grasshopper in conjunction with a high-end J2EE server as a means of adding scalability to .NET, yet it has not attempted to port the System.EnterpriseServices libraries which are used by the most scaleable .NET applications.
What is clear is that Mono (as opposed to .NET) is not currently designed for scalability or transactional distributed applications. De Icaza's comments suggest that this is unlikely to change, although the Ice wrappers are an interesting area to explore.
Finally, if you would like to try Mono, you can now do so in a pain-free manner by downloading a new live CD. This is a self-contained, bootable CD which launches Linux complete with Mono and numerous sample applications, without disturbing your existing installed operating system.
Postscript: See Miguel de Icaza's further comments in which he clarifies the relationship with Mainsoft and expands on why he is unhappy with Indigo.
Links
The following links are for more details on the projects mentioned above:
Mono project
Mono Live CD
Mainsoft Grasshopper
ZeroC ICE
Novell iFolder
IKVM.NET
Copyright Tim Anderson 18th July 2005. All rights reserved.