In case you weren't aware, Linus is on Google+. Here's a recent post:
It's been 22 years since (one of) the original announcement(s) so I wanted to try to come up with some interesting numbers...
But in the end, it's just that single number: 22 years. More than half my life, and things have certainly changed since then.
Now to be fair, today isn't the only birthday: Aug 25, 1991 was the date for that original pre-announcement, but there's a few other relevant dates that may be even more relevant as "birthdays of Linux".
The actual 0.01 code release was September 17. But while it was uploaded to a public site, there was no public announcement of it. So in that sense Oct 5 might be the true "coming out" date – that is when 0.02 was done, announcement and all.
But you know what? You can have cake on any of those three days (or eat it continuously for the whole range). Go wild.
And here's how he ended that reminiscence, cross-posting from the Linux account on Google+:
Hello everybody out there using Linux -
I'm doing a (free) operating system (just a hobby, even if it's big and professional) for 486+ AT clones and just about anything else out there under the sun. This has been brewing since april 1991, and is still not ready. I'd like any feedback on things people like/dislike in Linux 3.11-rc7.
I originally ported bash(1.08) and gcc(1.40), but others have taken over user space and things still seem to work. This implies that I'll get the final 3.11 release within a week, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-)
That's a nice nod to the post that started it all, dated 25 August 1991, at 20:57:08 GMT:
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).
I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-)
Linus ([email protected])
PS. Yes – it's free of any minix code, and it has a multi-threaded fs. It is NOT protable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(.
Of course, Linus did get one thing wrong there: Linux turned out to be highly portable. Here's what he told me back in 1996 about the initial lack of portability:
The reason Linux wasn't really portable at first was not because I conceived portability bad, but because I considered portability to be a non-issue in the sense that I didn't think that there was any interest in it. And I didn't think there was any hardware in it because the PC platform is so good price-performance-wise that making a portable Linux to anything didn't quite seem to make much sense. Especially when most of the other architectures already had perfectly good operating systems. And only in the last few years has that really changed because Linux got so good that it actually made sense even though there were alternatives, and (b) there has definitely been a change in the hardware manufacturers in how they sell stuff.
The first company to approach me on portability was Digital. They wanted to sell the hardware and make the Alpha chip. So they had Digital Unix, which is very expensive, and Windows NT, which is Windows NT. So there were people within Digital who wanted to have another alternative, and I think they gave some hardware to the NetBSD project too, and they gave some hardware to me.
Linus used that hardware for what turned into a major project:
It was difficult but very interesting. Because that was a stage in Linux that I felt, OK, I've done this, what's there [to do]? There's never been a stage where I have nothing to do, but there's been a few stages when I've wondered is there something fundamentally interesting left. So when they offered an Alpha, I thought, hey, this might be it. And the Alpha had a few good points, mainly 64-bits and very radically different architecture from Intel chips. So in one sense the offer was the perfect porting object because it was so different that if I had an Intel port and an Alpha port, then OK, I proved it, it can be ported to just about anything. I spent one year doing mainly porting. Although my main work was spent on email, keeping up with Linux, when I coded I mainly coded for the Alpha.
The end-result was code that was far more platform-independent:
What happened was that I really had to clean up a lot of code, especially in the memory management, because it was very specific to one architecture and I had to really take a completely different approach. I never wanted to have two separate versions, I wanted to have one Linux that worked on both Intel and Alpha and anything else. So I had to abstract away all the hardware dependencies, create a special subdirectory for hardware specific stuff. So it resulted in quite a lot of organisational changes in the kernel.
That made porting to further platforms far easier, and has helped drive the uptake of Linux across an incredible range of platforms, from supercomputers to smartphones to embedded systems - "just about anything else out there under the sun," as Linus puts it. Had Linux remained trapped on the original Intel chipset, it would probably never have become the leading operating system it is today.
As Linus' comments show, porting was never carried out with that aim in mind, and happened in an almost casual way. But then the same can be said about Linux in general, including that first, famously diffident post of 22 years ago.