A few weeks ago I wrote a post about how Windows could move to a Linux kernel, as a cost-saving strategy for Microsoft. Windows would be rebuilt as a custom GUI layer and set of services that runs on top of Linux. Legacy Windows applications would run under virtualisation, marking the end of development of the Windows kernel and OS. After giving it some more thought, there is one rather large problem with an otherwise plausible idea – gaming. The PC has an enormous catalogue of Windows games, and this is a major benefit that keeps people on the platform.
Gaming apart, there are far fewer blockers for moving to Linux than there were ten years ago – we rely less on Office and other productivity applications because we have alternatives such as cloud services. But games do present a problem – Steam tried to build a gaming platform on Linux but the size of the catalogue is tiny in comparison, and a lack of investment in drivers means there is usually a performance gap. For a huge library of games that can run on a massive array of hardware configurations, Win32/64 and the DirectX graphics library are unparalleled.
So how could our idea of a new Linux platform with a Windows GUI and Win32/64 compatibility layer accommodate DirectX games? Well it turns out that a very similar problem has already been solved – by Microsoft themselves. The Xbox One console makes clever use of virtualisation to run apps and games in separate virtual machines on top of a lightweight hypervisor. It enables the impressive trick of Xbox games running live in a window on the Xbox home screen. When this hypervisor solution was first announced it sounded like a solution that could incur a performance penalty but it is now clear that Microsoft’s engineers were able to sidestep this.
Taking the hypervisor idea a step further, the Linux Windows of the future could use virtualisation to divide and conquer the problem of migrating to a more secure Unix-based kernel while still keeping compatibility with DirectX games.
There are two different ways to solve this problem:
- A hypervisor boots the new Linux-based Windows platform, which is solely for new apps, and a separate virtual machine runs DirectX games and older Win32/64 applications.
- A hypervisor boots the new Linux-based Windows platform which runs new apps and contains an embedded Win32/64 virtual machine for older applications. A separate native Win32/64 instance runs purely for gaming, which is very similar to the game virtual machine that the Xbox One already runs. It’s an elegant solution that cleanly separates gaming and applications at run time.
The second option looks preferable because it cleanly separates the application and gaming sides of Windows, and it aligns the PC nicely with the Xbox platform, which is a direction Microsoft have been moving in for some time. This option also appears more flexible for future rewrites and consolidation – the kernel of the gaming VM could be stripped back and re-engineered because games use a smaller subset of the Windows API than regular apps.
In the future, perhaps all PC’s will be Xboxes?