> caught up with de Icaza to find out the latest on his Mono and Moonlight projects and his views on Linux today, Microsoft and the future of free software.
How did you did become interested in software development? How did you learn to program?
Oh, that was so long ago. I got into it because my father had bought me a Commodore 64 computer and there were two problems. My father didn't buy me the disk drive so I had to actually write my own games, and they were quite limited. But that's why I got interested in programming, because I couldn't really play any games on my computer.
Did you think of programming as a career path, or did you want to do something else?
That was in Mexico -- I was probably 14 or 15. It wasn't a career path at the time; I didn't even know what I wanted to do. I wanted to be in the same field that my father was -- I wanted to be a physicist. I never thought programming would be a career.
When did you start to think about it as a career and, specifically, when did you start to think about free software?
It was kind of accidental. Using computers was a fun thing to do and it was something that I'd do in the afternoons when I left high school, or something I'd do when I was skipping classes. There was no planning going on here -- it was very existential, the whole thing.
||From the position of the open source community ... we, as any other software project, are aware that software patents are a problem. We do not like them. We think they are bad for the industry, but we know that we need to abide by that system.”
|Miguel de Icaza, Vice President of Developer Platforms, Novell Inc.
What was the concept of free software in the early '90s? What was the thinking at that time?
Oh, that's something that I remember very well. The university had just got in a couple of Unix machines, and we couldn't really do much with the Unix machines because they were lacking software. A friend of mine said, 'You can go to this address and get a bunch of stuff and be off and running. You should look at this GNU C compiler, which is free.' At the time C compilers were commercial products on the PC -- the cheap ones weren't very good and the optimizing compilers were incredibly expensive for people. It was out of reach for anyone in Mexico to get an optimized C compiler. So it was interesting that somebody was giving away a C compiler for free, especially one of such quality.
So I was very interested in Richard Stallman's idea and I remember I e-mailed him one day a couple of years later, 'How can I contribute?' And he [said], 'Well, you could raise money.' I said, 'I don't have money but I can probably write some software,' and at the time, I couldn't really do anything interesting, so I wrote something that wasn't very important, but it was useful for me and I made it free software.
People talk about free software, open source software; Microsoft uses 'shared source.' Is free software really free?
At the core of what free and open source software is, is the fact the software comes with what Stallman calls the four basic freedoms: that you can use it, redistribute it, make changes to the software and be able to reintroduce those changes, so you can argue how you want to call it and which license is the best, as long as it conforms to those four principles, and that's what makes free software free software.
You started the GNOME project shortly after you interviewed for a Unix job with the Internet Explorer folks at Microsoft. What happened at the interview, and what was the idea behind GNOME?
That's true. Initially what affected me that I learned at the interview was about COM, which Microsoft was getting developers to use. COM was for building component software, and although I had been exposed to COM by a few friends, it wasn't until I went to the interview that I realized, 'Oh, that's a pretty good technology.' And initially we wanted to make a COM-like [Unix] system but, you know, it was an interesting technology but the reality was we needed something more basic, we needed a desktop. In 1997 there was a project trying to recreate a complete desktop for Linux called KDE and it was a fantastic project, the only issue with KDE was that they had chosen to use a library that was at the core of KDE that was proprietary.
Which meant the end result [was] it didn't have the four freedoms. And I actually was a big fan of KDE at the time so I e-mailed Richard, 'Hey, this is fantastic project, you should endorse it.' And I also e-mailed my friend Eric Klein at Red Hat. And I said, 'Hey, this is a fantastic project, you should ship it in Red Hat in 1997.' So I was quite excited with that development and they both came back and said, 'We can't do that.' So, Eric explained to me that problem [was] the library [was] proprietary and that it wasn't the free system, and Richard Stallman came back with the exact same answer, 'We can't do that because we would be accepting a proprietary system as part of our core.
So that's what the GNOME project is -- it's obviously something that we needed, but we had to have a completely free foundation. And there was some talk in some circles about doing that, so the GNOME project kind of galvanized the ideas that were floating around for people who wanted to complete a free desktop for a free operating system. So that was it.
In the late '90s you started your own company, Ximian, and that's where you started Mono.
Yeah, the company was an extension of the GNOME project. We had done a lot of things at the GNOME project that we wanted to complete. We wanted to build some more ambitious applications and we wanted to make Unix on the desktop a reality. You have to remember that was right around the time that Red Hat went public, so we thought if we have the company, we'll probably have the resources. We started with a couple of projects. The first one was Evolution, which was an e-mail program. And you have to remember that when we started, none of those applications were for Linux -- nothing user friendly. So it was quite an ambitious project and we spent a couple of years doing that. Although Evolution was the original driver of the company, for us to ship Evolution we had to do a bunch of things -- we had to fix GNOME. Most people were shipping incomplete or broken versions of GNOME. So we ended up doing a distribution of GNOME that was suitable for everybody to use.
Mono was another one of those things. It was just a project that we were building internally for the sake of improving our developer experience. A lot of things came out of building Evolution.
What's the latest with Mono? When I spoke with you earlier this year, you were about to go into beta with the 2.0 compatible runtime with ASP.NET 2.0 support, and then planned to release Windows Forms 2.0 by the end of the year -- is that on track?
We already shipped ASP.NET, but we never changed the version number -- so that feature is working. We're still late for our Windows Forms stuff, and it seems like it will get done before the end of the year. I was hoping we'd ship it late in the summer.
So yeah, the first product already shipped and Mainsoft shipped a product; they call it Grasshopper 2.0. We had decided against changing the version number because we're a provider of Windows Forms, and we didn't have that, so we felt that people would justly claim that we're not really 2.0.
Some people say the drawback to Mono is the saber rattling from Microsoft about patent, and that it doesn't support the latest versions of .NET. What is your relationship like with Microsoft these days?
So, I have two positions, and one is speaking as the person managing the Mono team, and then there is another answer speaking as a Novell vice president. So from the position of the open source community -- a position not attached to Novell -- we as any other software project are aware that software patents are a problem. We don't like them. We think they're bad for the industry, but we know that we need to abide by that system. So we have a very strict policy, that we'll not knowingly introduce patented code into the Mono code base. If somebody raises an issue with us about a patent, or that we're infringing on their code base, we'll be more than happy to either do an investigation to see if there's prior art that will invalidate a patent claim, or basically re-implement the same functionality using a different approach. Or, if worse comes to worse, removing the code from Mono. And I think that's pretty much the same rule that every open source project has to use. The reality is that we're living in a world where there are some people that will enforce those patents. We're not going to go up against someone and say, 'We aren't going to take that down.' You don't want to take it to court. And in fact it's not limited to open source -- every company is under those parameters.
Speaking more as an industry developer, a couple of years ago a number of companies, Novell, IBM, Red Hat, Sony, Phillips -- and I think Google announced just this week that they were joining -- created a group called the Open Invention Network [OIN]. It's basically an umbrella organization, where each organization donates patents -- the number of patents and the actual patent is kept a secret. Some of them have been published; not all of them have been published. But we believe that they're strong patents and they're designed to protect all of the Linux audience against claims that there are patents.
The fact [is] that we don't like the patent system -- or I don't like the patent system -- [because], if you consider, there are some good patents because there was innovation and some real thinking going into it, and some bad patents that are really bogus and should have never been granted. So we believe that the patents that are part of the OIN are good patents and strong patents and might serve in case anyone decides to go against any of those projects. Mono is one of those technologies that's explicitly covered by the OIN.
The trouble with the OIN is it's kind of a cold war kind of measure. We have nuclear bombs and it's kind of as if we're going to press the button first.
In addition to that, talking as an employee of a company who has signed an agreement with Microsoft: Novell and Microsoft have an agreement in which Novell won't sue Microsoft customers for patent infringement and Microsoft will do the same with Novell customers, like when we shipped [Linium] with our SuSE distribution. If people are really concerned -- the basic ground rules and OIN aren't enough -- then this will give people a little peace of mind, at least when it comes to Microsoft.
Of course the problem is that, that isn't enough because you have thousands of companies with patents. For example, Java a couple of years ago found itself in the courtroom, not by Microsoft or IBM or anyone like that, but by Kodak. There are a lot of patents out there -- it's hard to know which one you infringe. It's a broken system. You might find something at some point or another. So the danger isn't only Microsoft. And OIN might help in some areas. Cross-license patent agreements have helped companies in the past in some areas. For example, Microsoft and Sun have a patent agreement right now so that they can use as much [IP] as they want from the other, and this is pretty common in the industry. It's a difficult problem. It's just a difficult question because there are so many angles and variables in this thing. Anyway, it doesn't only apply to Mono, it pretty much applies to every piece of software out there.
When I spoke with you earlier this year, you said that Microsoft's patent cooperation agreement and technical collaboration with Novell didn't have any bearing on Mono. Has that changed?
That's correct. So when it comes to signing a contract, the collaborations don't affect Mono. There's nothing on paper right now between Microsoft and Novell in terms of collaboration. We've met with them and we've proposed that we work together on what we think will be beneficial to both companies on Mono, and we're presenting our ideas and maybe something will happen, but so far nothing has happened.
Lately, you've been busy with Moonlight [Silverlight on Linux], which is basically running on Mono. How's that development going and what's been the reaction from the development community and Microsoft?
The development is going great. Basically, when we saw Silverlight, not 1.0 but 1.1, it looks interesting and it maps very well to the kind of thing that we want to do with Mono. We never paid attention to Silverlight until they released 1.1, and we said, 'Hey, we'll probably look at implementing this at some point.' I went to a conference and talked with John Lam and a couple others at Microsoft about some of those things. Silverlight builds on the [IronRuby source code] that John's going to be releasing to the public and what's interesting is that they open sourced that stuff, which means that we don't have to re-implement it. The stuff that John's working on is IronRuby and IronPython.
And I also met with a couple other guys at Microsoft, and they actually gave us some help about which direction to implement our own version [of Silverlight] because I had an idea of how I wanted to do it and they said, 'You don't want to do that because that would be a mistake,' and it turns out it would've been a mistake, so it was good that they gave me that feedback. But again, that's not a formal collaboration.
We didn't know when we'd start building Silverlight, and then a friend of mine at Microsoft, a guy I met at a conference, said, 'Hey, we're doing a repetition of the MIX event in Paris, and we're wondering if you guys can come down here and demonstrate Silverlight for Linux.' And we didn't have any single thing to demo, so I said, 'Yeah, that sounds awesome.' That's the first time that Microsoft has invited me to be at a conference.
So, we actually got the team together, about 8 or 9 people in my team to work 10 to 14 hour days, weekends included. But we pretty much had the runtime implemented in 21 days and we showed it in Paris. And ever since, we've been working on completing it and the polish that goes with that -- fixing all the bugs. What we showed wasn't a product but a prototype and we're pretty happy with that. When it comes to Silverlight, there are still a lot of loose ends that we have to finish but we're almost there.
Microsoft is releasing a big update in September -- they said so -- so we're looking for the September update for the next batch of work on Moonlight. So it's going to be interesting.
One analyst was saying that Silverlight 1.0 is to build the installed base -- he thinks developers will wait for 1.1, which features the CoreCLR.
My opinion is that Silverlight 1.0 is good but there was no reason for my team to get involved in that. So 1.0 is good, I think it's a nice addition to the tool chest of Web developers. What makes 1.1 more interesting is that it's going to be a major upgrade for developers.
Microsoft is releasing the open source code for IronRuby on RubyForge? It seems that the company is putting out mixed messages when it comes to open source. Are they trying to have it both ways?
No company is completely endorsing open source. They all have a mix of open source and proprietary something, either software or services. For example, you can look at one of the biggest contributors to open source: Google. They consume a lot of open source but that doesn't mean that their search engine is open source. The same thing goes with IBM, they contribute to the Apache Foundation and the Eclipse Foundation, but they still have a very proprietary business.
You think that's OK? I think some people would say that Google gets around some of the open source licensing provisions that require that modifications get contributed back to the community because what Google sells is a service.
Yeah, in one extreme, everything is open source and everybody gets access to everything. But I don't think we're going to realize that any time soon. For example, Red Hat has an incredibly open system -- they're one of the most open companies out there -- but they still reserve some cases, some services to be proprietary. If you buy their service contracts, you have to pay for them -- you don't get them for free. So I think in an ideal world, everything would be absolutely free, including the service, but I don't think you can get that today. Usually you have a combination: Some pieces are open, some are proprietary, some services you have to pay for.
Lenovo is going to start loading Novell's Linux desktop onto some of their laptops. How do you see Linux progressing as a desktop OS?
Well, what's interesting about the Lenovo deal and the Dell deal -- Lenovo is shipping SuSE, Dell is shipping Ubuntu -- is that we'll be able to work with these vendors to provide a more integrated end-to-end solution. Because you know, for a long time, the way you [would get] Linux is you [would] get your operating system and then you installed it yourself. So it's not a problem for software people, but I think that it did limit adoption for a lot of people who aren't in the technology business, who are just users of computers. They probably don't want to know what a partition is and what a hard disk is -- I mean, my wife doesn't care about that stuff.
Linux comes pre-loaded; I think this is going to provide a much better end-to-end experience. All the drivers are pre-configured; you're going to get a machine where everything works out of the box. It's like the Macs -- the Macs are in a similar position to Linux. Windows is the dominant desktop in the industry, but still you can use a Mac because a lot of the stuff that you do on a daily basis has to do with the Web and Instant Messenger, and as long as you have those things on your system you don't really need a lot more for the majority of people.
You want to put on games and a bunch of other things, and that's why people have been kind of leaning toward Windows for a long time. But with a couple of apps you can reach a lot of people, and we certainly hope that we'll start reaching those people; initially more of a business crowd, more than a consumer user like a Mac. I'd love to improve Linux to the point where it's a perfectly suitable home entertainment system, but it's getting there. Somebody has to polish it. I think the focus right now from the Dell position, the Lenovo position, is more [about] the business users than the position Apple is taking.
What skills do .NET developers need going forward, in terms of working with free software, some of these dynamic languages and developing for cross-platform environments?
That's such a big question because that's such a huge space. I think that it would be useful for some of these people to get acquainted with Linux, because regardless of the applications that they do -- there are certain frameworks that are becoming very popular -- things like Ruby on Rails [and] PHP [are] not really [about] the language; it's [about] the huge community around it. So getting acquainted with a Unix system pays off, because you'll be able to deploy services that are a mix, Ruby and Mono and all of those things. And it will certainly help you translate what you know about ASP.NET and .NET into the Unix world. I get the impression that Windows people don't have a lot of experience -- that they get intimidated by Unix -- but Unix is no longer what it used to be years ago.