Our next major milestone is to release a feature complete version of WinForms as part of Mono 1.2. That has taken more time than we wanted not because of WinForms but because Mono started to get adopted inside of Novell. In fact it has started to catch on like fire. What that meant was our original goal of supporting desktop applications had to be expanded to include server applications or long running applications. This required us to harden the Mono runtime to make it suitable for long running applications. Does that include applications such as iFolder?
It does on the server and other applications like Beagle that have to run nonstop and should not crash. The requirements of Mono kept going up and we had to take care of those. The other element was that Mono became the foundation for Open SUSE's new update technology which is ZENworks. ZENworks for Linux is written in Mono so we basically had to test it on every platform that Mono supports from SUSE. While some porting work is easy, porting Mono is not, since you're having to rewrite the compile for a new processor architecture with each new platform like Itanium, S/390, S/390X, X86-64 and PowerPC. Mono has matured as a result and is becoming much more stable. It's becoming a player in the virtual machine space with the features people have been asking for and the hardening to support the applications. What does the 1.2 release schedule look like?
First beta for Mono 1.2 will be in April and we'll fix all the bugs that come out of that beta release. We'll be working with a number of partners and ISVs that have developed WinForms applications to bring them over to Linux. You have to keep in mind that most of these people are in vertical markets so the software programs they write are not your typical horizontal applications. One of these projects is the OpenDental open source application that was written on top of Microsoft's .NET architecture for the Windows platform to manage a dental practice. We're going to be working with people like that to make sure they can run their apps on Linux. What about anything that was in the original 1.2 roadmap that won't make it into the shipping version?
Probably the only thing that fell off is Visual Basic. We didn't do that and the reason is we wanted to have an open source compiler. Writing compilers is a lot of work and the only real reason we needed VB .NET was to run ASP.NET sites. It came down to making a decision on where should our resources go. Most of our developers on Linux were more comfortable with C#. From a migration standpoint the VB crowd could continue to use Visual Studio on Windows and they could just run the binary on Linux. ASP.NET 2.0 introduced a system in which you don't have to use the source code on your web site any more. You can just deploy the binary code so that basically eliminated the a lot of the reasons for getting VB .NET on Mono in terms of us funding that effort. There is a version of VB .NET there but it will remain in an alpha state until contributors polish it up enough that it can be called a real compiler. What's your take on the adoption or usage of Mono on the Windows platform itself?
Some people are using it because it helps them on their porting effort. We now have a Visual Studio plug-in that lets you build your application and test it on Mono in Windows. Its a good step in the right direction in terms of making sure that everything you're using will work fine in Mono in one step. There also a couple of ISVs that are using Mono because they can split it into pieces. Instead of having their software depend on a fairly large .NET deployment they can just bundle Mono, which comes out to about 3MB compressed. They can just include that with their software and it's a very easy download. The other reason is that the .NET Framework installs as a part of your system while the Mono framework can just be a part of your application. It has this XCopy deployment system so it's really easy to deploy. What about support for other languages on Mono such as IronPython or Ruby?
We tried to fund the Ruby effort through the Google Summer of Code project but the guys that did it didn't finish it. Microsoft on the other hand funded an open source compiler for Ruby through the University of Queensland so we're hoping to have a beta compiler by the end of the summer. Those guys have built a couple of compilers in the past and know what the problems are. They've been working with Microsoft and will make this one open source just like their [Component] Pascal one was. What demand do you see for the features in the 2.0 version of the runtime that aren't in Mono now?
Our 2.0 support was accelerated since the runtime itself was in beta for two plus years. When Microsoft released the official verison in November of last year and people actually started to use it we started to get reports of people trying to run their stuff on Mono. By January it was pretty clear that people were adopting the 2.0 stuff pretty quickly. We've implemented as fast as we could the major things that people are using. We haven't done everything but we've tried to prioritize the things that people need the most. Generics are fully implemented. In that case Microsoft submitted all the specifications to ECMA about nine months before they actually disclosed it to the public. By the time of the Microsoft PDC in October 2003 we almost had a complete generics in time which we wanted to demo but didn't get the chance. It was almost there but it wasn't completely there. We've been working on that particular component now for almost three years so it is pretty complete. What are some of the other major features that are there?
The whole C# 2.0 language is in there. The full System.XML is in there. ADO.NET has about half of the new features implemented as does ASP.NET. About 80% of the new WinForms 2.0 is missing. We're trying to prioritize things knowing that we're impacting developers that need some of the new features.