Just to recoup a few facts:
- On the same hardware, 2x slower than XP
- Incompatible with a large proportion of existing media
- Big step backwards from MCE UI - try playing DVDs stored on a hard drive
- Insanely buggy (read Mark Russinovich blog to fully appreciate the scope)
- Majority of device drivers and applications no longer work
- No major, innovative features to compensate for it all
More on Vista here and here.
This is no laughing matter, ladies and gentlemen. While the freedom-loving hordes of northern barbarians might have rejoiced in the Roman collapse, the civilization plunged in the darkness of the Middle Ages for the next millenium.
Anyway, is everything lost? Is Windows code base beyond the point of no return? What would I do if I were Bill Gates and would have decided to return to reincarnate Microsoft just like Steve Jobs did with Apple?
One of the things that is both an amazing blessing, and a huge problem for Windows is enormous legacy. Thousands of applications whose compatibility is ensured by millions of lines of source code that otherwise is not used. Huge barrier to entry for a single bug fix, or any other change - whatever you do inside Windows is sure to break somebody. Whatever you do in Windows kernel is sure to break a LOT of people.
Look at what happened after they introduced LUA in Vista - vast majority of even Microsoft's own applications stopped working.
Attempts to maintain backwards compatibility the way Windows does it now lead to the huge code base that is terrible hard to maintain and expand (an average Windows dev now only writes 1500 lines of code per year - and this leads to rapid decline of the quality of the development org as a whole), and increases the memory pressures, which leads to the overall sluggishness.
Meanwhile, the Moore's law appears to have stopped contributing to the performance of an individual CPU, and started contributing to the parallelism of the system - instead of clock speed-up we're now seeing the proliferation of cores. 4 years ago when I started my new job as a dev manager in one of the Windows NT base team, the spec I put together for a dev box had a dual 2GHz Opteron and cost $3500. The 4-way machine we used to build our code was 2GHz and ~$12000. Today, my home file servers are 4-ways running at 2GHz still, but they are only $2000, excluding the cost of the drives.
The proliferation of cores is bad for the current Windows architecture - at 16 CPUs Windows is actually SLOWER than a single-core machine. Luckily, many-core architectures create opportunities for virtualization, and this I think is the solution for the OS quagmire Microsoft is finding itself in.
Here is what I would do if I were the new Dave Cutler.
At the lowest level it would start with a hypervisor that would host multiple copies of multiple NNT (new NT) subsystems, and enable extremely fast message-based communications between them. Each subsystem will host one or multiple applications, but no UI whatsoever.
There will be a separate subsystem for every compatibility layer (say, XP, or Vista, or Server 2003, or maybe even Windows 98) derived from the source code for that specific generation of the OS.
New subsystems (essentially, the new versions of the OS runtime environment) can be developed without any regard to backwards compatibility, because the old apps will be run by the old subsystems. For example, there could be a pure .NET-based subsystem. A Singularity subsystem. A POSIX subsystem. Development of these subsystems could be an internal Microsoft affair, or it could be shared with the industry or research institutions, potentially causing a virtuous cycle of innovation.
The UI will be handled by a separate UI-only subsystem (which could potentially run wholly on a specialized UI core, like Nvidia), though a hypervisor-layer UI protocol that would work much like RDP (except an RDP connection to a specific set of windows by an application, see Remote Applications Integrated Locally).
The file system can also live in a separate subsystem (or maybe a number of subsystems, say, one per volume), and be accessed through a hypervisor version of redirector (over SMB-like protocol).
This architecture is robust (if a subsystem crashes, much of the system is still alive and useful, unlike previous isolations where kernel may be operational, but you can't do anything if the UI died). It is scalable not just to many cores, but with the hypervisor transport extended through the network, to a cluster, or beyond. It is not hard to implement in an iterative fashion - at first, the subsystems can run the entire versions of the OSes, with drivers for UI and message passing. Later, they can be stripped down to bare minimum required to run the subsystem.
The question is
- Do Microsoft execs understand what a hole they dug for themselves in the last few years, and
- Are they going to rock this boat? Is there an incentive for a change now that Bill is gone?