Interview How much do you love Microsoft's .NET? Enough to trust your Gnome applications to its APIs in the future?
That's what Gnome leader Miguel de Icaza, believes should happen. Miguel calls .NET the "natural upgrade" for the Gnome platform, and enthused about the technology in an interview with us at LinuxWorld this week. Basing Gnome on the .NET APIs will cut development time significantly,
He also had praise for the new Microsoft security model, dismissed the notion that Redmond was employing embrace and extend to its web services protocols, and put the message that the community should get over its beef with The Beast.
"I'd like to see Gnome applications written in .NET in version 4.0 - no, version 3.0. But Gnome 4.0 should be based on .NET," he told us. "A lot of people just see .NET as a fantastic upgrade for the development platform from Microsoft.
Had anyone, we wondered, told Sun? Sun has decided to adopt Gnome as the replacement to the aging and unloved CDE Desktop for Solaris, and you could see demos of the latest work this week at the large Sun booth.
Miguel of course is leading development on Mono, the project to create an open source version of Microsoft's .NET framework - the C# compiler, run-time and class libraries. Which he says is a lot of fun. It's sponsored by Ximian, the company he founded, but most of the hundreds of contributors are not Ximian employees.
We wondered if the goal of Mono was really technical, as he'd said at the launch of the project, or political? Why not help clone Java?
"I've never worked with the Java community. I was interested in Java the beginning, but the problem with Java is you do have to switch your platform. If you have code in C or C++ you have to jump to full Java: use Java compilers, full virtual machine, full class libraries and rewrite everything in Java.
But there's JPython, we countered?
"Well most of what you have is C C++ and Fortran code, so dropping all that code and rewriting it in J is not an option. Perl and Python are useful on the Open Source universe but it's a really limited universe compared to the existing C or C++ codebase"
"So what is really neat about .Net is that you can run all of those apps ath the same time.
But isn't there a danger of legitimizing the Microsoft platform - with Microsoft being an enemy of free software,?
"Well Microsoft really does develop some really interesting technology. Not to go too far, but Microsoft is probably used by most people out there. Some scientists use TeX or LatEX but for most people Word is the thing that writers use these days. It might not be the best, but they do a pretty good job."
"When it comes to .NET they've done a really outstanding job."
"I'm trying to find out more about the history of .NET and how they came to make these decisions. It's a very large investment in terms of time moving the whole company to this. But .NET is a really nice platform to build on."
"In the GNOME project we tried to keep the platform language independent. And it's hard to maintain those language bindings. The MS people had the same problem: with a new API. it would take a year and a half before the Visual Basic people could use it; it would have to go through a new release of the OS, a new release of the libraries, a new release of the run-time, and by the time its used by the user it had taken 18 months. We found this - it takes a long time.
"With .NET once an API is published it's available to all programming languages at the same time.
"It's strategic for us - lots of people will develop applications in .NET
Really? We'd always figured it was a defensive move. The technology is really RPC under a new name, and Microsoft's been doing that for ten years… It's not about attracting new developers, is it?
"I don't think they're going to lose developers to Java and I think they're going to keep the ones they had," countered Miguel. "Let's say it remains constant - it's still a very large amount of people developing .NET applications".
"Now you know about .NET Smart Clients - Smart Clients are traditional applications extended to web services, with the addition that it's really easy to deploy. You can upgrade the app on the server and the users never know. The idea behind Smart Clients is you have a custom UI - good a example is IM tools - integrated with a remote server .
"So one of the interesting side-effects it that you'll be able to run smart clients on ßour platform as well, because we're compatible with the binary file format.
"Right now we compiling on Windows and popping the executable and running it on Linux. That's the way we debug the JIT compiler. We develop on Windows and copy and run on Linux.
Miguel also had praise for the .NET versioning architecture, - "an outstanding job" - similar to the versioning Unix has had for years.
We wondered if they could keep up with Microsoft?
"It's a little early to say. Right now we have 900 classes out of 3500 classes so we're not keeping up at this point. As Alan Cox likes to say, free software is always late!
"When Microsoft ships 1.0 we're not going to be shipping Mono1.0 for at least a year. So we're late. If they make changes to the API we'll try and track it down.
But aren't there large chunks of .NET you can only do on Windows. like authorization….?
"Oh that is a very interesting question! The I/O model is based on the Win32 model - we have to emulate the behaviour - and it turns out that behaviour is extremely nice. We went and implemented that.
"They have a beautiful security system and we're emulating the whole security infrastructure. It's actually easier to use than the Windows counterpart. We're basically wrapping the Unix functionality inside the Windows functionality.
"What's important to keep in mind is that you do not actually use the Windows API in .NET - you use the .NET API - the clasese they have defined.
There's final area, he added, with Mono emulting the Windows forms, which will be based on Gtk for .NET.
Now about keeping pace. Only a small portion of .NET classes have been submitted to ECMA.
"Tiny, tiny yes. But we can do APIs too - if people like the APIs we do, we'll submit them to ECMA." Miguel cited Lloyd Dupont's OpenGL classes as an example.
So would he go as far as recommend .NET as a way to write web services?
"My main focus is the client. In the web services area there is not a big-buy-in to the Windows platform, because this is the first time they have brought it to Windows.
"Well in the Windows world they use SOAP… they do not talk about proprietary protocols.
"We're doing Mono because we care about upgrading the development platform, we care about language independence; and it's very nice two work on.
"I really don't hear too much about the debate whether you should use J2EE or .NET. If you prefer to use J2EE that's fine. I don't particularly care.
"Another interesting thing is you can make Java targets with Microsoft .NET. You you’re your existing precompiled app, run the JUMP tools and it's a .NET app. It proves .NET can be used as a generic platform for running applications from many different languages. But not everyone agrees with that.
"A lot of people just see .NET as a fantastic upgrade for the development platform from Microsoft.
Security through obscurity
We were surprised to hear that Microsoft had a great security model, could he explain?
"OK there are two security modeks in place - one is the Windows NTN security model; which is actually a pretty [pauses] … You've seen security holes in Microsoft products - buffer overflows - they're not problems in the security architecture - that happens with Unix too. They happen to be really bad at managing their bugs, and not providing fixes on time, but that's another issue. That's the NT security system.
"But .NET has another security system on top. It's designed to have same sort of security as Java. Instead of the application being the unit of security - you trust the whole app or you don't trust any of it - each portion of the program can be running on a separate trust domain.
"So you can have Gnumeric running and you import a file from 1-2-3. Gnumeric asks the network or service do you have a plug-in for 123 - but the problem is you cannot trust this code, right? So you give it limited permissions. You're not going to let them write to the file, just read, populate the spreadsheet. If they try anything else the plug-in is killed, it throws an exception.
It's a sandbox?
"Exactly - it's a sandbox at any point, and you can define what, which I find really interesting.
The bottom line
"It's critical to upgrade our development platform to a lower cost, with Mono we can develop in a quarter of time. Microsoft is not advertising that - they're talking about web services;
How so, what parts make for faster development?
"The libraries, the GUI tools, the compiler system - serialization, database access, directory services and management."
Quite a bit then.
"Yes, you shouldn't lock yourself out of .NET.
Mono has already slayed one of the holy cows of the Gnome project - the insistence that all code be released under the GPL. The decision to change to an MIT X11 license for some libraries passed off without too much protest this week, and Miguel said it was to avoid fragmentation, as it allowed the project to use Intel's optimizing run time:-
"We were able to take everything they developed and incorporate it in Mono, but they were not able to take anythng in Mono and integrate it into their platform. It's still open source - but other people can use it."
So a very enthusiastic endorsement of .NET, which will gladden the hearts of its authors, no doubt. Microsoft has made much of .NET's language independence and Miguel affirmed it as strongly as anyone could.
The Mono FAQ points out that GNU started out as a project to take the best operating system of the time, and clone it. That's what he's doing with Mono, and .NET. Well that's not quite the perspective we have on GNU, which we've always thought was RMS' response to the increasingly restrictive licensing around UNIX™ and other software. (Gosling's EMACS, source code from Digital, being other examples).
But it's sure to fuel some interesting discussion. If the free-est of free software projects is abandoning the GPL, and adopting APIs written in Redmond, are we facing a Windows future without the gougeware licenses?
Or has the community, as Miguel tacitly suggests, simply failed to do the come up with long-term technical architectures that it needs, leaving developers little choice except to clone .NET? ®
And then there were two open source .NET clones…
BETRAYAL! .NET clones and GNOME in the firing line
Why it p ays to embrace and extend .NET - de Icaza
Mono to open source .NET by mid 2002
Call my bluff - how smart is reverse engineering .NET?