July 02, 2008
Journalists Misunderstanding SoftwareThis is one of my pet annoyances, and I recently experienced it again with this article in the New York Times about how Microsoft should start over with Windows.
The author, Randall Stross, is no software industry neophyte; he wrote the book The Microsoft Way, so he spent some time studying the company. Nonetheless he makes some mistakes that betray some fundamental lack of knowledge about software.
The first is when he says "Vista is the equivalent, at a minimum, of Windows version 12 — preceded by 1.0, 2.0, 3.0, 3.1, NT, 95, NT 4.0, 98, 2000, ME, XP." OK, I know we have sent out some muddled marketing messages, but do people really not realize that there are fundamentally TWO different versions of Windows--the Windows 3.0/3.1/95/98/ME one, and the Windows NT/2000/XP/Vista one? I know that even just counting the NT versions, Vista is the seventh version, but his description of Windows as "Beginning as a thin veneer for older software code" is (barely) a description of the other version, not the NT-based one.
Then he claims "A monolithic operating system like Windows perpetuates an obsolete design." and mentions that "the company should take heart from Apple’s willingness to brave the wrath of its users when, in 2001, it introduced Mac OS X. It was based on a modern microkernel design, which runs a very small set of essential services that make the system less vulnerable to crashes." Doesn't he realize that we did exactly that--we switched from the old patched-together OS to the newer modern one, and dealt with compatibility issues, and people had to buy new versions of their apps to make them run faster, and all that stuff--and we did it in 2001 also? That's when the old Windows line, with Windows ME occupying the throne, was finally subsumed into the NT one. And I'm not sure what he means by "monolithic", but does he really think that Windows is some big windows.exe file or something? Windows and OS X are, to a couple of differentials, the same kind of OS, built with the same design, using the same technology. They both are a layered design and they both have various security exploits in their code. I know Stross isn't a kernel hacker, but it would be nice if he didn't fall into the easy "Mac OS X is architected in a fundamentally different or better way than Windows" sound bite.
The ironic thing about my complaint (I know the term "ironic" is misused, but I think this is actual irony) is that I generally agree with Stross's overall point--Microsoft should think about replacing Windows. Windows may not reach back to 1983 or whatever as he implies, but the NT work is approaching 20 years old, which is just about how long the DOS-Windows 3.x line lasted. The goal should not to replace Windows with a layered microkernel design, because it already is that. And I don't think that writing an OS in managed code (which is what Singularity is) is necessarily the answer, although some of the tools they produced are useful, and I do love their approach: "What would a software platform look like if it was designed from scratch with the primary goal of dependability?" When I suggest to people at Microsoft that you could write an OS that is immune to security vulnerabilities, for some reason they all hear the question as "We could make a version of today's Windows that was free of security vulnerabilities" (which is of course NOT what I said) and they roll their eyes, and then when I explain that I mean starting over with that goal they patiently explain to me how new software will have more bugs than other software (which is another too-widely-accepted crock that I won't get into here), and then we all go back to hacking away on Windows 7.
Posted by AdamBa at July 2, 2008 10:27 PM
I think average newspaper readers, even NYT subscribers, really do not understand that there are two fundamentally different versions of Windows. Most people know that XP is a lot better than Win9X but they think it is the result of organic growth as opposed to a discontinuity and if you started talking about kernels and preemptive multitasking and VMS their eyes would glaze over in a heartbeat.
Like you say, Microsoft could have used marketing to drive the NT != Win9X message home more fully, as Apple did with OS X, but it chose not to.
As for Randall, kernels are like user interfaces, everybody has an opinion on them which has usually been formed based on an incomplete study of the problem domain. Maybe somebody in Microsoft should send Randall a copy of the excellent Windows Internals book and let him educate himself.
Posted by: Andrew at July 3, 2008 09:31 AM
As software engineers we realize that a lot of journalists don't have the minimum depth of technical knowledge in software that we think they should have to be able to report on it.
What worries me is that this might be true across the board with all journalists, so that when they report about other issues, I shouldn't assume that they have the required knowledge to be reporting in depth. So when I read reports about say, the economy, or events in China, or climate change, I take it with a pound of salt.
Posted by: Sid Singh at July 3, 2008 10:08 AM
It is not just that MS did not choose to make it obvious that Win XP was not just an upgrade of Win 98, but by not calling it NT 5, they chose to hide that fact.
I am absolutely dependent on an editing program that has not been maintained in at least ten years and I am terrified that some it will cease to run in some future upgrade of Windows. It could not be installed under program files in Vista, but it could be installed in root. But I had other problems with Vista and abandoned it.
Posted by: Marble Chair at July 3, 2008 01:35 PM
The problems with starting over are two-fold:
1. If the specifications are not up-to-date, it can be difficult to retain all of the interoperability workarounds. That's what Joel *really* said.
2. It takes a very, very long time to get back to where you started.
Nevertheless, if a codebase is becoming unmaintainable, starting over can be the right thing to do. Your problem is that you either have to drive very hard on the new code to ensure it can replace the old code quickly, or divide your effort and write the new code and extend the old at the same time.
Posted by: Mike Dimmick at July 3, 2008 02:43 PM
Sid: I have that exact same feeling when I read about other industries...which is a bit scary given how many decisions we all make based on those kinds of reports.
MC: Windows 2000 was NT 5 (and in fact was called that until partway through). XP for some reason was called 5.1, not 6, so Vista was version 6 and that's why Windows 7 is called that and not Windows 8 (another point that baffled Stross).
I think the answer to backward compat is to run the old OSes virtualized. People say "Oh there are problems with doing that" but I can't see how they are worse than the problems we have now of preserving and shimming old bugs just so old apps can run.
Mike: Certainly we would work on both in parallel--it took over a decade for NT to replace Win 9x.
Posted by: Adam Barr at July 3, 2008 02:52 PM
Here is where the rumors have started
Just recently it was announced that minwin kernel is just a development gadget and won't be used in production.
About the OS immune to security vulnerabilities. The rest of the world uses the term "secure by design". Here is first problem - MS doesn't design.
I am afraid that Unix/Linux like system are already too far ahead in that stuff.
Posted by: Ivan at July 7, 2008 04:56 AM
You and Stross are both oversimplifying the history of Windows. While the kernel and system services are totally different between the 9x and NT codebases, there are plenty of components in the NT codebase that were derived from the 9x codebase, either for compatibility and/or convenience (e.g., GDI and USER) or because they were shared between the codebases (e.g., shell, IE, Notepad). So taken as a whole, Windows does indeed have one shared (complex) history, not two separate (simple) ones.
Posted by: Walter at July 9, 2008 01:47 PM