Windows developers who want to move their applications and skills to other operating systems have had a limited choice in the past - develop in Java or rewrite source code to support different platforms’ APIs. Now, the answer to application portability may have arrived from an unexpected source - Novell.
Microsoft’s submission to the European Computer Manufacturers’ Association of specifications underlying its .net architecture was certainly an astute political move. The company had long suffered from accusations of proprietary marketing, so submitting .net’s Common Language Infrastructure (CLI) specification was a way of silencing the critics.
Given the limited developments of the architecture on alternative platforms, (the only available version of the Common Language Runtime ran on FreeBSD), the company was able to remain proprietary while claiming it was n0t.
That is until Ximian came along. The company began developing an open source version of .net on Linux - called Mono - in 2001, instantly making itself a thorn in Microsoft’s side. For all Microsoft’s public claims that competition is a good thing, the last thing it needed was a Linux version of the technology that would constitute the heart of the Windows architecture over the next few years.
How Mono measures up
When Novell consolidated its anti-Microsoft position by buying Ximian last year, the Mono project picked up even more steam and finally hit its 1.0 release at the end of June.
Ximian’s senior project manager for Mono, Eric Dasque, hopes Mono will provide a convenient stepping stone for developers who want to explore different platforms.
"Mono is a complete development framework on Linux," he said. "We chose .net as the platform, but Mono does not need Microsoft to work. One of the benefits of relying on .net is that we get a lot of buy-in from the Windows developer who wants to move to Linux."
Ximian has done a lot of work to replicate in Mono what Microsoft has taken years to produce with .net. In addition to a C# compiler, .net-compatible runtime and a stack of components designed to take advantage of Linux, it has also replicated elements including the ASP.net web programming API and the ADO.net data access component.
Two Microsoft components it does not support are the Windows Forms API and the Visual Basic .net language, but it plans to offer these in the Mono 1.2 download by the end of the year.
Given that only the core CLI and the C# language are European Computer Manufacturers’ Association components, Ximian created the other parts of .net within Mono, developing its own code to support the .net API, according to Dasque.
Missing from the project is an integrated development environment to rival Visual Studio .net. Ximian has produced Monodevelop, a basic IDE for developing applications on Linux. It supports debugging and also imports projects from Visual Studio, said Dasque. The firm also has a plug-in for the open source Eclipse development environment that enables developers to compile C# source code to run on Mono.
Dasque believes Mono is safe from Microsoft’s legal division because it validates Microsoft’s claims to openness. "Go to the MSDN website and search for Mono, and you will come up with four or five references to us, including an interview with Miguel de Icaza [Novell’s vice-president of development and Mono project founder] and a link to our website," he said.
Mono should worry Microsoft more now than ever. There are Solaris and Mac OS X versions of Mono available, meaning that Sun Microsystems and Apple Macintosh users can work with .net.
It opens the door for developers to switch easily between operating systems. The Mono team is making available a Windows installation of the GTK graphical user interface toolkit, which makes it easy to develop GUI applications for Linux.
Now, developers of Linux applications can port them more easily to Windows, which could present Microsoft with a problem if those applications (such as office suites, for example) compete with its own.
Perhaps more worryingly for Microsoft, having a copy of .net available for other popular operating systems makes it relatively easy for application developers to port their programs from Windows to other environments, setting the scene for a rapid expansion of the non-Windows application base as more developers begin coding for .net.
The race to shipment
IT directors have been afraid to use Linux on the desktop because many of their users’ applications are not available, this could change in the next few years. Microsoft may hope to escape such threats with Longhorn, the next major version of Windows. This will include new components including Indigo (a revamped version of the .net architecture), and Avalon, a new 3D vector-based graphics system.
However, to meet its self-imposed 2006 deadline, the company has already dropped the third major component, which was to have been an object-oriented XML-based file system called WinFS. Instead, that will appear in beta form when the Longhorn client ships. Even with that caveat, given Microsoft’s history of shipment delays, a 2006 ship date for Longhorn is still far from certain, and meanwhile, Ximian is closely following Microsoft’s activities.
Dasque said Novell was ready for such a migration. "We have all of the message queuing and remote object middleware built into Linux already [to support Indigo]. We just have to slap an API on top of it," he said.
Similarly, he said the company already has about 60% of the basic functionality promised by WinFS in the form of Novell’s iFolder, a piece of file management software. "The API classes are simple to do," he said.
iFolder focuses on mobile file access and WinFS promises much more than that, but the idea of offering a version of .net with more features than Microsoft’s puts Novell in a strong position - especially as there is also a version of Mono for Windows. Could developers end up running the Novell version of .net on Windows to get more functionality?
Version 1.2 of Mono, shipping in December, is expected to include the basic .net components missing in version 1.0.
Version 2.0 next summer will include previews of Longhorn features, said Dasque. WinFS is a possibility, as is Indigo. So will Mono leapfrog Longhorn? "Our goal is not to surpass Microsoft. Our goal is to deliver a great development platform. If we want to add something equivalent to what Longhorn is delivering, we cannot just wait five years and then release something," he said.
In the meantime, the Mono development team will see what is missing from Linux, such as some file management features found in iFolder, and try to use the Mono software to bolster the operating system in the same way Microsoft is using .net to boost the functionality of Windows.
By opening its doors via the European Computer Manufacturers’ Association, Microsoft has made it possible for other suppliers to offer compatible technology. Mono may not be Microsoft’s downfall, but if Ximian continues development at its current rate, it promises to become an increasing irritation to the software giant which has traditionally survived because of its closed approach.