Way back in the day, I was chatting with Tom Miller, one of the NT filesystem developers – he and Gary Kimura were the guys who designed and built NTFS.
At some point, the conversation drifted around to our motivations for working on NT, and Tom made a comment that’s stuck with me for the 15 years since he made it.
“I work on NT because it’s an opportunity to work on the last new PC operating system to be written in my lifetime.”
It’s true that many of the low level concepts embodied in NT originated in the operating systems that Dave Cutler and the core NT team developed when they were at DEC, but the entire NT operating system was written from the ground up – with the exception of the command interpreter, much of the code in USER, the TCP/IP stack (licensed from Spider systems) and a couple of the networking utilities, every bit of code in NT 3.1 was brand spanking new. And there were plans in place to replace the TCP/IP stack with an in-house TCP/IP stack (delivered with NT 3.5), so even that was written from the bottom up.
When I relate Toms comment to others, they invariably respond “But what about [Linux|OSX|Be]”. Taken in turn:
Linux was started in 1991, after the fact, but it’s not a complete OS – Linux is the kernel, but the other parts of the OS date from other projects started long before Linux was started. The kernel is new, but the entire OS isn’t – all the user mode components come from previous operating systems, as does the networking stack.
OSX is based on FreeBSD, which was in turn based on 386BSD – large parts of the OS have been reengineered, but again, it wasn’t a bottom-up attempt to write an entire OS.
Be’s OS might have qualified as a new OS, since it was written from the bottom up, but unfortunately it didn’t succeed in the marketplace.
There have been a number of original OS’s built for various small devices since then (Palm, Symbian, WinCE, etc), but none for PC’s.
In reality, this isn’t really surprising, it takes a HUGE amount of effort to launch a complete operating system – hundreds of millions of dollars just in direct development costs. I still remember when we had the first big scheduling meeting when we laid out the list of things that we had to have for NT – many of the developers in the room were aghast at the number of components that simply HAD to be present to be considered a complete operating system: 16 bit application compatibility (which was a real issue for our non x86 platforms), printer drivers, video drivers, printing UI, multimedia hardware support, networking support, filesystem utilities, the list went on and on.
Nowadays, the list is even longer – for instance, back in 1989 when that scheduling meeting happened, you didn’t need a web browser, because the web hadn’t been invented yet (the first web page was written in 1990), but today, clearly you’d have had to have a web browser on the list. Similarly, today you need to have camera support, digital media player support, instant messenger support, etc.
My suspicion is that Tom’s statement will continue to hold true – the amount of effort required to build an entire operating system from the bottom up is daunting, and it’s unlikely that anyone is likely to embark on such an effort in the foreseeable future.