Linus Torvalds Interview

This is a transcript of Hiroo Yamagata's interview with Linus Torvalds. Hiroo Yamagata kindly granted permission to to display it here. Background information on this interview is available here. Hirro is a member of the Tokyo Linux Users Group.


The Pragmatist of Free Software:
Linus Torvalds Interview

by Hiroo Yamagata

When several years ago, a student in Finland started writing an OS kernel for the purpose of his own study, no one even remotely imagined that it would become this huge Software movement that would embrace millions of users world wide. This was of course the free software Linux, and its author Linus Torvalds.

Although definitely being one of the major figures in the free software movement, Linus is not trying to make the world a better place through free software (although he just might). As you can see in the following interview, he doesn't really care about the clear distinction between "commercial" software and "proprietary" software, something that RMS is really sensitive about. He even encourages the development of proprietary software that runs on Linux, something that RMS would probably frown upon.

This looseness or openness, however, is a major source of power for Linux and its popularity. Don't set any rigid frameworks or direction, let things happen and take in what's good. He's not impressed with sheer technological trends and fads (his resistance to the use of microkernel has been really consistent from the beginning of Linux), but if someone else tries to do it (like there are groups that are working on MkLinux, a Linux with the Mach microkernel), hey, what's the big deal, it's OK, he doesn't object. Commercial and Proprietary software, yeah, it'll be nice if we had the same thing in free software, but if people want it, let them be. In general, what people does with Linux, its their problem, better used badly than not being used at all.

This freedom (and the availability of various packaged distributions) makes it oodles easier to adopt and use Linux. It's a different sort of "freedom" than that of RMS, although they have a lot in common. However, this pragmatic freedom of Linux have been really essential in expanding the horizon for free software. How will it develop, what would become of it? If you're even remotely interested in what this "free software" thing can achieve, this is one movement (and person) that you'd definitely want to keep an eye on for at least the next five years.

HY: You have become one of the champions of free software. However, unlike Richard Stallman, we don't see you commenting much on what free software should be and what it means to all of us. Are you interested in these "promote free software" aspects at all, or are you more interested in the software itself?

Linus: I'm generally a very pragmatic person: that which works, works. When it comes to software, I _much_ prefer free software, because I have very seldom seen a program that has worked well enough for my needs, and having sources available can be a life-saver.

So in that sense I am an avid promoter of free software, and GPL'd stuff in particular (because once it's GPL'd I _know_ it's going to stay free, so I don't have to worry about future releases).

However, that doesn't mean that I'm opposed to commercial software. Commercial software development has some advantages too - the money-making aspects introduces some new incentives that aren't there for most free software. And those incentives often make for a more polished product.

For example, I've been very happy indeed with the commercial Linux CD-ROM vendors linux Red Hat. What commercialism has brought into Linux has been the incentive to make a good distribution that is easy to use and that has all the packaging issues worked out - essentially everything is easily available.

Before the commercial ventures, Linux tended to be rather hard to set up, because most of the developers were motivated mainly by their own interests, which very seldom include issues like ease-of-use. And with Linux, commercialism doesn't exclude the availability of sources, so you get the best of both worlds.

Then there is software that is commercial but doesn't come with sources (the "traditional" commercial software as opposed to a Red Hat Linux distribution). And I don't try to preach against that either: I hate the fact that I (and others) can't fix bugs in them, but sometimes that kind of software is the way to go.

HY: When and why did you decide to place Linux under GPL? Did you ever regret not making it into a shareware?

Linus: I've never regretted not making Linux shareware: I really don't like the "pay for use" binary shareware programs that are so common in the MS-DOS world.

In my opinion, shareware tends to combine the worst of commercial software (no sources) with the worst of free software (no finishing touches). I simply do not believe in the shareware market at all.

I actually originally released Linux with complete sources under a non-GPL copyright that was actually much more restrictive than the GPL: it required that all sources always be available, and it also didn't allow any money to be exchanged for Linux at all (ie not only did I not try to make money off it myself, but I also forbid anybody else to do so).

That original copyright was mainly a reaction against the operating system I had been trying to use before Linux: "Minix". Minix was meant to be a teaching operating system, but it had been to limited and in my opinion too expensive for that. It was also hard to get hold of.

So when I made Linux, I wanted it to be easily available over ftp with full sources, and I did _not_ want it to be too expensive for anybody.

I changed the copyright to the GPL within roughly half a year: it quickly became evident that my original copyright was so restrictive that it prohibited some entirely valid uses (disk copying services etc - this was before CD-ROM's became really popular). And while I was nervous about the GPL at first, I also wanted to show my appreciation to the gcc C compiler that Linux depended on, which was obviously GPL'd.

Making Linux GPL'd was definitely the best thing I ever did.

HY: You obviously work on Linux because you enjoy it (in one way or another). Now, if someone paid you to concentrate on Linux development, do you think things would have been different? Does this have anything to do with your choice of the current job? I understand that many people were surprised that you didn't go to a firm that directly deals with Linux.

Linus: I actually didn't want to work for a commercial Linux venture exactly because I didn't want to get pressurized into doing something I didn't want to do.

Also, I actually wanted to have my work not be 100% Linux-oriented anyway, because I was worried that I'd get bored with Linux if that was all I ever did. So the work here at Transmeta was pretty much perfect for me: doing something very interesting that is not Linux-related, while at the same time allowing me to work on Linux too, and with no strings attached when it comes to Linux (so my boss can't ask me to do something to Linux that I wouldn't want to do).

HY: What's your views on Richard Stallman's idea of "free ware"? In your lecture at MIT several years ago, you didn't sound like you were opposed to proprietary software. Are you? What are better off as freeware, and what are better off as proprietary software?

Linus: I'm not as black and white as rms: I tend to think that people can do whatever they want to, but obviously personally I prefer to use free software. And the reason I prefer free software is not actually anything religious or anything like that: it's just that I have a lot of different machines, and I want to be able to work on them all. Having free software means that I can compile it both on my alphas and my PC's.

On the other hand I tend to think that some things work better as commercial software, mainly because a lot of the program is that "final polish" that commercial software is so good at.

For example, user interfaces are _usually_ better in commercial software. I'm not saying that this is always true, but in many cases the user interface to a program is the most important part for a commercial company: whether the programs works correctly or not seems to be secondary (as shown by the many buggy Microsoft programs - not that MS is nearly the only offender).

So things like Word Processors _tend_ to be better when they are commercial, because in a word processor the most important part really is the user interface.

At the same time free software has been very successful for projects that are technically oriented, and where the most important part is the technical side. This obviously includes the Linux kernel, but also things like the GNU C compiler and various programming tools.

HY: We have seen many distributions of Linux that allows users to install Linux without knowing what's under the hood. While this has brought in tremendous new users to Linux, there are people who claim that this undermines the spirit of freeware because people are never forced to look under the hood and understand its workings. Is this a concern for you?

Linus: No, I think this is only for the best. I don't think everybody should be interested in how an operating system works: it happens to be what _I_ am interested in, but I also think that any program is only as good as it is useful.

So a useless program cannot be good, regardless of _how_ well it is implemented. The fact that there are lots of Linux users who don't care how the kernel works but only want to use it is not only a tribute to how good Linux is, but it also brings up issues that I would never have thought of otherwise.

Those users tend to do different things from what I do, so their needs are different. And in many cases those differences have shown something that was missing or badly done in Linux. So even though these users aren't interested in how Linux works, they have been instrumental in making it better.

HY: About the GNU/Linux argument; have you talked with Richard Stallman about this?

Linus: rms asked me if I minded the name before starting to use it, and I said "go ahead". I didn't think it would explode into the large discussion it resulted in, and I also thought that rms would only use it for the specific release of Linux that the FSF was working on rather than "every" Linux system.

I never felt that the naming issue was all that important, but I was obviously wrong judging by how many people felt very strongly about it. So these days I just tell people to call it just plain "Linux" and nothing more.

HY: (I know you've been asked this question a million times, but...) Why did Linux become such a big success? Some people say it's you, some people say it's just a matter of good timing and a lot of luck. What's your opinion?

Linus: There are lots of reasons. Good timing, lots of luck are certainly two obvious ones. But at the same time I also like to think that I've been a good manager (and obviously a good programmer), and that that fact has also been very instrumental in making Linux a successful product.

I also think that the Linux development model in general is a very good model: Linux tends to have fewer rules than other developments, and anybody can chip in doing whatever they want. I act as a general "filter" for all the patches, but other than that it's a very free development model.

HY: Now that Linux has become so big, do you feel a great pressure about keeping it in "the right course"? What is the biggest concern that you have for the future of Linux?

Linus: I've always felt pressure about keeping Linux "right", but they have always been technical pressures, and as such I haven't worried too much about them. The good thing with technical pressures is that technical questions always have a good answer - it's only non-technical questions that sometimes don't have an answer at all. So technical concerns tend to eventually find a solution as long as there are good people working on them. And Linux has the very best.

So I'm not really worried about the future of Linux - technically I think Linux is going to only become better and better, and the non-technical side I don't personally worry all that much about.

HY: There are always various advocacy debates about which is better/best, Linux or FreeBSD or NetBSD. What's your stance? It's often argued that Linux isn't inherently better than any other OS. Do you feel the same way? Have you looked at HURD? What do you think about it?

Linus: I don't think Linux is _inherently_ better than FreeBSD or NetBSD. I just think that Linux is much more successful, partly because of better management, in my opinion. And because Linux has been more successful, there have been more people working on it, and it has developed a lot faster.

There are also a few technical advantages going for Linux: it's a clean re-implementation that doesn't have any historical baggage, and the fact that there is one person who everybody agrees is in charge (me) allows me to do more radical decisions than most other projects can allow.

For example, I can single-handedly decide that something is badly done, and re-do it completely even if it breaks lots of old code. It takes a while to recover from those kinds of decisions, but it makes for a better end result: if something is broken it gets fixed faster.

As to Hurd, I have to say that I'm not very convinced about the approach. I personally tend to think that Mach, the microkernel the Hurd is based on, is not only bloated and slow, but also much too complex.

I think the Hurd tried to be the "perfect" operating system, and they chewed off more than they could handle. It tries to be too clever, too different, too radical. It doesn't try to be _practical_, which is the main goal with Linux.

HY: Do you think of these other PC-Unix systems as rivals, or more of a colleague? Do you often look at them to see what can be incorporated into Linux, or do they never bother you at all?

Linus: I very seldom worry about other systems. I concentrate pretty fully on just making Linux the best OS I can, and while that sometimes involves getting ideas from other systems, that is not actually a very large part (and when I want to get new and interesting ideas I usually turn to more radical systems like Plan-9 or Inferno, and then I try to decide which of those ideas are really worth it).

HY: Do you consider yourself (or Linux) as a threat to Microsoft? Do you try to be one? Or do you see Linux as occupying a separate niche from Windows?

Linus: I don't try to be a threat to MicroSoft, mainly because I don't really see MS as competition. Especially not Windows - the goals of Linux and Windows are simply so different.

I used to be interested in Windows NT, but the more I see of it the more it looks like traditional Windows with a stabler kernel. I don't find anything technically interesting there. In my opinion MS is a lot better at making money than it is at making good operating systems.

HY: In the MIT lecture, you mentioned that Linux needs more end-user application (and that you didn't mean gcc). Since then, we've seen many office suites for Linux; what other area of end-user applications would you like to see for Linux?

Linus: There still isn't enough choice in the desktop application area, and the applications are still not easy enough to find. I agree with you that a _lot_ has changed for the better, and in general I'm very happy indeed with the state of Linux software right now. It just needs more of it, and it needs to be more easily available.

HY: What's your major area of concern in Linux development? What are the major "things to do" for Linux in Kernel 2.2-2.3? Any larger targets in store for 3.0?

Linus: Right now I'm starting to calm down development for the 2.2 freeze, and all the major things are done (but need to be debugged and polished up a bit). The major improvements are some performance improvements in various areas, and a much improved SMP model. Linux-2.2 will also support a lot more architectures out of the box (2.0 was intel and alpha only, 2.2 will add Sparc, m68k, PowerPC, MIPS etc).

The targets for Linux-3.0 are still fuzzy - I'm taking things as they appear. Likely milestones are real-time and maybe some clustering capabilities.

HY: Linux is a cooperative effort of many people; so how much of the kernel is purely your handiwork? Do you spend more time on coordinating various contributions from world wide, or actually writing the code yourself?

Linus: I spend more time co-ordinating than writing: there are times when I spend a week or two only writing code, but on the whole there's a lot more email-reading and co-ordination going on than code writing.

There isn't much of the kernel that is _purely_ my handiwork, but a lot of it I consider to be "mine", in that I've done all the major designs and I am the main maintainer of it still. That tends to be the really basic services like memory management, common filesystem routines, process handling etc.

HY: Do you ever feel that the Linux project is getting too big to manage by yourself? Do you think that day will ever come?

Linus: Not technically, no. I've been very successful in delegating off any work that I cannot or do not want to handle, which has allowed me to keep on managing the basic kernel and set down the milestones and generally deciding on the basic picture of the kernel.

But the "Linux project" as a whole is already much larger than anything I could manage, and it is only going to grow. That's why there are companies doing Linux support, organizations doing maintenance and development, and individuals all over the world working on their own projects within the Linux network.

HY: The Linux community has grown at a surprising speed with amazingly little confusion and trouble. Do you have any future images or visions for the Linux community in general (like the ones that MS and Apple love to make and never gets anywhere)?

Linus: I try to avoid long-range plans and visions - that way I can more easily deal with anything new that comes up without having pre-conceptions of _how_ I should deal with it. My only long-range plan has been and still is just the very general plan of making Linux better.

I know that doesn't sound all that exciting, but it has actually been very exciting, with so much new stuff happening that I've never been bored with it all.

HY: Has being in Finland have any positive or negative effect on developing Linux? I've read somewhere that it's too cold in Helsinki to do anything else than stay indoors and write code; any truth in this? Was there a strong hacker community in Helsinki?

Linus: Helsinki isn't all that bad as the above makes it seem. It's a very nice city, and it's cold really only in wintertime.

One major advantage of being from Finland was the very high level of education (and it was pretty much free, so I didn't have to worry about economic issues when getting an education). And the fact that Finland is very high-tech - I think Finland is number one in the world when it comes to the number of internet accesses per person.

So doing development like Linux actually worked very well indeed in Finland.

HY: How do you like the United States so far?

Linus: I like the weather a lot - Helsinki may not be as cold as you make it out to be, but California is still a lot nicer. I don't remember the last time I couldn't walk around in shorts all day..

The other thing I like about living here now is that while Finland was very high-tech, Finnish companies tend to be very traditional, and not taking many risks and doing the really interesting stuff. Silicon Valley is completely different: people here really live on the edge and there are lots of very technically interesting projects here.

So I definitely enjoy my new life.

HY: I read the WIRED article; now, should we REALLY regard your daughter as a "threat" to the further development of Linux?

Linus: No, that was more of a joke than anything else. Although the time when the interview happened (just two days after the birth), I didn't really know how it would impact Linux development.

As it turned out, Patricia has been a very troublefree child, and I've had a lot of fun with her. And she's definitely not a threat to Linux.

Inform

Download

Communicate

Deploy

Develop

Explore