| 

# Interview with Miguel de Icaza  
  
---  
|  _I met with Miguel de Icaza and Federico Mena on January 21st 1998._  
  
**LF:** How did you get started with Linux? **Miguel:** That is not really important. I downloaded Linux from the net like everyone else, and as everyone I installed it and that's it. **LF:** How long ago? **Miguel:** I don't remember. It was 93, maybe... 94. The first kernel I compiled was 0.985. How old is it? I must be already 3 or 4 years old. So it was 93. **LF:** What is your official occupation? **Miguel:** I work at the Institute of Nuclear Sciences (at the UNAM). I am a system administrator, network administrator and in my many hours of free time, which is all day, I write software, talk or read news or read email. Listen man, I am convinced I will die reading email. **LF:** What was the first program you wrote for Linux, the Midnight Commander? **Miguel:** Some patches for Wine, they worked like a library, but I didn't have a PC so I had to compile Wine on the Sun station. There started the project of making Wine a library, I didn't finished it. It was completed a year later. No, like two years after someone took over the project. **LF:** Did you study at the School of Sciences of the UNAM? **Miguel:** Yes. Physics and then mathematics. **LF:** Did you finished any? **Miguel:** No. Ummm... lets say they are on hold. **LF:** How old are you? **Miguel:** 27, no 25. I was borned in 72. Listen I remembered now, I wrote the Midnight Commander when I was 20. That was 94 o 93? I beleive so. I remember that I wrote the Midnight commander for Linux. I developed it on the Sun because it was faster than the shity PC, but it was for Linux. Shit! when was it? I don't remember, I must be in the MC. **LF:** Are you still working on it? **Miguel:** Yes. **LF:** It is going to be used in the Gnome, Isn't it? **Miguel:** Well I keep mantaining it because someone has to mantain it. In other words, I am still in charge of its development but I am not working much on it right now. Most of the changes are patches provided by people. I don't know, every two or three days comes a new version. Well not every two days, most likely once a week. But besides that.... I have been working on it mostly because of the Gnome issue, MC is going to be the file manager for Gnome. **LF:** When did you get started with Linux/Sparc? **Miguel:** I don't remember. Can you beleive I dont remember!. I think it was in the mids of 95 (Check the date). **LF:** What did you do? **Miguel:** Well I contacted David Miller, he is who started the port. Then we both started the port originally and then came to join us Eddie2, no Peter...., then Eddie2, after Paul something. Initially the first things I did was an Ethernet driver, then I did several things, I don't know... a driver for X Window, I wrote all those in about two weeks, those that existed at the time. Umm mostly work on the X port...What took the most time was the C library. To this date I am still haunted by the C library. We first ported libc4. **LF:** Are you still working on the Sparc? **Miguel:** Yesterday I fixed a bug. First we fixed the libc4 to the Sparc, once it worked we ported libc5, then libc6. And they are three different libraries. They are almost three ports. There is nothing more frustrating than porting those monsters. Even worse, porting them three times!. **LF:** How was started the Linux/SGI port? **Miguel:** Ah, when I was working on the Sparc the people from SGI Mexico mentioned to me that there was a chance to start it. Then I got into the negotiations but I took time and time and time, and David Miller went there to write Linux Silicon, he came back and it took one more year until they gave me a Silicon. Basically I like free software like any sane person does. But really the head of the proyect is David Miller, of Linux Sparc. Eddie2 was the mantainer of the port for a long time. Richard Henderson has worked a lot on the C library too. Jacob J... who is as of today the only developer. **LF:** What work did you do on the kernel? I worked on the Sparc, I also worked on the RAID with Ingo Molnar and Gadi Oxman, where Gadi is the guru, I mean Gadi is who should take all the credits. Ingo wrote the faster checksum in the world, he had the original idea of how to implement the RAID correctly. And Gadi is really amazing, he is who make that thing to compete with commercial RAID. My name ended up there, but who really did most of the work on the code were that pair of monsters. **LF:** What are you doing on Gimp? **Miguel:** Nothing. **LF:** But your name shows up on the page for The Gimp **Miguel:** It must be related with Gnome. A pair of micro-patches. What actually happened was one day KDE suddenly showed up, it was a project to make Linux friendly, and at the beginning it was not too good, but it started to gain strength and it got prettier, ... beautifull and stable, no? Then it seemed that KDE was a wonderful thing so I wrote to all my friends of the distributions and adviced them to include KDE. It was then when they made me see the problem of KDE, I didn't pay attention before. KDE depends on a library that is not free, a library that is free only for non-commercial usage. But is not free. And it is not free for a very important reason; free software gives you the right to see the source code, modify it, learn it, use it. But the most important issue is that you can modify it, improve it and fix bugs. Qt comes with a license that specificaly forbids modifications and changes. It comes from a company that sells the product. Therefore and unfortunately KDE is very beatiful, but we you start to yield, for example consider a free OS: Linux. Say you are going to install KDE and now it has a component that is not free. When do you decide to stop adding components that are not free? The system is not free, it has a commercial piece. Then we give a step backwords. We have advanced a great deal since 85 when Stallman started the ideal and suddenly we come to a moment when we give a step back! Are we going to go back here now? Accept strange licenses? **LF:** Was is the reason for Gnome? **Miguel:** There was a lot of discussion. Actually Gnome involved a large number of things. First I learned how Active X works, it is not a bad idea. And then with Federico, we tried to generate a bunch of components a la Active X for Linux. We started on a wrong foot, we thought it wrong and never did anything. Everything was ill-concieved from the beginning. The idea was that several applications tk, gtk could dialog like a system of components. We never implemented it and I forgot the idea. Then I wanted to unify various API's of UNIX. But these are ideas that come and you say "we have to do this" but you never do it. We chose the name of Gnome because it sounded nice for our project. When we saw KDE and the problem it had, we said "No, We have to write one". At the beginning was unusable, it had too many bugs, it requiered too much memory, it had close to cero inertia. That was near June or July. A good day we wrote a proposal, in fact I wrote the proposal and sent it to a bunch of people: Stallman, the RedHat people, the gtk group and the people working on The Gimp. Because what is really interesting is that I designed its own toolkit. Then we wanted to involved that people, use all the momentum that had that project, small compared with KDE. Originally it was going to be called "GNU Desktop Environment, GDE". In the IRC we discused the issue and said "Gnome is an old name that we already have, but it applies here. Lets see what is G, and N....". **LF:** What differentiates Gnome from other window managers, like for example Enlightenment? **Miguel:** Enlightenment is a window manager, that is, it takes care of setting your background, decorating your windows and defining the behavior of the windows, that is all. But it doesn't say what an application is. The applications are of chili and lard. So much of this, and so much of that; a bit of everything, and some mixing. Then the idea with Gnome and KDE is that they are not windows managers, they are interfaces for applications. In fact KDE depends on is windows manager. Now I believe that is not the case anymore. The point here is that Gnome runs with any windows manager. If you like Enlightenment, use it; if you prefer fv, then use fv; or if you like KDE well go ahead. It is worth notting that the guy who designed Enlightement (Rasterman), is part of the Gnome team. In fact he is hired to work on Gnome. RedHat pays him, and RedHat will officially support Gnome. There are zillions of things that are not been used in Linux yet. Then Gnome has several goals, one of them is to provide a friendly desktop. And I beleive that this is the biggest merit of KDE. The KDE team showed that a small group of people in one year can create an incredible desktop, that it can compete with Windows 95. When I saw Windows 95 for the first time I thought "We are lost, we have lost the edge! We completely neglected the interface and the have beatem us up". I doubted we would ever got close to that. And KDE demonstrated the contrary, that it was possible to get it done, and that I could be done by a small team of programmers. Therefore, Gnome mixes those elements, that is, producing a friendly and convinient environment. All the applications use the same toolkit, all use the same libraries, all should look and feel the same, all should be easy to use and all should look attractive. This is the same KDE does, but we want to go beyond, we want to use CORBA. The idea behind CORBA is that, like pipelines which are fantastic for mixing your programs with other programs, in CORBA you can have programs that implement a certain specification, an interface. Say, for example what we are discussing right now is this, your phone list and email list need a little database. So now, What program shall we use? You have a program for mailing, so you have to let it now the mailing list, Right? Usually we have a program for email, book of addresses, HTML editor, etc.. Programs grow like beasts. So the idea is to do everything with small components. You will have a mailer program that will send requests to a addresses mantainer program. It is not a simple command line program, is a full graphical interface. That program provides an interface to a number of people, this is the format for the registers, etc.. So the idea here is that you can even replace the components. If I want a component to handle my little database, yo can replace it by a version of GNOME, a version that will link with the database in your company, or Oracle or with whatever. The important thing is that there is an interface, a well-defined API. This is one of the roles of CORBA in GNOME. The filemanager is the same...editors the same. You can interchange editors as long as you implement the interface. Applications will be able to dialog among themselves through this interface. The debugger is going to be able to talk with any editor and it wont be necessary to write a horrible patch. There are people out there with a database for their phone numbers under emacs. Then we can tell it "listen, give me the data about this fellow"; some people like graphical versions with little icons. But everything is going to interoperate, this is one of the goals that was thought out in previous projects. **Federico:** The next step to that is, applying the components, having a system of documents so that we can take a word-processor, paste to it something you created on a spreadsheet, or perhaps send to it an image you created under Gimp or under any other application, that you can edit it right there. Like OLE in Windows. **LF:** What is the role of Red Hat? **Miguel:** The code the RedHat writes is going to carry Redhat's copyright, the code I write will carry my copyright. But since everything is GPL it doesn't matter. This is the interesting thing about free software. Our goal is that it would be free and RedHat is playing with us under those rules, publishing everything under GPL. Under this circumstances I am not sure what Redhat interference could be, I mean, if they are providing code and tell us "look, we would like the code to do this" and they implement it, great. All the developers have voice and vote. With free software, if at any moment someone doesn't like something, they are free to take it and develop their own version starting from our current code. **LF:** Who is in the project? **Miguel:** We have people like Bruce Perris from Debian, who is in our list of developers writing the interface COA for Gnome. Michael Johnson from Red Hat is working on the configurator of linuxconf, Rasterman is working on images, themes for GNOME. Our guru of themes is gooing to be Rasterman. He is going to use themes for the applications to make them look.... **Federico:** have you seen something from the mac called kaleidoscope? **Miguel:** Rasterman works for Gnome and also his is developing Enlightenment, then he wants Gnome to interoperate with what he is doing. Obviously Enlightenment is going to have many things to look better or to work well with Gnome. By default. It is also going to collaborate with other things, but it is fact that there is a special emphasis on Gnome. There is another window manager named XEWM, one of the hackers from GNOME is working on it also, this is another of the window managers that is going to take a lot of advantage to GNOME. Now there is another big difference between GNOME and KDE, that is in GNOME we do not beleive that C++ is the best language in the world, and Qt in a certain way forces you to use C++. There are bindings for other languages, but as far as I have seen, you must program in C++ if you want to use Qt. Then, we basically believe that C++ is a language of bad taste that happens to have a lot of publicity, but besides that is one of the worse mistakes made in the history of programming languages. We use more C, Objective C and Scheme. Amongst the developers there is who likes C++ and we have some C++ code. But right now the distribution of Gnome has code in Schemem in C, C++ and in Objective C. If anyone wants to work in Ada, go ahead. It botthered me a lot about KDE, that one had to program in that garbage of language. The other thing is that we beleive on using scripts, in other words, having a functionality in the programs that permit you manipulate them. Then we are using Scheme, possibly we will use Perl or Python for other things, but for the moment we are using Scheme in some applications that will let it run faster and let is do more things. This is the basic idea. We are reaching the moment were this thing can be actually used. Gnom is a GNU project supported by Debian and Red Hat. **LF:** When will it be possible to release a stable version? **Miguel:** Well, that is going to depend on how many people help. **LF:** How else is in the project? **Miguel:** Bitch! It is a tribe: George Lebl, Radek Doulik, Alan Cox[1], Tom Tromey, Elliot Lee, Raja Harinath,Eckehard Berns, Changwoo Ryu, Michael K Johnson, Federico Mena, Nathan, Bryant, Horacio Peqa, etc. Debian is providing hard disk and is providing the CVS depository, that is what we use to coordinate the work of all the developers around the world, all the developers have access to this machine. It has a very good connection. If someone proofs he can write good code and is good, we give him account in this machine. Then he can actualize the code. Usually we discuss things, and if the code is fine it goes inside. Alan Cox, wrote the TCP/IP for Linux. He also ported Doom, the one was just released for the public domain to Gnome. It cost him a great deal, but he did it. We will also have GnomeVision.  
---