How Microsoft Could Have Handled Compatibility In Vista
So I’ve been using Windows Vista for a while on my desktop and have been generally happy. The system is stable, most features work as expected, and let’s be honest, it looks really nice. One thing that has constantly frustrated me is the sheer size of each release of Windows. Every release is noticeably larger than the previous. I certainly understand that each release adds more features, and more features mean bigger. But I think it’s about time that Microsoft started to trim the fat.
The primary place that comes to mind with trimming the fat is backward compatibility. One of Windows’s strengths in the past has been that upgrades usually keep your programs running. But at this point, after all these versions, I think it has become a weakness. Not to fret, I have an idea :).
In essence, I think that compatibility should be far more modular and optional. A good way to do this would be to run older programs in something that functions like the UNIX “chroot.” Microsoft could create a few new folders, something like “C:\WindowsXP\” and “C:\Windows2K”, etc. Each of these would function as a virtual “C:\” drive for each compatibility module. Inside of each of these would be an entirely functional file structure that matches the previous versions of windows. This would be complete with older versions of various dlls so programs can’t tell the difference between the fake XP mode and the original.
A few things such as user document folders could be handled with something that can function like symbolic links. In addition to this, each compatibility mode would probably need to have it’s own registry tree.
Actual installation could be handled in a few ways with various levels of compatibility.
- Have a “Run in Windows XP mode” right-click menu similar to “Run as Administrator.”
- Have a new flag in the PE header to indicate the newest supported version of Windows. A lack of this flag would imply some common denominator.
- Have the system detect writes to program folders and registry keys, and provide a user prompt asking which mode to run it in.
- Have a program database of some sort.
Installation is the toughest part of this system, but I think can be handled. This idea is actually inspired by two things I’ve already seen. Wine and how Apple handled the migration of OS9 to OSX by being able to virtually run OS9 in OSX.
Basically, in essence, what I am talking about is a Win32 port of Wine that would be supported by the system on a kernel level. This would allow the compatibility to be optional which could be a huge saver of resources and space on the system if you intend to be up to date on your programs and only run applications intended for the newer OS. Best part, if you don’t need it, you don’t have it. It can be that simple!
All in all, I can see few downsides to this concept. It’s already in practice on linux systems that run wine. Since Windows XP is an iterative build on top of NT and 2K, the PE flag idea would work well (compatibility mode would be either on or off). In the end you have a virtual Windows XP environment which is sandboxed and let’s face it, who is better equipped to build this system than the designers of the original?