Few free and open source software projects have attracted such a range of reactions as Mono. On one hand, as an implementation of Microsoft's .Net that's sponsored by Novell, it has been vilified both for the company it keeps and as a possible source of patent claims, should Microsoft choose to get nasty. On the other hand, Mono has been the platform of choice for such major projects as Second Life, which uses it to increase the efficiency of its servers. This week, as the Mono project reached version 2.0, Miguel de Icaza, the project's founder and maintainer, talked with Linux.com about the history of the project, its application and the criticism leveled at it, and where the project goes from here.
Mono 2.0 is a milestone in the project because, as Novell product manager Joseph Hill explains, "We're really signalling that we've completed compatibility with .Net 2.0's API." However, as Hill points out, Mono has already done considerable work on compatibility with .Net 3.0 and 3.5, so Mono 2.0 is "a little more like 3.5 minus several of the big libraries that were added to 3.0 that we're not seeing a lot of uptake on -- for example, the Windows Communication Foundation (WCF) and the Windows Presentation Foundation."
Even more importantly, for de Icaza, the release is a moment to reflect that the project has "come to the point where people consider Mono an alternative implementation" of .Net. For example, he cites the example of the compiler for F#, whose developers "not only test on Mono before shipping, but also provide installation scripts for Linux. Now we're finally regarded as a serious project, and not just a toy project."
The struggle for respect
For de Icaza, the moment has been a long time coming. "When .Net came out in 2000, I had a little bit of envy," he says, "because it looked fantastic, and I felt left behind. I saw the Windows developers getting this incredibly interesting technology -- you know, multiple language support, use of native libraries, a really nice language. And Linux people didn't have that, so we started building support for all that in Linux." For de Icaza, the decision was "all about making the developer happy, eliminating frustration, making sure he enjoys what he is doing, and trying to eliminate as many pain points as possible."
Since then, "we've gone in waves," de Icaza says. "The first wave, up to Mono 1.0, was really focused on improving the status quo of development, and trying to bring that joy of programming to Linux developers by giving them that combination of high performance and tight languages, and the benefits of a managed run-time.
"The second wave was when we started looking at implementing the APIs that people were using on the Windows platform, because that would enable a lot of libraries and components that people were using on Windows to be used on Linux as well. There's a massive component-vendor ecosystem on Windows for .Net technologies, and we wanted to get all that on Linux."
The project suffered a setback when it had barely implemented the basic 1.0 .Net technologies in Mono 1.2, and .Net 2.0 was released. "We had the core features, but we were lagging behind API-wise," de Icaza says. But, since then, the cross-platform support that he sought has started to arrive.
"Today, pretty much every open source .Net routine out there is tested against Mono. When we released Mono 1.2, it was pretty much a novelty. But now, it's pretty much a standard rule that you will test your software on Mono before you ship."
The result has been a widespread uptake in the use of Mono for development. The list of companies and Web projects that use Mono numbers several dozen, ranging from Novell to MindTouch and Wikipedia. And, on the GNOME desktop, de Icaza says, "Some of the best of breed applications that people ship with GNOME are built with Mono: the photo management tool F-Spot, the media player Banshee, and new stuff like Tasque and GNOME Do."
Perhaps the most surprising use of Mono has been in the gaming community. "Second Life has now migrated to using its own scripts on Mono, and we gave them up to 350 times performance increase. That means they can run more in their scripts, and have a lot more complicated effects with the same code," de Icaza says. "And, on the client side, we've been working with a company in Denmark called Unity [Technologies] that builds an IDE for games, and they also have mini-games on the Web that is probably the most popular use of Mono today. But the one that's really exciting is the Wii [gaming console]. We got Mono running on the Wii, and we basically help make better games."
According to de Icaza, "We get a lot of requests from game companies to license Mono," which is released under the GNU Lesser General Public License, and therefore available for both free and proprietary use. "We can't quote names, but the makers of anything that has too many characters on the screens, or too many things happening at once, those are typically the people we get calling us for getting a version for consoles."
Running counter to this success is a steady stream of criticism that is so strong that, in many free software circles, it is better known than Mono's success. "The hostility started on day one, you know?" de Icaza says. "A lot of people are not pro-something; they're anti-Microsoft. And Mono was criticized early on because Microsoft created the APIs, and Microsoft is evil."
De Icaza suggests that a certain double standard has been present in much of the criticism. He notes, for example, that the same people who criticized Mono, which has always been free software and cross-platform, used to be far more tolerant towards Sun Microsystems'Java when it was still proprietary and ran only on platforms that Sun chose to support.
Still, de Icaza acknowledges that the criticism has probably hurt the project to an extent. "We could probably have more developers if everyone was gung-ho about Mono," he says. "On the other hand, there are projects that have been out there forever, even with monetary backup, and they have trouble getting contributors. I'm sure it wouldn't hurt if everyone loved Mono, but it's hard to dodge criticism."
But, so far as possible, de Icaza tries not to dwell on the criticism. In contrast to what he perceives as the negativity in the criticism, he says, "I like to think of my team as pro-having better tools, pro-bringing more people to Linux. It kind of sounds like a self-help book, but we're trying to be positive and trying to leave a positive mark on the world."
Besides, de Icaza is convinced that, over time, the criticism is dying, or at least being confined to only a small segment of the community. "I think most people have learned to live and let live," he says. "It's hard to tell us that we should give up when you get all these other successes, when it's winning some key customers, helping people consume less power and reducing their data center loads. It's hard to tell us that we're wrong based on an article they read in some rag."
What comes next
De Icaza acknowledges that Mono may always be struggling for parity. "Microsoft is always going to have some APIs we want to get our hands on -- but, for that matter, so will other people. There's always going to be some APIs we want to have." However, he points out that parity goes both ways, and, given Mono's support for projects such as D-Bus, it is also true that "Microsoft has a lot of catching up to do with us," although he admits that such a comment is "probably a stretch."
The immediate priority is to implement the APIs in .Net 3.0 and 3.5 that Mono still does not support, such as WCF. Another priority is improved Mac OS X support. A number of other improvements, such as a rewritten just-in-time (JIT) compilation engine, have been ready for a couple of months, but were not included in the 2.0 release because they needed a longer test cycle.
De Icaza also looks forward to increased use of Mono in GNOME. However, he views GNOME as a multiple-language project, noting that "people have grown very fond of Python" in the GNOME project.
Even the rise of Vala, which many people regard as an effort to sidestep the controversy over using Mono in GNOME, does not unduly disturb him. While he would like to see Vala develop more, and is concerned that it might take years to develop the support necessary to make a language a success, he says that Vala "has some interesting ideas. If people want to use Vala, I have no objection."
Naturally, de Icaza would prefer that people adopt Mono. But, he says, "My object in the end is more applications for Linux, and it doesn't really matter what people are using. We happen to like to bring .Net developers from Windows to Linux, because they have a huge ecosystem. But if people want to use something else, more power to them."