To the uninitiated, the basic idea behind the open-source Mono project—to bring .Net to Linux—is kind of hard to grasp. How can Microsoft's .Net development platform, which is all about making life easier for Windows programmers, be used to write applications for Linux, Microsoft's bete noire?
Yet after three years of toil, Miguel de Icaza, the founder of the Mono project, has managed to bring at least some of Microsoft's slick tooling to the Linux camp. And now that Novell has taken over the stewardship of Mono, after , Mono has the potential to be more than just a curiosity for open-source zealots.
Mono is not a development tool, like Microsoft's Visual Studio. Rather, it's a port of the guts that underlie Microsoft's development tools. That includes Microsoft's C# development language, "libraries" of prewritten code and Microsoft's common language runtime, software that allows a programmer to combine code written in different languages in a single application.
To de Icaza, replicating Microsoft's hard work—much of which has been published to standards body —will make other operating systems, notably Linux, more attractive to developers. And with the "universal virtual machine" of .Net, programmers can have a greater choice in languages.
In his office decorated with small stuffed monkeys ("mono" means monkey in Spanish), de Icaza spoke to CNET News.com shortly before the company began shipping Mono version 1.0.
Q: Now that , what can you do that you couldn't do before?
A: Oh, Unix is a world of pain for developers. Now, basically what we got is very modern IDEs (integrated development environment) for developing software on other platforms.
So, for example at Novell—and this was a choice that I really wasn't involved in—but they looked at the (Mono) technology and they found exactly what they were looking for implementing this thing called iFolder 3.0, which is a new version from scratch with many new features, similar to the Longhorn WinFS with synchronization of data, backups, all kinds of interesting things. They could write in C++, but the schedule would just go out the window or they could do it in C#, but it would be Windows. And when Novell acquired Ximian they had the option of building the same software that runs on Windows and on Linux.So today they support Windows, Linux and the Mac S with the same tool base. It helps developers focus more on what they are doing instead of with the nitty-gritty details of the specific platform. There's a lot of new development happening on Mono. We (at Novell) are centralizing on Mono as our internal development platform.
Given that is a port of technology that Microsoft submits to for standardization. How are you going to keep up with Microsoft and what they are doing?
Well, Mono 1.0 is just shipping now in about middle of 2004, and we started three years ago. Microsoft released their products a year and a half ago. So, we are late. We are very late—we are 18 months behind Microsoft. But we still shipped, and people are still using it.
In general, and I like what says, which is "free software is always late." The moment you write the first line of code, you are writing that line of code because you have a need. And you have the need now and not in six months or in three months when you are finished. You always have to put things for later. Free software is always like that.
We are already working with .NET 2.0 features. (Mono) 1.0 is already done—we are just going through packaging. But my team is not waiting and sitting, not doing anything. My team is already working 2.0 features. Like, for example we have been working with Microsoft on the C# 2.0 specification.
Has Microsoft been regularly submitting updates to .Net to Ecma?
Well, they have been relatively good citizens. All of the core pieces that they did for 1.0, they've been submitting to Ecma in advance (for .Net 2.0). So, actually by the time they unveil their first production compiler for generics, we actually had a generics compiler. It was not finished, but we had a generic compiler and now we are complete. They still haven't shipped their generic compiler as a product; it was only a beta. So, we think that we are going to have the same functionality in the compiler and the VM (virtual machine) by the time they ship. But that only helps me in some pieces.
What about all the changes Microsoft is talking about in Longhorn?
Yes. There are always things like Longhorn. I love Longhorn—Longhorn is just changing continuously. That cannot be standardized, right? Actually, we are not touching Longhorn yet, until we know what's happening there and see whether developers need or don't need some of those features.
All of their APIs (application programming interfaces), they are calling WinFX. And there is this tiny little chunk that they call . We have an equivalent technology in Novell called iFolder. So, since this thing is still changing, we don't know if we can implement WinFS on top of Ximian or not. Since that thing is still evolving, it's hard to tell. When things are relatively quiet, then we are going to start implementing, because the goal here is to be as compatible as possible.
Are people in the open-source community ticked off at you for having done something with Microsoft's C#?
Well, there are many positions of course on these situations, and I wouldn't say it is the open-source position versus the rest of the world.
What about patents? Is there a danger that Microsoft may at some point demand that you license portions of .Net?
Well, at this point, we don't know of any patent infringement that Mono has (committed).
Have you looked into it specifically?
We have looked at some of it, and we haven't found any infringement. But in general, the problem is that Microsoft at least has 30,000 patents. I don't know if you have ever seen a patent or how it works, but they basically have these law claims where they say this is the invention, and the claims are relatively hard to read.
So it's not possible to enforce?
It has to be brought up to your attention. That's the problem in general with patents. Even if you try to do a patent review, which we looked at some, the scope wasn't really anything that we infringed on.
Then there is prior art. The question is has these been done before? For example, in this particular case, you have a multi-language VM (virtual machine). It turns out that it's a very old concept and it's actually being used in production. The OSF (open software foundation) commissioned a development that did exactly that. It never made it to market. Well, it made it to market—it just was a complete failure.
So what is your policy then?
The moment we are made aware of an infringement on a valid patent that cannot be worked around and there is no prior art, we will remove the code. So that has been our policy. We will remove any infringing code and as a user of Mono, you will have to work around the removal of the code. So today we don't have that because we are not aware of any infringements, but that's the situation.
Has Novell thought about legal indemnification like you did with Linux?
No. The legal indemnification for Linux is different, though, because there is a claim that property was stolen.
People always talk about the battle for the hearts and minds of developers, who choose between Microsoft's .Net and Java. Do you think Mono will attract Java developers to the .Net fold?
Today what's happening is that (Microsoft's system for building Web applications) is replacing, it's basically pushing J2EE (Java 2 Enterprise Edition) aside. We did a study at Ximian when we were trying to find customers for Mono. We found that people said that it was 25 percent more efficient to build in ASP.Net, because they have to do all this academic crap (with J2EE). Microsoft later funded a similar study and they came up with 30 percent. We interviewed about 25 customers about why would you buy Mono, why not J2EE, and we came up with that.
The problem with J2EE really is that it became very, very academic and the complexity of all these perfectly designed systems in schools does not necessarily map when you have deadlines and all kinds of other things. Twenty five percent means we can develop it in a shorter time period. We can actually hire less people to do this thing. So those shops that spend $200,000 to $2 million say it's a one-year project. We are talking about relatively small shops—four or five developers or six developers to maybe 20 developers. If you can save 25 percent, it's a very big savings there. So, it's just because the technology is not as pretty as it could be or as nice as it could be, but it gets the job done. So, it's not Java's fault; it's more the framework has not been designed for these users.
But don't developers have a lot of options in the open-source world?
Yeah, and you see a lot of people using all the alternative technologies with Java like Struts. The problem is that other than a couple of O'Reilly books, there is nothing else there. It's not something that you can attend a course on. It's not something you can just pick up training or support anywhere.
Basically, the ASP.net technology and J2EE have become players because there is enough money behind them to push them. All the other ones might very possibly, like , could absolutely be a very good high-level platform, but it's just a niche thing right now. What we are doing basically is, if you can get trained on ASP.Net or are familiar with Microsoft tools, you can get your software running on Linux.
If you want to run J2EE, run J2EE. If you run ASP.net, we will run it. So, Linux becomes our perfect choice for running both J2EE and .Net, as opposed to being a disadvantage to Windows.
Will you be able to port everything that Microsoft does on Windows to other operating systems?
The new UI stuff, I have struggled a lot with what we are going to do with our toolkit.