Oral History of Linus Torvalds
CHM Ref: X4147.2008 © 2008 Computer History Museum Page 18 of 41
out slow and on a very small scale. But it was a very natural progression. Mostly just
people said, hey,
sometimes they said this is wrong, right, and sent a patch to fix it. More often they just said this is wrong
and didn't send a patch, but they at least told me why it was wrong, which is almost equally useful. I
mean, especially back when it was so small, just pointing out bugs was-- or quite often it was things I had
literally misunderstood, right, so…
Booch: Were these people all across the world, or was it a smaller group? When did it start expanding?
Torvalds: It was never a close-knit group just because that wasn't how I had worked at it. Like, I had not
worked with people at the university. So there were no face-to-face meetings. There never has been,
really, from day one. We meet face-to-face sometimes over beers, but not for work. Right? I mean, the
early feedback tracked computer use pretty closely, and Internet use, obviously. So it was all universities
pretty much. All universities and a lot of-- even from the very beginning half of it was the U.S. And
Finland did up getting fairly well represented not just for me, but because, I mean, Finland had fairly
strong Internet use. But I think the East Coast in the U.S. was probably the best represented.
Booch: Any individuals or universities that come to mind or that are particularly passionate about this?
Torvalds: MIT seemed to. Well, it's hard to tell. Like one of the first people to send me a patch was
from MIT. So maybe I just think MIT was unusually active for that reason. I haven't done any real
statistics. But I think I kind of blamed it on the fact the West Coast had BSD. Right? The East Coast
didn't have-- well, they had BSD but it wasn't something they had bought into as emotionally. So I think
that may be one of the reasons why it was-- why I think it was MIT just because when you look at
universities, looking at computer science and operating systems in the U.S. or in the world, it was like
Berkley, and MIT and probably, I mean, other places too. But in Berkley they wouldn't bother with some
small unknown start-up OS. They had their own.
Booch: Finnish guy. Which it just occurred to me, the original 10,000 line release, does that exist
someplace?
Torvalds: It still exists as source code. We've lost a lot of the intermediate. So the first release I called
0.01 because it clearly was not 1.0 material. Right? I think we've lost 0.02, because I found a bug in that
one so quickly that I released 0.03 like within two or three days. And back then 0.02 had no historical
value to me, so I literally deleted it in order to not have people look at this horrible mistake I made, right,
which is sad now. But at the time it seemed a very natural thing to do. And then our versioning system
was always a bit flakey. I mixed numbers, with letters, with magical characters. I think I had a like 0.95C-
plus at some point kind of thing. So we don't really have all of it, but we do have a lot of them.
Booch:
And the we being…
Torvalds: Well, I just say we because it's obviously not been me personally who'd been involved. So it's
the general kernel programming community.
Booch: We ought to make sure that it's kept in the [Computer History] Museum. One of the things the
Museum has is a collections program for software. We're trying to collect the original source code to
interesting things. So we have stuff like the original source code to MacPaint of all things. And I
Oral History of Linus Torvalds
CHM Ref: X4147.2008 © 2008 Computer History Museum Page 19 of 41
discovered that IBM's lost the source code to OS/360, so, oh well. When did you finally start moving over
to the tens, the point something, the .1s, the .2s.
Torvalds: The .1 actually came fairly quickly because it turns out that 3.03, which I fixed the stupid bug,
was a huge advance. I mean, the stupid bug had to really-- I mean, I was ashamed of it for a reason.
Right?
Booch: What was the bug?
Torvalds: Back then the big deal was still the file system accesses. And the buffer cache had-- I forget
what the exact detail was. But it had a, I think it was a reference count leak, which meant that after-- if
you tried to compile something big and some file or block on the disc got looked at many times in
succession, eventually the count would overflow, and the thing would be thrown away, and it would just
use data and crash. And this is what meant that it could not actually compile itself under itself. So 0.03
was the first version that was self-hosting in that sense, that hey, you can actually compile-- maybe it
was-- maybe it could compile itself, but it couldn't compile the compiler. Something like this. So C was a
huge step conceptually forward, and it was so big that it actually ended up being quite useful compared to
MINIX. I mean, not at the same level, but they were definitely approached. So at that point I said, "Okay,
let's jump from 0.03 to 0.1." Actually I called it 0.10 just to confuse everybody. And that actually was the
first release where people started to really-- I mean some people started to use it. I don't think anybody
had actually ever used the previous ones. Maybe they had tried to boot them up, but they had not
actually done anything with them.
Booch:
Had anyone ported it beyond the ‘386 around that time or is that a little later?
Torvalds: No. No, and it was really--
I mean even on ‘386 you literally had to compile
in the constants
for your hard disk. You had to say how many cylinders and tracks your hard disk had. Well, I mean, it
was one of those things where hey, I want to get it working, so I'll just hard code my own hardware on it.
Booch: Were you on Andrew'
s radar at this time with MINIX, or did they sort of view it as…
Torvalds: At 0.1, or 0.10 I think it started to be on that radar. Because now people are actually starting
to use it. And part of the problem is, it was-- we didn't have our own mailing lists, we didn't have our own
newsgroups. So any discussion about this was all on the MINIX lists, which was-- I mean that was a bit
rude, let's face it. So 0.10 was probably early in November or something like that. And
eventually improved pretty dramatically. So I made a Christmas release, which might have been 0.12
where I actually had just added paging to disk. And that was a conceptually huge step because it used to
just read the whole binary into memory with a read, and didn't actually use paging at all. So paging to
disk was not just technically interesting, but it was also the first feature that MINIX really even had. So
psychologically that was a big step. And I think I did paint in the swap space, too, so you could actually,
even if you only had 2 MB of RAM, and some people had just 2 MB of RAM, you could actually compile
stuff with Linux when you couldn't compile stuff with MINIX, at least not with GCC [Gnu Complier
Collection], because GCC was a pig and needed more than two megs of RAM. These days, of course, it
needs 150 megs of RAM or something, but that's a different thing.