Linus (rhymes with shyness) Torvalds (author of the Linux kernel, see box) traded e-mails with us for several days in January giving us his views on the future direction of Linux (rhymes with clinics) and his ongoing role in its development.
Linux Journal: Ken Thompson was once asked, if he had the chance to do it
all again, what changes would he make in Unix. He said he
would add an e to the creat system call.
How about you and Linux?
Linus: Well, Considering how well it has turned out, I really can't
say something went wrong: I have done a few design mistakes,
and most often those have required re-writing code (sometimes
only a bit, sometimes large chunks) to correct for them, but
that can't be avoided when you don't really know all the problems
If it's something I have problems with, it's usually the interface
between user-level programs and the kernel: kernel-kernel relations
I can fix easily in one place, but when I notice that the design of
a system call is bad, changing that is rather harder, and mostly
involves adding a new system call which has semantics that are
the superset of the old and then leaving in a compatibility-hack
so that the old calls still work. Ugly, and I avoid it unless it
really has to be done.
Right now I'd actually prefer to change the semantics of the
and write() system calls subtly, but the gains aren't really worth
the trouble.
Linux Journal: The most consistent compliment that Linux receives is its
stability on Intel PC computers. This is particularly true
compared to ``real Unices'' that have been ported to the Intel platform.
What do you see that was done right in Linux that is causing
problems for these other PC Unices?
Linus: There are probably a couple of reasons. One is simply the
design, which is rather simple, and naturally suits the PC
architecture rather well. That makes many things easier. I'd
suspect that the other reason is due to rather stable drivers:
PC hardware is truly horrendous in that there are lots of different
manufacturers, and not all of them do things the same (or even
according to specs).
That results in major problems for anybody who needs to write
a driver that works on different systems, but in the case of
linux this is at least partially solved by reasonably direct
access to a large number of different machines. The development
cycle of linux helps find these hardware problems: with many
small incremental releases, it's much easier to find out exactly
what piece of code breaks/fixes some hardware. Other
distributions (commercial or the BSD 386-project which uses
a different release schedule) have more problems in finding out
why something doesn't work on a few machines even though it seems
to work on all the others.
Linux Journal: Have you heard of any problems running Linux on the Pentium chip?
Do you expect any?
Linus: I know from a number of reports that it works, and that the boot-up
detection routines even identify the chip as a Pentium
("uname -a" will give "i586" with reasonably new kls,
as I ignore Intel guidelines about the name). The problems are not
likely to occur due to the actual processor itself, as much
as with the surrounding hardware: with a Pentium chip,
manufacturers are much more likely to use more exotic
hardware controllers for better performance, and the
drivers for them all won't necessarily exist for linux yet.
So I've had a few reports of a Pentium PCI machine working
fine, but that the kernel then doesn't recognize the SCSI
hard disk, for example.
From a performance viewpoint, the current gcc compiler isn't
able to do Pentium-specific optimizations, so sadly linux won't
be able to take full advantage of the processor right now. I don't
know when gcc will have Pentium-optimization support, but I expect
it will come eventually (most of the logic for it should already
be there, as gcc can already handle similar optimization problems
for other complex processors).
One interesting thing is that the "bogo-mips" loop I use to
calibrate a kernel timing loop seems to actually be slower on
a Pentium than on an i486 at the same clock frequency.
The real-world performance is probably better despite that
(the timing loop is just a decrement operation followed by a
conditional jump: the Pentium won't be able to do any super
scalar execution optimizations).
Linux Journal: With the end of the road for Intel's 80XXX series chips in
sight (although at least a few years away), what chip or
hardware platform would you like to see Linux ported to?
Linus: The Amiga 680x0 (x>=3, MMU required) port is already underway
and reportedly mostly functional already. I haven't been in
any close contact with the developers, as they seem to know
what they are doing, but I understand they track the PC versions
rather closely, and have most of the features working.
I'd expect something truly functional by the end of this year,
even though the installed machine base is much smaller.
As to other ports: I'd really enjoy some port to newer and
more exotic hardware like the DEC Alpha chips or the PowerPC,
but as far as I know nobody is really working on it.
The main problem with non-i386 ports is simply lack of momentum:
in order to get this kind of port going, you'd need hacker-type
people with access to such hardware with "nothing better" to do
on it. DEC or IBM has yet to show enough interest that they'd
donate hardware and documentation to this worthwhile cause.
Linux Journal: What aspects of Linux are you taking responsibility
for on an on-going basis?
Linus: Everything that directly concerns the kernel: some of it I can't
actually fix myself (mostly drivers for hardware I don't own and
have no idea about), but in that case I still want to know about
the problems and try to act as a "router" to the person who actually
handles that piece of code. The areas I consider especially
"mine" are memory management, the VFS layer and the "kernel proper"
(scheduling, interrupt handling etc). Generally things that make up
the very heart of the kernel, and on top of which all the other
stuff has to go.
Linux Journal: Do you see yourself earning a living from your
work in Linux in future?
Linus: Well, I do hope and expect to be able to find a job
much more easily due to linux, so yes, indirectly at least
I hope to be able to make a living off this, even though
the work itself might be completely unrelated. As to whether
it would actually concern linux itself in some way, I don't know
Linux Journal: The use of Linux is growing exponentially
around the world. However, unlike commercial products,
there is no central registry for Linux users.
What is your "best guess" of the number of machines ruing
Linux worldwide today and what would you base an estimate on.
Linus: I actually have no good idea at all: I haven't
really followed either the CD-ROM sales or any ftp statistics,
so it's rather hard to say. I guesstimate a user base of about
50,000 active users: that may be way off-base, but it doesn't
sound too unlikely. The c.o.l. newsgroup had about 80,000
readers according to the network statistics back before the
split (and I haven't looked at the statistics since), and
I saw a number like 10,000 CD-ROMs sold somewhere.
Not all of those are active users, I'm sue, but that
would put some kind of lower limit on the number.
Linux Journal: Hindsight being 20/20, do you occasionally
wish you had patented, or otherwise retained rights to Linux?
Linus: Definitely not. Even with 20/20 hindsight, I consider
the linux copyright to be one of the very best design
decisions I ever did, along with accepting code that
was copyrighted by other holders (under the same
copyright conditions, of course). I'm not fanatic about
the GPL, but in the case of linux it has certainly worked
out well enough. As to patents, I consider software patents
a patently bad idea in the first place, and even if I didn't,
I would abhor the paperwork needed. Getting a trade-mark on
the name "linux" might be a good idea, and there was some talk
about that, but nobody really found the thing important
enough to bother about (especially as it does require
both some funds and work).
Linux Journal: What is your field of study, and what do
you plan to specialize in upon graduation?
Linus: I'm studying mostly operating systems (surprise,
surprise), and compiler design: rather low-level stuff mostly.
I expect I'll expand that to communications and distributed
systems for obvious reasons, but I haven't really decided
on anything yet. So far, my "field" has been any courses that
I find interesting, and I hope I won't have to specialize
any more than that in the future either.
Linux Journal: Linux is benefiting from a worldwide development
effort. The number and frequency of new releases of Linux, and
drivers and utilities are amazing to anyone familiar with
traditional UNIX development cycles. This seems to be giving
Linux a huge "competitive advantage" over alternate
UNIX-on-the-pc products.
What do you see as the future of Linux?
Linus: I rather expect it to remain reasonably close to
what it looks like now: the releases may become a bit less
frequent as it all stabilizes, but that might just mean that
I'll make my snapshots weekly instead of daily as I do now
during intense development, and that the "real" releases will
happen a couple of times a year instead of monthly or bi-monthly
as now.
Similarly, there will probably remain several different "package
releases": some of them will be more or less commercial (currently
the Yggdrasil CD-ROM, for example, or the various disk copying
services), while others will continue to be mostly electronically
distributed by ftp.
Linux Journal: What would you LIKE to see for the future of Linux?
Linus: Related to the question above, I do hope to see one
change: support and documentation. Some of this has actually
already happened or is happening now, but there is still
room for growth. I know of a few book projects (one of
which went into print a couple of days ago), and a few
support companies, and I hope that will still grow.
Then there are various interesting projects going on that I'd be very
interested to see:
Windows emulation (being worked on, and the kernel support is already
there);
i386 SysV binary compatibility (already in early stages of testing)
etc.;
As well as the porting projects to various different hardware
platforms, of course.
I also have various general (and vague) plans about actual
kernel development, and some specifics I want to have implemented
in the reasonably near future (I think I'll work mostly on
memory management and related areas this spring, for example).
Mostly, I just hope to have a stable and enjoyable platform
Linux Journal: Also, would you have a photo of yourself
we could use to accompany the article? This is by no means
required, but a huge number of Linux users are
very curious about who you are, why you did
Linux, etc... you know, all the human interest
side to the Linux story.
Linus: I'm `` camera-shy'', so I have no good
photos for this purpose, which has resulted
in some rather weird photos being used in
some places. A magazine in Holland used one
of the gifs that were put out long ago
(bad quality, and very much done in jest:
I drink beer in most of them, including
the one they used), and one Finnish
magazine used a photo from a party I
was at which also had lots of beer-cans
in it.. I guess I should find some rather
more presentable photos somewhere. I'll see.
Linux Journal: We saw a photo that was
distributed over the net. One that has
you smiling, with a beer bottle in front
subtitled `Linus Torvalds - creator of Linux'--
In fact, for all the `official' format for
photos requires a tie and at least a
semi-serious pose, I think that this was
a VERY good photo, as it showed you as
a happy, friendly human being.
Linus: It's another of the `party photos',
although the party was a much smaller and
more informal one. I don't know who has
the originals anymore, so I'm unlikely to
find it in time with most of the concerned
people still being somewhere else as
teaching at the university hasn't started
yet. What the magazine from Holland did
was actually to have a screen-shot of
linux running X, and have the gif-picture
in an xv window (with a few other windows
like xload to give it some more lf);
that way the quality of the picture didn't
matter much, and it also looked like a
clever idea. You could use some similar
trick. I don't mind looking like a
human being instead of a tie+shirt robot,
so I don't mind the picture even though
it was all done mostly in jest.
Linux Journal: We'd like to send you
a complimentary subscription(s) to
Linux Journal.
Linus: I'd like a copy, please.
Linux Journal: Also, re your response
on the `other platforms' question,
if you can find someone willing to do
the work, we should be able to help
find someone at IBM or HP (maybe even
DEC, but I doubt SUN) who would be able
to donate/loan some hardware.
Linus: It would be fun, but as I
can't make any promises and would
need lots of technical documentation
as well (and not under any non-disclosure),
this is probably not really something
companies like to do.
Linux Journal: Where did you learn
to write English this well?
Linus: I read more English than
either Swedish (my mother tongue)
or Finnish (which is the majority
language in Finland, of course),
so I while I'm not completely
comfortable actually speaking
the language (partly due to
pronunciation), I don't have
any problems reading, writing
or indeed thinking in English.
The reason for reading English
is simply that there are more
interesting books available in
English, and that they are usually
cheaper even over here (larger
printings, no translation costs, etc.).
Besides, it's often the original
language, so even when the book
is available as a translation,
I usually prefer to read it in English.
This interview was conducted by Robert Young,
Publisher of Linux Journal, NY Unix.