There’s a bit of discussion over on Larry’s blog post “Young Turks” about the virtues of the Microsoft method of achieving backwards compatibility (i.e. by doing shims and work arounds for individual apps and stuff) and the “virtualization” or “emulation” method, where you run old applications either in a virtual machine running the old operating system, or in an emulated layer, ala the was OSX runs OS9 apps.
Now, I’m going to discount the emulation method pretty much out-of-hand, because I personally feel that the Mac emulation layer was a bit of a failure – it’s pretty much pot luck if your app works or not. And quite frankly, it’s not much different from installing a shim anyway, it’s just a “general” shim rather than an app-specific one.
But the virtualization method seems interesting at first glance. Basically, you can do what you like with new versions of the OS, if old apps don’t work, you can run them in a special virtual machine which just runs the old operating system. Now, obviously the “virtual machine” would have to be some special kind of virtual machine because it would be far too annoying to have to set up networking just to copy files from your VM to your host OS.
But let’s say you get that sorted (perhaps you could have the My Documents folders in the VM map to a drive in the host machine?) there’s one very big program, which I believe makes the idea impossible: security patches.
Let’s just assume for a moment that Microsoft had taken the virtualization approach starting from Windows 95. Let’s also assume you work for a company that has a line-of-business application that was developed on Windows 95, but hasn’t been updated since then (which is surprisingly common). So if you wanted to run your Windows 95 app today, you’d have to run it in a virtual machine running Windows 95 in your host Windows XP OS.
Now let’s imagine that a security vulnerability is found in Windows 95 that makes your application insecure, and a patch is required. Would you expect Microsoft to patch an 11 year-old operating system, just so you can continue to run your application securely? After 11 years, it’s unlikely that you company still has the source code to your application (or maybe you had contracted development of it out to another company, and they’ve since gone out of business).
But by making Windows XP fully backwards-compatible with Windows 95, your line-of-business app from 11 years ago still runs today, and Microsoft don’t have to worry about patching operating system that have gone out of support any more.