GNOME's Miguel de Icaza on .NETThe New Development Environment for the Next 20 Years

Open Source developer Miguel de Icaza, leader of the GNOME project and founder of Ximian, has been exploring Microsoft's .NET platform with an open mind. When I interviewed him over a month ago, he told me that he was impressed with .NET. Then he was only beginning to think about the implications of Microsoft.NET in the Open Source community. Since then, he has organized a new project called Mono, which will try to build a free implementation of .NET for UNIX systems. Ximian will dedicate some resources to this project, but like any Open Source project, its success will depend heavily on contributions from independent developers.

".NET is an interesting mix of technologies," said Miguel de Icaza. He likes the C# language, and he is particularly impressed by .NET's component architecture and its development tools. .NET provides developers with a state-of-the-art development environment, one that leaps ahead of open source alternatives. "With .NET, Microsoft is starting with a clean slate and building for the future," said de Icaza in an interview. "It's a new development environment for the next twenty years."

"Five years ago, we [open source developers] had the high ground in technical tools," said de Icaza. "We had better tools and a better development environment than Windows developers had. Now, with .NET, I see that the roles have changed and Windows developers have much better tools than we have. Ours are good but not as good as theirs. Theirs are better integrated. Within that context, I can see how developers might use Visual Studio instead of a free-software development environment to develop applications -- especially if they are not concerned with freedom, and the ideas behind free software."

".NET is a good platform to innovate from," said de Icaza. "So I'm interested in seeing an open source version of .NET. Microsoft might port the runtime to Linux, but I don't know if it will be open source. I personally want to see the .NET runtime on Linux. I'm very interested in seeing this happen," he said emphatically, seeming to commit himself to building it if it doesn't emerge from current efforts.

In our conversation, Miguel de Icaza explored some of the reasons he liked .NET. "The C# language has some of the features of Java that I like," said de Icaza. "One of things I really like is interface-based programming, which we've been doing in the GNOME project. We've been working towards building a component system and it's sort of annoying to have to deal with the whole CORBA IDL. Microsoft was streamlining the process of writing component software with C#. They had a very simple mechanism for writing COM components using C#. That was the first thing that got my attention."

When asked what .NET says to him about future directions for GNOME, de Icaza replied: "What I wanted to do with GNOME was to close the gap between the proprietary software offering and the free software offering. We're not catching up on the desktop. With .NET, MS has figured out the next generation of development software. So it's worth looking at." He added: "If you're a developer, .NET has a lot of things that you're not going to find in Linux."

Making Programming Interfaces Language-Independent

Certainly, C# is similar to Java, but what de Icaza found intriguing was that .NET was not targeted for a single language. The problem with Java is, of course, that developers must work in Java. As a development environment, .NET is language-agnostic. It allows developers to program in whatever language they like. "In .NET, Microsoft has created the common language runtime (CLR), which is a way for languages to generate code that interoperates easily," said de Icaza. "You can have Visual Basic running in the same environment as C#, Fortan, Pascal, or whatever. You could create a class in C++ and pass it over to a C# object and then have it instantiated as a Visual Basic object. It's a programmer's dream come true."

The real benefit is greater code reuse. "Code reuse is a big problem in the Unix environment," added de Icaza. He details this argument in his well-known article: "Let's Make Unix Not Suck."

"The problem is that we are not re-using enough code across all the applications in UNIX," he said. "Everybody is reinventing all the little pieces." His first approach to solving the problem was to suggest that applications use the GNOME libraries. But exposing those libraries in Perl, Python, or whatever language the user chose was a difficult and complex task. This is what led de Icaza to create the Bonobo project, which is developing a component architecture implemented in CORBA. "That's what we set out to do last year with Bonobo. I said, 'let's use a component architecture that will allow us to write the API once and then bring it to any programming language.' We wanted C, Perl, Python or any language to have access to the APIs."

He feels that the design goals behind .NET and Bonobo were very similar, but he thinks the .NET component model is better. "One problem is that Bonobo has a lot more overhead than .NET. .NET is pretty slim when it comes to the size of the components and things that you can expose." When asked if he would see himself moving away from Bonobo, de Icaza replied: "Bonobo's interfaces are okay for what they do, which are compound documents and embedding of controls. There are better ways of defining components and writing components than writing them in CORBA IDL. If I can write a component by implementing an interface in C#, I would much rather create the component in C# than with existing Bonobo." Nonetheless, he can see both approaches being compatible. However, he reiterated that he saw himself in the future not writing C and CORBA IDL, but C#.