Miguel on Mono

Editor's Note: The last time we checked in with Miguel de Icaza was last summer,
when he announced his Mono project. Mono is an open source initiative that aims to bring the functionality of Microsoft's
.NET development environment to Unix platforms. With the first parts of .NET being
released, we asked tech writer and editor John Gartner to give Miguel a
call to find out how Mono is coming along.

Miguel de Icaza is a happy developer--his Mono project is progressing well and is on schedule.

Miguel launched the Mono initiative last summer because he wants Linux programmers to have access to the benefits of .NET components, including a C# compiler, a Common Language Runtime compiler, and an extensive set of class libraries. He said .NET greatly improves the efficiency of writing code because applications can be deployed on multiple environments.

The project has drawn interest because it implies the support of a
marquee open source developer--the originator of the GNOME desktop--
for Microsoft's most ambitious effort to integrate with the Web.

Where Mono Stands

Last fall, the Mono team, headed by Miguel's Ximian software company, completed the first version of the JIT (just in time) compiler. The JIT runtime engine allows Linux systems, for the first time, to run .NET applications built on Windows, Linux, or Unix platforms.

The JIT is now "self-hosting on Linux ... It can pretty much run anything we throw at it," Miguel said, happy to be free of relying on Microsoft's C# (pronounced c sharp) compiler. JIT allows him to work on Unix instead of having to switch to Windows for compiling. He said he can't release performance data comparing Mono's JIT engine to Microsoft's JIT, but does admit that Mono's is slower.

Miguel said that before his company works on optimizing performance, it will focus on making the compiler feature complete. Then, the next two features Ximian will address are security infrastructure and garbage collection.

Why is Ximian interested? Miguel said Mono will not only help the company internally, but could also help it land new clients. Mono will give the company a stronger platform for developing
commercial applications, and if more developers move to Linux as their primary working environment, that increases the number of potential clients for Ximian's software support and services business.

Mono's next major milestone will be to have smart clients running on Linux by June 2002, Miguel said. He is optimistic that there will be Windows Forms applications developed on Windows running on Linux by this summer.

Licensing Issues

But the most significant update to Mono is a new licensing model, which Miguel announced on January 28, 2002. Although most of the Mono project will stay under the GPL (GNU Public License), Mono's class libraries will have MIT's X11 license.

Miguel said the move away from GPL was necessary because developers wanted
to put the software onto embedded chips. "There's no way to give
guarantees to end users that they will be able to make changes to such a chip."

"That basically means you can take Mono, you can make improvements, burn
it on a chip, or even build a proprietary product with it if you want," he said. The change opens the door to hardware partners: "The upside is we get Intel to work with us."

The Mono community is also comfortable with the change, Miguel said. During his work to make Mono a license-worthy product, his biggest surprise has been Microsoft's "excellent" work on building in security.

Instead of having permissions only at the user level (as in Unix), in .NET "you can have permissions at the class level, you can have classes running at different permissions. If a class makes a call into another class, then you start subtracting the permissions as you go."

"It's an amazing job. It couldn't be any better."

Miguel says he's getting support from open-source developers and from Microsoft. Is .NET a bridge between open-source hackers and Redmond?

The bulk of the Mono work yet to be done is in building class
libraries. Microsoft has delivered about 3,500 class libraries for .NET so
far, while, according to Miguel, Mono has somewhere around 900 implemented.

The big differences in class libraries between his and Microsoft's project
will center on objects. While Mono will not try to port links to Windows'
COM objects, there will be a gateway to GNOME objects.

Other than granting access to GNOME objects, Miguel is not encouraging the
development of any other Linux-only libraries.

"I don't want to give the spin of embrace and extend because I think the embrace-and-extend policy is wrong for users," Miguel said. "I don't want to build an application for Linux that users can't run on Windows."

Microsoft's Story

Last October, Miguel went to Microsoft's Professional Developers
Conference (PDC), where he found acceptance in Mono from Microsoft
developers. "They are actually pretty excited about Mono. It gives them a
story about being cross-platform, and seeing your specification going other places is interesting." Miguel said programmers are always curious to see how others can extend their work.

Since then, the informal exchanges with Microsoft developers have
continued. "They are extremely helpful when I've had questions about
.NET. These are not high-level discussions--these are
programmer-to-programmer discussions," Miguel said.

After Mono completes its Linux work, Miguel said the next target is the
PowerPC, to get Windows Forms to run on Mac OS X, and then Intel's Itanium
processor. He said each would require writing a JIT compiler, which takes
about three to four months.

Miguel said he knows of no companies porting .NET to other Unix variants,
such as Sun Microsystems' Solaris. "I haven't talked to Sun about this, but I probably
should." He said his gut feeling is that Sun wouldn't be interested
because, "They are betting everything on Java."

No Tainted Code

He doesn't foresee any patents issues that could entangle Mono, but he said,
"We're prepared to make changes to Mono if that's needed." If a patent
infringement challenge were made, Miguel said, he could hypothetically see
two versions of Mono existing--one with licensed code, and one without.

To help protect Mono from potential future legal wrangling, Miguel has a strict rule. "If you look at Microsoft's shared source implementation, do not contribute to Mono." He said that developers who see Microsoft's
.NET details when they are published would be banned from working with
him. "I hope not many people get that thing, because if they do, they're
going to be tainted for doing development."

Miguel plans to release Mono in June 2002, and he expects that the early adopters will be programmers already familiar with .NET who want to deploy it on Unix systems. Next in line will be those who may have heard of .NET, but have been waiting for the Unix runtime version.

Completing Mono will be just as vital for the Unix community as .NET is for Microsoft's developers. Developers from either platform will be able to write code in one environment and bring the applications into others.

"It's an extremely important need of the Unix universe," says Miguel. "Basically Microsoft had very hard-to-program-for APIs. People are still using C++; it's very hard to debug. .NET brought a breath of fresh air into Microsoft's applications."