Break with the past
Last year, I wrote a pair of “Zeichick’s Take” columns for SD Times News on Monday. Unfortunately, they weren’t archived onto the Web. However, I’m posting them here now, in response to an MSDN blog entry, “The real cost of compatibility is not in the hacks; the hacks are small potatoes,” by Raymond Chen. So, while the 1993 Ford Mustang GT is no longer in my driveway (sniff…), it will live forever as embodied in these columns.
From March 30, 2006:
Zeichick’s Take: Break With the Past
Dear Bill Gates: I was bummed when the Ford service manager told me that he couldn’t get the parts I needed to repair my 1993 Mustang’s heating system. But Ben — always helpful — explained that the pieces just weren’t available from the factory. He suggested the aftermarket, and indeed, I found exactly what I needed from Late Model Restoration.
Manufacturers can’t support old products forever. In the case of a 13-year-old car several model generations out of date, I can’t be upset at Ford for not having a temperature control cable. In the case of my new Intel-based iMac, software written for Mac OS 9.x (“Classic”) doesn’t work at all, and I’m fine with that, too. Drawing a line in the sand, saying that legacy products will be supported only for a finite amount of time, is generally acceptable, especially if it makes new products better.
One of the reasons why Windows is so bloated, Bill, is because your operating system doggedly supports lots of legacy hardware and applications, including antique overlapping APIs and libraries — many of which predate Windows XP, and some even go back to Windows 95. This complicates matters not only in terms of coding, but also for regression testing and in security patching.
My recommendation: Draw a line in the sand. Tell new Windows czar Steven Sinofsky to pick a set of modern APIs, and make sure that Windows Vista supports those. Eliminate the rest. Whether it’s 100 percent managed code through WinFX, or some mixture of late-model native binaries and .NET, there’s no need to go back to the Paleolithic Era. The same with hardware: There’s no good reason, none at all, for Windows Vista to support graphics cards, CD-ROM drives or network adapters that are older than, say, two years. Reinvent Windows as an operating system for new PCs. Focus on the preloads.
That’s what Microsoft’s PC partners, like Dell, HP and Lenovo, really want — they want to sell new desktops and notebooks, not watch consumers pick up a copy of Windows Vista Ultimate at CompUSA to run on their old Pentium III box. (Imagine if Ford would cripple its new Mustangs by requiring compatibility with the brake pads, fuel injectors and temperature control cable from my old pony.) Cutting off old APIs and reducing the support for old hardware might upset some customers, but it will result in a smaller, faster operating system that’s more stable and more secure. Get rid of the bloat!
What about enterprise customers? Don’t fool yourself, Bill — they’re not rushing to upgrade to Windows Vista anyway. Remember how long it took to get them from Windows 95 to Windows 98? I saw someone on a plane the other day who is still running Windows 2000 on his notebook because, he said, his company doesn’t do operating system upgrades on existing hardware.
Few companies retrofit new operating systems onto old PCs, because it’s expensive and not worth the hassle. Most will make the migration (after they’re through testing and evaluating) as part of the rollout of new PCs during a hardware refresh cycle. Sure, focusing on supporting only current hardware and applications might cause some of those customers to wait a bit longer (especially if they have to wait for enterprise apps to be updated or tested), but when they do upgrade, they’ll be happier and require less support.
Build a better Windows, Bill — by breaking with the past. Yes, cutting off compatibility with old binaries and legacy drivers will make some customers unhappy. But it’s the right thing to do.
From April 6, 2006:
Zeichick’s Take: Break With the Past, Part II
Last week’s column, where I urged Microsoft to break with the past and eliminate support for old APIs and device drivers from Windows Vista, elicited quick and harsh response. No, not from Microsoft, which didn’t respond at all. (Microsoft rarely responds to articles in SD Times or other publications, in my experience.) Rather, some loyal readers insisted that a lot of users still use older PCs — and that eliminating support for legacy hardware (I suggested cutting loose systems over 2 years old) would be an inconvenience.
(They didn’t question my premise that a clean-slate operating system would not only be easier to build and test, but also would be more stable and secure — and besides, as a rule, enterprises don’t upgrade desktop and notebook operating systems.)
“In the past I have upgraded hardware on my PC and I have had to migrate to a newer version of Windows to support it. It would be a disaster if the newer version of Windows did not support the rest of the older hardware and software. People who update all of their hardware and software every two years are very rare,” one person wrote. He’s right: Some people do upgrade the OS to support specific hardware or applications.
But I believe that this may be an exceptional case. As he himself later wrote in his letter: “I know many people who are running Windows 98, Windows ME and Windows 2000 all with large variations of software and hardware.” Exactly. So, why should Microsoft struggle to make Windows Vista run on an old Windows 98 box — and delay the product and make it unstable in the process?
Another respondent said, “I am writing this on my 10-year-old no-name 200 MHz Pentium PC under Windows 95. The bloat is not in Win 95 but rather in Win 98, Win2000, and WinXP.” Completely true. But don’t you think that this guy is unlikely to put Windows Vista on that 10-year-old desktop anyway?
The best letter was, “I have devices which are more than 5 years old. Now, if Microsoft were to support older software and devices in a shell environment like Macs do to support Windows programs, that would be fine. But not supporting them is not an option.”
That’s a great idea. How about if Microsoft used Virtual PC technology to enable legacy APIs on Windows Vista—i.e., Windows Vista shipped with Windows XP in a preinstalled virtual machine, the way that Mac OS X came with Mac OS 9.2 in a “classic” emulator? That would seem to be the perfect solution, in terms of streamlining the operating system and sandboxing older, less secure programming models and frameworks—and it could be turned off when users no longer needed to support legacy applications.
I like it.