Having been called to jury service recently, I decided to read a new book that I just got from Amazon called “The Old New Thing: Practical Development Throughout the Evolution of Windows” by Raymond Chen. Raymond Chen is one of the original software developers on the Microsoft Windows operating system. The book is an interesting collection of Raymond’s blog entries with a few augmentations thrown in. Several chapters are dedicated just to programming propeller heads, but there’s enough interesting stories of how Windows operates to keep the general audience interested.
One of things the book acknowledges is how Microsoft “works around” program incompatibilities by coding “fixes” directly into the operating system. If you remember about 2 years ago, 20% of the source code for Windows 2000 was accidentally leaked. This article details some of the things found in the source code. This fact alone validates that the Windows 2000 source code posted is valid. It also explains why Windows has so much “bloat” in it.
So why not block applications with bad programming techniques? According to Chen, when a user upgrades their operating system and their program stops working, they blame Microsoft and not the software vendor. Why wouldn’t they? The user has no idea that their vendor is using sloppy programming. In order to secure sales, Microsoft will bend over backwards to provide application compatibility to the point of incorporating the fix into their operating system directly.
The responsible thing to do of course is to notify the company that made the software and inform them of the fix. Microsoft (I’m equating Chen with Microsoft since he clearly has been entrenched in the Microsoft culture), however, makes the excuse that the company may have gone out of business or may not be willing to issue a fix. Why not issue just a hotfix for that company through the PSS? Microsoft holds back certain hotfixes from the general public and holds them hostage in the PSS. Only if you are willing to pay a fee and or deemed worthy of the documented hotfix is it released to you. Why should it be any different with sloppy programming fixes? Why do I need a fix for an application *I* don’t use bundled into operating system *I* use?
Microsoft has some what rectified the situation using Application Compatibility shims in Windows XP. However, this begs the question: what else is being injected into the Windows code base? From www.kickassgear.com/Articles/Microsoft.htm:
Microsoft’s David Cole emailed Phil Barrett on September 30 1991: “It’s pretty clear we need to make sure Windows 3.1 only runs on top of MS DOS or an OEM version of it,” and “The approach we will take is to detect DR DOS 6 and refuse to load. The error message should be something like ‘Invalid device driver interface.”
Microsoft had several methods of detecting and sabotaging DR-DOS with Windows. One was to have Smartdrive detect DR-DOS and refused to load it for Windows 3.1. There was also a version check in XMS in the Windows 3.1 setup program which produced the message: “The XMS driver you have installed is not compatible with Windows. You must remove it before setup can successfully install Windows.” This was not true, but rather, was an attempt to undermine the competition.
Brad Silverberg, the Microsoft exec who had been responsible for Windows 95, emailed Jim Allchin (now Senior Vice President of MS) on September 27th 1991: “after IBM announces support for dr-dos at comdex, it’s a small step for them to also announce they will be selling netware lite, maybe sometime soon thereafter. but count on it. We don’t know precisely what ibm is going to announce. my best hunch is that they will offer dr-dos as the preferred solution for 286, os 2 2.0 for 386. they will also probably continue to offer msdos at $165 (drdos for $99). drdos has problems running windows today, and I assume will have more problems in the future.”
Jim Allchin replied: “You should make sure it has problems in the future. :-)”.
Andy Hill emailed David Cole, Windows group manager: “Janine has brought up some good questions on how we handle the error messages that the users will get if they aren’t using MS-DOS. The beta testers will ask questions. How should the techs respond: Ignorance, the truth, other? This will no doubt raise a stir on Compuserve. We should either be proactive and post something up there now, or have a response already constructed so we can flash it up there as soon as the issue arises so we can nip it in the bud before we have a typical CIS snow-ball mutiny.”
Cole replied to Hill: “Let’s plead ignorance for a while. We need to figure out our overall strategy for this. I’m surprised people aren’t flaming yet, maybe they won’t.” Cole also sent an email to Silverberg suggesting a less severe message be used when DR DOS was detected: “A kind-gentle message in setup would probably not offend anyone and probably won’t get the press up in arms, but I don’t think it serves much of a warning. BillP made an excellent point, what is the guy supposed to do? With a TSR, the solution is to just remove it. With DR-DOS, or any others, I doubt the user is in a position of changing. He will no doubt continue to install. When he finds problems, he will call PSS. We will get a lot of calls from DR-DOS users.”
“Perhaps a message in the phone system for Windows. It would say something like ‘if you are not using MS-DOS or an OEM version of MS-DOS, then press ##’. Then give them the message.” Silverberg replied: “What the guy is supposed to do is feel uncomfortable, and when he has bugs, suspect that the problem is dr-dos and then go out to buy ms-dos. or decide to not take the risk for the other machines he has to buy for in the office.”
For more trips down “OS memory lane”, check out Toastytech.com in addition to Raymond’s book. Raymond Chen’s blog can be found here.
– Soli Deo Gloria