CARVIEW |
August 23, 2004
Showstopper!
A friend of mine recently returned the book Showstopper! after an extended loan. If you haven't heard of this book, allow me to quote the Amazon.com editorial summary:
Showstopper! is a vivid account of the creation of Microsoft Windows NT, perhaps the most complex software project ever undertaken. It is also a portrait of David Cutler, NT's brilliant and, at times, brutally aggressive chief architect.Cutler surely ranks as one of the most impressive software engineers the field has ever produced. After leading the team that created the VMS operating system for Digital's VAX computer line--an accomplishment that most would regard as a lifetime achievement--he went on to conceive and lead the grueling multi-year project that ultimately produced Windows NT. Both admired and feared by his team, Cutler would let nothing stand in the way of realizing his design and often clashed with his programmers, senior Microsoft management, and even Gates himself.
I hadn't looked at this book since I originally read it in 1996, and I found myself casually skimming through it, eventually re-reading the entire thing. It's a critical part of Microsoft's history. Think about where Microsoft would be if the NT project, which began way back in 1988, had failed. Can you imagine running some variant of Windows 95 today?
It's also interesting to note that nobody is writing new operating systems any more. The world has devolved into UNIX and NT camps exclusively. Without NT, I think we'd all be running UNIX at this point, for better or worse. It certainly happened to Apple; their next-generation Copland OS never even got off the ground. And now they're using OS X which is based on Unix. There are some uncanny observations in the book that foreshadow this divide:
Besides, NT would still meet the goals closest to Cutler's heart: portability, reliability, and the ability to provide an alternative to Unix, the splintered high-end operating program.The last goal was crucial to Cutler. "Unix is like Cutler's lifelong foe," said one team member who'd worked with Cutler for nearly two decades. "It's like his Moriarty [Sherlock Holmes's nemesis]. He thinks Unix is a junk operating system designed by a committee of Ph.D.s. There's never been one mind behind the whole thing, and it shows, so he's always been out to get Unix. But this is the first time he's had the chance.
In many ways, the story of Windows NT is the story of Dave Cutler: he comes across as the Ted Nugent anti-hero of software architects. There are some very amusing anecdotes in the book about his gonzo management style:
In truth, nobody worried about Rashid's etiquette. Of all people, Cutler deserved indelicate treatment. Other Microsoft leaders viewed him as a bully. One senior executive usually responded to a Cutler complaint with the succint statement, "Fuck Dave." When asked why, the executive excused his boorishnes with the reply, "Cutler tells me to fuck off all the time."
Cutler keeps an incredibly low profile today, which is strange for an architect of his stature. You won't find many interviews or articles about him. In fact, he still works at Microsoft today, and he was a key reason the 64-bit version of Windows XP even exists in the face of lackluster Intel support for 64-bit x86 extensions.
There are some interesting themes in the book that emerged after a second reading:
- Eating your own dogfood. I've long been a proponent of this technique. Dogfooding keeps you honest. NT development was perhaps the ultimate dogfood scenario: developing a new OS using the current build of that OS.
- The importance of R&D;. By the time NT was truly viable on the desktop (Windows 2000), it was ten years after the initial 1989 design spec. This speaks volumes about strategic direction and R&D;: if large corporations aren't actively planning ten years out, they're probably not going to last very long. Nathan Myrhvold presents a document to Bill Gates on page 31 that outlines the risk of Unix, portable code, and RISC-- all "DOS killers"-- that was absolutely prophetic in hindsight.
- Process vs. People. It's shocking how little formal process was involved in the development of NT. Microsoft didn't really manage much at all: they just chose to build the company with the smartest people they could find and let them figure it out. This may sound surprising, but it clearly worked for NT, a project of almost unimaginable complexity. More supporting data on this can be found in McConnell's Quantifying Soft Factors editorial.
- The importance of senior architectural oversight. Cutler goes to great lengths to prevent people from optimizing for x86 in the early development of NT, despite the intense pressure to do so for performance reasons. He intuitively knew that sacrificing portability this early would cripple the future design of the OS. Although, ironically, there's nothing left but x86-- the Alpha, Mips, PPC versions of NT were all discontinued due to lack of market demand-- the NT kernel has evolved and survived, and now lives on the desktops of millions of everyday users, not just "power users".
- If it sounds like a bad idea, it probably is. eg, Cairo. This was supposed to be Jim Allchin's "vision" for next version of NT, what ultimately became NT 4.0. What the hell was Microsoft thinking? If you can't explain what you plan to do in practical, meaningful terms-- you're probably full of crap. I can certainly empathize with Dave's skepticism about Cairo, and in retrospect, he was correct. Cairo never went anywhere.
The end of a project was always a difficult time for him. He always pushed to outdo himself, never lingering for long over his achievements and eschewing any examination of his motives and psychology. "My motivation is I like to do this stuff. I just like to do this stuff," he said. "I like to get [my code] done and see it work." Rather than monumental, his concept was Sisyphean. He dared not speculate about the benefit of his labors for society. Nor did he concern himself with his place in the history of technology. He only looked forward, abolishing the past as he went on. "This isn't the end," he said. "Ten years from now we'll be designing another system, and everyone will be sitting around bemoaning that it will have to be compatible with NT. That will happen."
I am not so sure. Unix is 30 years old and would unquestionably rule today's desktop if not for the existence of NT. Is it unreasonable to expect the NT kernel to last as long? In fact, I think it's possible we may not see another "from the ground up" OS developed in our lifetimes.
interesting post..
Don't want to go into a flame war or anything but surely the development of Linux would top this. Imagine a bunch of programmers communicating only through Usenet posts and FTP and coming up with that!
Allan Ang on August 30, 2005 09:04 AMInterestingly, it looks the NT codebase is still fairly portable, even though x86 is now the only platform for windows.
The xbox OS is a cut-down version of Win2k - the xbox was based on PC x86 pc hardware. And for the xbox360 OS they started from the orignal xbox codebase... even though its a radicaly different architecture. With things like .net and DirectX 10 now appearing on the 360 there must have been some merging with windows/vista codebase.
John Sinclair on January 10, 2007 04:26 PMAnother interesting fact I've read is x86 wasn't actually the original main target platform for windows NT. I forget which platform the new OS was originally planned for, but the it was only changed to x86 in the late stages of development - and Dave Cutler's foresight in keeping the main codebase clean of platform-specific stuff allowed the change to x86 without a major fuss.
John Sinclair on January 10, 2007 04:30 PM> It's also interesting to note that nobody is writing new operating systems any more.
Quite amazing how many people visit the www.osdev.org website every day then, I guess.
PS: your captcha is terribly broken.
Candy on January 17, 2007 11:54 AM>>Quite amazing how many people visit the www.osdev.org website every day >>then, I guess.
And we're seeing such WONDERFUL results from there arn't we?
>>PS: your captcha is terribly broken.
PPS: Your knowledge of the utility of this simple captcha is also horribly broken.
Daniel on June 26, 2007 12:14 AMI also enjoyed this book. In many ways, it's a paean to Cutler and his team. His Marine-like discipline and toughness of mind is a model for any project leader. The book reminds me of Microcosm, George Gilder's paean to Carver Mead, another genius in technology.
JeffK on August 15, 2007 06:50 AMI love that for the last few days many, many people have been bemoaning Jeff's captcha and not commenting on his article. Good article, by the way. It seems like two seperate entries though; one on discipline (https://www.codinghorror.com/blog/archives/000931.html) and the other on Dave Cutler.
Dave on August 15, 2007 07:06 AMFor what it's worth, Cutler's original target choice for CPU was MIPS. He didn't care for i386 at all.
skeptomai on August 15, 2007 10:29 AMThe original target for NT? Well, that would be the Prism RISC architecture, and NT would have been under the guise "Mica." When Ken Olson (crazy as a loon) killed Prism/Mica at DEC (because the world only wants a little VAX, a medium VAX, and a large VAX), Cutler went to MS and took a lot of the team and the ideas with him. NT on DEC Alpha was, belatedly, Mica on Prism.
"I think it's possible we may not see another "from the ground up" OS developed in our lifetimes."
The internet 1.0, Web2.0, Google API etc. But I know what you mean, a real OS, not just an API or software development platform.
Chris on May 8, 2008 02:31 AMDaniel said:
> And we're seeing such WONDERFUL results from there arn't we?
And as was pointed out in the article, it took about 10 years to get to a version of Windows NT (2000) that didn't completely suck. So give the new OS developers a chance. We wouldn't want to appear hypocritical, would we?
Lawrence D'Oliveiro on September 12, 2008 09:12 PMIt amazes me how everyone forgets NT started out as a co-development effort with IBM's OS2. As an early third party developer I would get two large boxes of floppies from MS to develop with one was for NT and the other was for OS2. As a driver developer they were basically the same just substitute GDI for GPI etc. MS eventually dropped out of OS2 and focused on NT which eventually beat out IBM since it was used on third party PC's. The IBM PS2 computers eventually lost out on cost. How much of IBM's OS2 remains within NT has always been the question.
Wil on September 28, 2008 11:47 AMI was on that team. The platform was designed to run on x86 but the platform that Dave Cutler preffered was MIPS. We all had primarily x86 machines and one MIPS. Then came the the Alpha. It was always assumed the primary platform for V1 (NT3.1) would be x86. The cool thing about the OS at the time for Microsoft was the fact the it was portable across platforms. Dave Cutle was definately a personality. There were no build breaks from lousy chackins when Dave was at the helm. If you did break the build Dave would show up in your office and scare the living &%$#(&@ out of you. That WAS the process.
Showstop on February 15, 2009 10:40 PMI just found your blog. Real nice article and I enjoyed it enough to go to Amazon and buy the book you discussed. I cant wait for that to be dropped off!
I don't understand why somebody hasn't started developing a third OS from the ground up. It makes no sense to me. Win NT has changed the landscape, but it is arguably the most frustrating OS in history. The problem I have with M$ technology is that it doesn't work when you need it to, plain and simple. Whereas with Unix, it has no choice but to work. Apple software just works. The GPS funtions without flinching on an iPhone, but on my Win Mobile 6.1 Touch phone it may work or it may not. I say all of this to say that I just wish somebody would come up and develop a Unix competitor that works just as well and solid!
Wilson Hines on March 1, 2009 07:55 AMContent (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved. |