Interview: Miguel de Icaza

Miguel De Icaza was one of the founders of Gnome, and started the Mono project. In 2002 he spoke at FOSDEM, when he was still leading Ximian and Mono was just started.

What's your goal for this edition?

Transmit the excitement that we have for Mono as a developer platform to other fellow open source developers.

You've done that before at FOSDEM... How was that experience?

Well, things have changed a lot.

In the FOSDEM 2002 presentation the project was in its early stages: we had a self-hosting C# compiler running on Windows, we had our just-in-time compiler running some basics (the compiler could only process 75% of the tests we had created at the time), and we had just finished the first pass at the underlying I/O and socket infrastructure.

At the time Mono still required Windows to be developed, we were a tiny project with only a handful of people working on it.

So five years later things have changed dramatically, we have created a multi-platform optimizing JIT compiler, we shipped C#, JavaScript and Visual Basic compilers, we launched two major releases of our Gtk# API that opened the doors to hundreds of Mono-based applications for the Gnome desktop, and we completed both ASP.NET and Windows.Forms which have allowed us to help developers support the Linux platform from their same [Windows-based] code base.

Many Mono-based applications are now shipping with all major distributions and developers that would have never considered Linux are now routinely porting their applications to Linux and Mac OS.

How does the future of Mono look like, even beyond .NET 2.0 compatibility?

Our strategy is to first complete the 2.0 support because that is what shipping applications today are using and there are thousands of those (we have received more than a thousand application reports using our Migration analyzer). It took about a year for developers to transition from 1.0 to 2.0 (it was an incremental upgrade, so the transition was very simple).

3.0 is a bit more disruptive. For example, to take advantage of the new GUI API, its best if applications are rewritten, and the same applies to the Workflow and communication APIs. So we believe that applications that require these APIs will take a bit longer to hit the market, which buys us time.

So in the short term: we are focusing on shipping a great 2.0.

Mono and .NET 2.0:

Our core (runtime, compilers, XML, XPath and ASP.NET) are pretty much complete at this point. We still have plenty of work to do to round up the sharp edges, but we are in a great position.

Windows.Forms 2.0 is a work-in-progress. The team has implemented the most "urgent" features, but there is still a lot of work to be done in this area (bind Mozilla to expose the WebControl for example, complete auto-sizing).

Mono and .NET 3.0:

.NET 3.0 is actually not an upgrade to .NET, .NET 3.0 is just a series of libraries that run on top of .NET 2.0, there was no update of the core libraries, the compilers or the runtime.

The 3.0 stack consists of: a new RPC system (Communications Foundation), a new GUI API (Presentation Foundation), a new server-side Workflow engine (Workflow foundation) and a platform for authentication (Cardspace/Infocard).

We have started work on the Communication Foundation as well as the Cardspace/Infocard stack, and we recently were able to send our first WS-Security encrypted message from Mono's implementation to Windows's Communication Foundation implementation.

Jordi Mas started the work on Workflow Foundation, but he is now a full time developer at a Catalonian startup and this effort has been paused.

The GUI components are probably the most exciting ones, some bits and pieces exist, but we have not officially started work on this.

Mono and 3.5:

3.5 is the name of another add-on to .NET 2.0 and it is being showcased in the Visual Studio "Orcas" preview.

The most important bit in this area are the new changes to the C# language to implement Language Integrated Query (LINQ) and the support libraries required by LINQ for its various backends (LINQ, LINQ to XML, LINQ to Databases).

The compiler bits will probably take six to nine months, the libraries will probably take a year to develop (although some pieces have already been contributed).

What do you think is more important: a good development platform, or making sure that there are some 'killer applications' to run on it?

A good developer platform.

You need your developer platform to be solid, robust, feature complete, be open to new ideas, be a good foundation for innovation, having a platform that helps you, not a platform that gets in your way.

You want your development platform to be strong when it comes to interoperability: call into native libraries, reuse native libraries, reuse code written in multiple languages, have your platform take the boring, the repetitive and the complexity out of the equation.

If you have a good platform, applications will follow, and hopefully those applications will be great applications on each of their domains.

In the end, you want to make sure that developers using the platform are having a fun time and enjoying themselves.

I like to think that we have some moderate success in that area, and I also like to think that there is a lot more that we can do.

What is your daily role inside Novell exactly?

I run the Mono project engineering and make sure that we have the features that our users request. I work towards creating a roadmap, working with third parties (commercial ISVs, components vendors, software integrators) and working with Novell internal users (both developers and Novell customers) to make sure that their applications will run with Mono.

Since Windows is the dominant software platform and .NET was a much-needed upgrade to the Windows developer experience, the migration to .NET has been impressive. Everywhere we look there are .NET applications for all kinds of vertical markets, and we want to make sure that all of those applications can be run successfully on Unix.

With Mono maturing its Windows.Forms implementation we have been able to expand our reach with ISVs and vertical software developers and it has opened up many new opportunities.

The Novell/Microsoft agreement generated some heated discussions on the internet. Did the "average Linux developer" (if such a person would exist), in your opinion, react equally hostile?

I think there were various stages of responses to the agreement. When the initial announcement was made, when questions were asked, when questions were answered, there was clearly a transformation on the position as information came to light.

A lot of people did not like the agreement, and I can understand why, and it's possible that a better agreement could have been negotiated. We have taken some of the feedback from the community and we are still trying to get Microsoft to improve some of the terms for the community (like the open source developer covenant). We will have to wait and see where those things go.

I have been advocating approaching Microsoft and improving the open source/Microsoft relationship for years as opposed to taking a combative stance towards them. Basically, I'm a believer that you can attract more bees with honey than with vinegar and that pointless confrontation is useless.

The most painful thing to watch was the self-inflicted pain that came out from some quarters in the community. There are grounds to like or dislike the agreement, and these could have been clearly articulated without resorting to fear, uncertainty and doubt.

Some of the arguments put against the Microsoft/Novell agreement or against Novell were sadly based on FUD or self-flagellation. At the height of the rhetoric I remembered the Mexican phrase "the more I understand humanity, the more I like my dog".

Will yourt talk include such "political" topics or do you want to keep it more technical?

My plan was to talk about Mono and technology; that is where my passion is. But if there is interest, I would not mind doing a separate Q&A session regarding the agreement, hosting a BOF or discussing it over onion soup in downtown Brussels.

We suggest some Belgian beer!

Additional links:

Creative Commons License
This interview is licensed under a Creative Commons Attribution 2.0 Belgium License.