1. What is the current status of Mono? When do you think the project will be reaching a good level of functionality, enough to make big C# apps, like SharpDevelop, easier to port or run on Linux?
Miguel de Icaza: The core of Mono is pretty much done:
* An advanced runtime engine, with advanced Just-in-Time compilation features, found on high end JIT engines.
* The core of the class libraries, required to run most command line tools, and powerful enough to host the C# compiler, ASP.NET, System.Data and our own breed of classes: Gtk# and Vorbis#.
* A compliant C# compiler that can be used today to develop C# application on our supported platforms. Since the C# compiler is written in C# itself, the compiler binary is actually shared between x86 and non-x86 architectures, the only bit that changes is the runtime engine.
The C# compiler builds daily our entire set of class libraries and the compiler itself, roughly half a million lines of C# code.
I find the following anecdote interesting: originally the C# compiler was able to host itself, but it did not push the compiler to its limits, particularly because the code was authored by two developers.
But the class libraries were authored by about sixty different people who did use more of the features of the language, so it was a nice maturing point when we were able to compile all of our class libraries with it.
* Our runtime engine is easy to embed: any application can embed the Mono runtime into its address space, so it is possible to write extensions to the program in any CIL supported language, or use it as a scripting engine for your program.
I showed this at the recent O'Reilly Open Source Convention. We had Gnumeric extended to support scripting through Mono, and I also showed an embedded ASP.NET web server in Gnumeric that allowed people to remotely access Gnumeric through a Web-based ASP.NET interface.
Just a nice demo to do.
Our current work is focused on various areas:
* Performance improvements in the JIT engine. Paolo Molaro and Dietmar Maurer are busy improving our runtime engine to make it an even better compiler.
* We are hoping to integrate soon the code from Zoltan in some form into our engine to enable ahead-of-time compilation.
This means that code would be compiled to machine code before it is actually executed, typically at installation time. This serves two purposes: optimizing the code for the architecture it is being installed on, but most importantly reducing application startup time, as the JIT would not have to do any work at that point.
* Portability: A lot of of the work from Dietmar and Paolo has been on making our internal code generators use portable CIL code to reduce the amount of work that people porting the JIT would face.
* Gnome support
* The Gtk# team has been doing a superb job at creating bindings for the various libraries that Gnome ships with. This includes the complete software stack from the Accessibility, to Pango, to Gtk, to Gnome, to GtkHtml and others.
* Compliance with Microsoft
* ASP.NET has drawn a lot of attention from contributors, and from people looking at Mono. Leen and Gaurav started this work, and it has now been taken over by Gonzalo and Patrik who have been developing all the missing pieces.
We recently demostrated ASP.NET at the OSCon conference. Many different pieces had to be put together: class libraries, the page compiler, the integration into the system, a simple web server.
Hopefully we will be running the large applications that Microsoft uses to show the technology in October, as they use various other bits that are not yet implemented.
We should also offer a `mod_mono' module to integrate this with their existing Apache installation.
* System.Data: Rodrigo Moya, Tim Coleman and Dan Morgan have done quite a lot of work on the area of supporting the various database interfaces in .NET, and we were also able to show various samples of this at the OSCon: a Gtk# based interface, a command line tool, and an ASP.NET clients.
* System.Web.Services: Tim Coleman just recently started work on the ASP.NET support for web services. The .NET way of doing Web Services is really nice and simple. This again, is interesting for people who are developing applications on Windows, but want to deploy on either large machines running Unix, or on small cost Linux systems.
* Other projects
* The Spainish hackers have created a `Mono Hispano' community which have authored a number of tutorials, and have started work on a CORBA implementation for Mono.
The CORBA implementation is interesting, because it integrates with .NET's remoting infrastructure.
The foundation can then be reused to implement a full CORBA binding more along the lines of CORBA language bindings.
2. What is the status of Ximian Gnome/Desktop that would be based on Gnome2?
Miguel de Icaza: We are working on our Gnome2 based offering of the Ximian desktop currently. We need to address a number of usage scenarios that our corporate customers require, so we need to make sure that all of this bits are in place.
The best person to talk about our Gnome2 efforts is Nat Friedman who is in charge of the project.
3. What did you think of Gnome 2.0? In your opinion, which are its good points, and if any, which are its weak ones?
Miguel de Icaza: Gnome 2 marked the maturity of Gnome. Various groups of interest have taken over the different duties of releasing Gnome: from testing, to release, to feature definition, to usability and accessibility.
It was a very well coordinated release. Also, Gnome2 was a major transition for us in terms of the API and the underlying platform, as we had to add support for accessibility, and integrate things like Xft into the platform, as well as shifting libraries to the right places now that Gtk has refactored some of its code.
So overall, Gnome2 is a great foundation. The focus of the team is largely now on usability and user visible improvements: now that we have a great platform, we have great tools to build great applications and functionality on top of it. You can witness this excitement on the desktop development mailing lists today.
4. TheRasterman said a few weeks ago that there was never a battle for the desktop, that Windows was the winner all along. Do you agree? Do you think that the tables can turn? What would it take to do so?
Miguel de Icaza: I like what Maddog said a few years ago: "only 1% of the world population has chosen an operating system". So I believe there is quite a lot of room to grow there. Various initiatives in various countries: both from the private industry and from the government are giving a lot of momentum to open source servers and desktops, and we are very excited on making this happen.
We are trying to encourage people to use it, we are listening to their problems and we are actively addressing usability concerns.
For instance, I recently went to Brasil, and the state of Rio Grande do Sul is using Gnome and KDE on the desktops. Banks, Government agencies, schools, tele-centers, and so on. I think that Open Source has a very bright future in countries that are just catching up technologically, as they can see big savings, and allows them to have a much better control over their systems.