I thought it’d be interesting to riff on a my thoughts of what Microsoft might (but might not) do for Windows 8. Note that the following is pure speculation and is entirely the product of my own fevered mind! With that said, let’s dive in:
Make no mistake …
… Windows 8 MUST be virtual to its core - it’s essential to Microsoft's continued success on the desktop. If Windows 8 does not introduce a fully virtual desktop OS, the value of running Windows will decrease over time – especially as competitors such as Linux and OSX grow in terms of reliability, capability and utility.
Why is virtualization so important?
The past haunts us
Ask anyone who works in enterprise IT what stops them from moving to newer, faster, more secure, more productive versions of Windows and why it takes many years to deploy a new OS.
I’m willing to bet that the #1 reason given is “Application Compatibility”. This sentiment is echoed by the above presentation which states that:
Customers today “see application compatibility issues, they see DLL hell, they see an inability to manage efficiently, they see high costs associated with maintenance and upgrades, they see a relatively short lifespan … This cannot continue. Customers are increasingly refusing to let this continue.”
Application compatibility is the biggest single hindrance to Microsoft's and 3rd parties’ ability to push Windows and other products forward in new and exciting directions, and it is the #1 reason why companies around the world are so slow to adopt important new technologies that could otherwise allow them to work more productively, more safely and more efficiently.
Most companies are crippled by their existing in-house and 3rd party LOB apps and have to undergo monumental efforts in order to migrate to a new operating system.
The core of the problem
This is not a Windows-only phenomenon – it’s a problem that is endemic to the way in which traditional desktop operating systems work, including Windows, Linux, UNIX, OSX and others.
The issue is that we generally assume that our traditional desktop OS’ are the only OS running on a machine and that they are immutable – they don’t or won’t change. Apps assume that old API’s will never be retired and that new technologies will not tread on the toes of long-established technologies.
Alas, the reality is that the corollary is true: Operating Systems & Frameworks – even those from the same vendor – DO change. Older API’s are retired, new technologies DO tread on the toes of older technologies and things inevitably DO break.
Further, Operating Systems are changing faster today than at any time in the past. In the last 10 years alone, we have seen Windows 2000, Windows XP, Windows Vista and Windows 7 ship and each OS shipped many service packs, hot-fixes and additional technologies such as the .NET Framework, multiple versions of Internet Explorer, etc.
At the same time, we’re at a point where OS’ are converging in terms of capabilities. What will differentiate Operating Systems in the future – particularly on the desktop and on the laptop – is in how the Operating Systems are managed, upgraded and maintained.
The Virtual Solution
So if OS’ are going to evolve quicker and more dramatically, how do users of those operating systems keep up? How will existing apps continue to function when a user “upgrades” to a new OS? How will app vendors build apps that target new OS features while continuing to support mainstream customers?
One Word: “Virtualization”.
Imagine a host computer running a minimal kernel along with the drivers necessary to interface the OS with the hardware on that specific machine. Imagine that atop this minimal kernel, a core OS runs, offering UI services (screen rendering, clipboard, keyboard & mouse, etc.) features. You can’t install anything atop this CoreOS and there’s little to run other than essential management, monitoring, diagnostic features.
Now imagine that on top of this CoreOS, you layer actual guest OS’, each running in their own Virtual Machine (VM) instances. You could have a VM running XP, another running Win7 and another running Win8. Arguably, you could have other VM’s running Linux, UNIX, OSX (c’mon Steve – it’s time to let OSX run on machines OTHER THAN Apple’s!), but let’s keep this discussion focused for now.
Each of the supported OS’ think they’re running exclusively and independently atop a machine with a common infrastructure using lightweight drivers that efficiently expose hardware to the guest OS while routing the actual work to the host kernel’s drivers.
This is not too dissimilar to how some of us Über-geeks work today but you have to be pretty tech-savvy to make this all work seamlessly and have to be willing to accept a few breakages along the way as not all software is yet able to function correctly in a virtual machine.
Today, we can host Windows, Linux, etc., in VM’s atop a virtualization kernel such as Microsoft’s Hyper-V
. Microsoft already provides great “enlightened” drivers for networking and storage, but Microsoft will need to provide much improved drivers for USB and Graphics (3D/DirectX graphics in particular) for our hypothetical Windows 8 scenario.
Microsoft already offers Windows 2008 Server Core which follows a similar model to my description above although it needs to be augmented with a more “consumer-friendly” environment for the desktop. You can achieve a similar approach via VirtualPC
Fast-forward to the end of 2011
Hopefully, Microsoft will have done a great job of making virtualization the core of Windows 8 (of this I have no doubt!) and will provide a range of tools and upgrade wizards, etc., that will capture your existing OS along with all apps, settings and data to one or more Virtual Hard Drives (VHD), similar to how Disk2Vhd
Installing Windows 8 would first install Windows’ new CoreOS on your PC and reboot to initiate the new system. Once restarted, it could spin-up two new VM’s: attach your original PC’s to one and a Windows 8 VHD to the other. After completing the usual post-installation configuration steps, you’re might be left looking at your new Windows 8 PC … which happens to be running Windows 8 along with your previous OS along with all your usual apps and with your full complement of docs, photos, music and other data!
App compatibility issues are now largely non-existent. Upgrading to a new OS just means adding a new VM instance. You don’t have to reboot your machine to do this – just spin up a new VM, install the OS into it and, voila, your PC is now running Windows v.next.
Perhaps a new Virtual Desktop Manager?
Maybe Microsoft will introduce a more sophisticated Virtual Desktop Manager (VDM) too? Something like VirtuaWin
or even DeskSpace
Perhaps the primary desktop will composite everything from all VM’s seamlessly on one screen?
Maybe MS will do the right thing and also allow users to switch to desktops specific to VM instances and only the apps running in those OS instances. This could help traditionalists move to newer versions of Windows without having to forego their favorite Windows UI?
Will Microsoft take Windows 8 THIS far?
Moving to a virtualized OS core is only the beginning and unlocks some very important capabilities. For example:
Separate code, config and data
Today, Windows co-mingles too much: Windows itself lives intertwined with your applications, settings and your data. Microsoft needs to separate these three things into cleanly segregated areas:
- OS & Frameworks (immutable)
- Machine Configuration & Settings (mutable via differencing disks for rollback)
- Applications & App Settings (mutable via differencing disks for rollback)
- User Configuration & Settings (mutable via differencing disks for rollback)
- User Data - your docs, music, photos, etc. (mutable via differencing disks for rollback)
Your personal User Data could be migrated to a separate VHD and shared between OS instances so that you could open and modify a photo in PhotoShop running within a Windows 7 VM, before posting it to your blog using LiveWriter 2012 running in a Windows 8 VM.
Upgrading to a new OS would then not require you to copy all your data, settings, etc., off your machine, before re-formatting, re-installing the new OS and then copying all your data back onto your PC. All your data could just be mapped into the new OS in a matter of a few seconds!
But where things get REALLY magical is when you consider that there’s little to stop Microsoft virtualizing applications too! They already have much of this capability with App-V, but if it was tweaked just a little, it could open up a whole new realm of possibilities:
Imagine if you were to install an app on your PC::
- If the app …
- is Windows 8 aware, it could ship with a manifest that describes what capabilities it needs of the OS and Frameworks, and could expose its config settings, etc.
- is not Windows 8 aware, the application could be identified from a global application compatibility catalog that Microsoft could maintain.
- Windows could then copy/install the app into its own VHD and create a differencing disk to apply machine-specific settings to your app’s config. This would allow you to rollback settings to a previous set of changes in case you screwed up an application’s config
- Windows could then enumerate the VM’s that support the required OS/Framework features and select the most recent OS to expose this app through. The app would then be mounted into the OS, appearing as if it had been installed within that OS, but requiring almost no change to the OS itself!
Now imagine when it comes time to upgrade to a new OS: Windows could enumerate all mounted applications and determine those that could run unchanged and unhindered when mounted inside the new OS and could make the necessary changes. And if anything goes wrong, you can always just choose to run the app in its original VM/OS instead.
Once you've “upgraded" your apps to run in newer OS instances, your older dormant VM's can be removed to free-up disk space and reclaim memory. Also VM instances could be started and stopped dynamically depending on whether they need to spin up or shut down an app they're hosting.
This change alone could save Microsoft’s customers $billions and huge amounts of time and resource when upgrading their OS’.
Nothing I’ve described above requires anything that doesn’t already exist or that can be tweaked to behave in this manner.
We can dream!
Of course, this is all just speculation without any basis in fact. What Microsoft will do is currently only known to a few thousand hard-working individuals over in Redmond, but knowing many of them and knowing the staggering level of engineering skill and talent at their disposal, I have little doubt that some or all off the above is well within reach.