Dave Cutler’s five-decade-long quest for quality (2016)
news.microsoft.com
news.microsoft.com
I think the Windows NT kernel is a very underrated piece of technology - the reason it was unstable in the beginning is due to a corporate top-down decision: the hardware of the time was limited so they included GDI stuff in the kernel (crappy code not written by Cutler's team).
Which is not really surprising , considering that Dave was one of the main architects of VMS.
On a personal note: Best OS I ever worked with. Rock solid stable and a few conecpts and tools, which are still unmatched. At to that the arguably best documentation I've ever had the pleasure to work with in any environment.
Documentation for everything was a lot better in the 70s.
DEC, however, was in some respects really above the pack. Documentation being one of them.
I'd throw in DECnet and VAX Clustering as other examples.
At least I have seen the GPU driver crash on Windows 7 machines - the screen went blank for a second or two, then it showed the same desktop as before, with a popup that rougly said, "The GPU driver crashed, so I restarted it."
The scripting in CMD.EXE has been described as a "serial killer," and they really would have been better off implementing a Bourne shell for Windows.
Err, no. The reason it was unstable in the beginning were choices like having a "MUST SUCCEED" kernel memory pool which caused a bugcheck if the system could not allocate from that pool. Random kernel components allocated from this pool and if you opened too many handles (sockets for example), you'd get a bluescreen because an unrelated driver was trying to allocate memory for some other activity.
There were probably other similar choices that I don't remember now. It has been 25+ years.
And let's talk about the NT Driver I/O model. The most highly complex, over-designed POS I have ever seen. And this design was "polluted" for performance out of the gate (Fast I/O path, for example). It took Microsoft years to reliably and safely cancel pending I/O in the kernel. Remember the days when a random peripheral driver could hold on to an IRP and cause bluescreens all over the place because the process it was doing I/O for exited ? It was hard for internal Microsoft people to write good drivers, let alone OEMs in the wild with a fraction of the learning resources at their disposal.
NT was based on the microkernels that were fashionable in those days (e.g, Mach from Rick Rashid et. al). As with most academic ideas, when microkernels met the real world they had to be adapted.
Win32K came about because GDI performance in NT was crap. There were other things that were similarly pushed into the kernel already. I believe a classic microkernel would also have networking modules in user mode, for example. DirectX in the kernel (hated by the purists back in the day) is inarguably responsible for NT being able to supplant Win9x in the consumer PC market.
The NT kernel evolved over the years to be something that actually met the needs of Microsoft's customers. I would argue that's the real achievement, and not all of that can be laid at the feet of "Cutler's team".
I second the recommendation for "Show Stopper" :-)
We should give credit to the early architectural decisions made by Cutler which allow for niceties like the Windows Subsystem for Linux (WSL) that came about recently.
I third the recommendation for "Show Stopper" as well. :-)
i think most - 99.999% - credit here goes to Linus :) Given the modern power of Linux the WSL would have happened anyway - independently of whether early NT architectural decisions help it or preclude it.
For the POSIX, Win32, and OS/2 subsystems that existed at the birth of NT, the kernel capability was all Cutler, and Linux was in no position to contribute.
Showstopers explains the NT kernel personalities.
In particular, I really admire the people who worked on that project, because they had a lot of field-tested reasons for the things they were doing.
But the whole subsystems concept basically cleaved the logical domains in a way that was obviously, even at the time when I read it, not going to extend well in the future. While the POSIX and OS/2 stuff can be seen as a kind of hubristic base-covering (the one kernel to end all kernels), it should not have made the cut in a disciplined engineering organization.
Given the fact that Dave Cutler would basically be peers with Jeff Dean and Sanjay Ghemawat who had key contributions to multiple fields in the computer science, this makes sense.
Instead of hearing a story by a random Microsoft press corp reporter, or his management (like Steve Ballmer), I actually would like to hear stories about Dave Cutler from his subordinates.
I think we were discussing that how assholes should not be tolerated, but there are sometimes assholes up in the food chain that are far too risky to lose.
Whether that's true or false is another matter, but it's not the same as saying "I hate that person".
It's very hard to understand why anyone would label Cutler as "biggest asshole". He clearly has a very, very good track record in working in teams.
https://en.wikipedia.org/wiki/Dave_Cutler#Attitude_towards_U...
The quote most often heard is that "UNIX is a junk OS designed by a committee of Ph.D.s."
Showstoppers goes into some detail about his career goal "to get UNIX."
Whether this is is purposeful or not is likely subjective. It is, in my opinion, informative.
Any subordinate giving details about him would certainly earn the ire of the entire corporation.
“It was probably the scariest meeting of my life,” Multerer said.
The team was “scared to death,” Multerer recalls.
So I found this comment interesting, because it gave me more information about questions prompted by the article.
In contrast, Jeff and Sanjay seem much nicer.
Part 1: https://youtu.be/29RkHH-psrY
Part 2: https://youtu.be/SVgSLud50ss
At the time, I wondered if there weren't too many features in VMS and now NT. But that is always the tension, isn't it?
One interesting fact that the article doesn't cover is that MS had to pay Compaq, interitor of DEC, something like $60 million as the result of hiring Cutler. There are very significant similarities in NT with VMS. All in all, it was certainly worth it.
I have spent most of my life (until recently) doing systems work (sometimes but not always big-iron embedded) and I kind of wish companies were still investing in ~30 person teams for big engineering projects. I've always wanted to work on a Windows NT ... but no more routers.
Sure the unix model of ‘user must handle errors’ is a pain, but it leads to more flexibility in the long run.
I was like "oh shit" because they were system files. I called support and they helped restore the files from tape and then I rebooted. So I can honestly say that VMS is very similar to Unix in that respect.
> At the time, some questioned why Microsoft developed a 64-bit system; today most computers are 64-bit systems and even our phones will soon have a 64-bit operating system.
I've had to refresh my memory: the first 64-bit iPhone was released on September 20, 2013. It was "we have 64-bit since almost 3 years ago" for Apple in 2016.
Discussed at the time: https://news.ycombinator.com/item?id=11504102.
Even if the Linux kernel has evolved internally a lot since then, it has remained constrained by the userland POSIX interfaces, some of which are obsolete.
You cannot predict whether Linus, at his current age and experience (which only now are similar with those of Dave Cutler when designing Windows NT), would do a better or a worse OS than Dave Cutler, if he would be free to abandon everything else and to design a new incompatible OS, without legacy baggage.
Even if it had a nice clean design, I do not remember anything really revolutionary in the initial Windows NT, at least in the features exposed to the users.
Almost everything had a correspondence either in UNIX or in OS/2, but because NT could afford to be incompatible, most NT interfaces had various nice improvements, especially in asynchronous IO, event handling and security. Also because they were designed together instead of being accreted over a long time, the NT interfaces and types were much more consistent in the beginning, compared to UNIX. After other 25 years, Windows has accumulated again countless API additions and replacements, so the initial consistency is long gone.
You might compare Cutler to Tanenbaum if you wish.
See comment from Microsoft guy linked here. https://news.ycombinator.com/item?id=18783525