For the past few months I’ve been thinking over an idea that initially sounded crazy, but the more I think about it, the more it makes sense. The idea is that Windows will become a GUI layer and set of services that run over the top of a Linux core. The NT kernel will be obsoleted.
Why would this ever happen? It’s fairly safe to say it wouldn’t be for technical reasons. Changing to a Linux kernel wouldn’t suddenly grant superpowers to Windows. It would be pretty much business as usual. You could argue the pro’s and con’s of the Linux kernel vs the NT kernel forever, but although they are architecturally different, the end results are broadly comparable. Although it has to be said, it will be a considerable upgrade for Windows to gain the improved security and file hierarchy of Unix systems.
No, this would be a business decision. Microsoft is facing the problem of a declining market share for desktop computing. The rise of mobile devices has eaten away at the size of the desktop/laptop computing market, and this looks set to continue. OEM hardware manufacturers have rapidly shifted focus towards mobile devices. Maintaining a full stack proprietary operating system like Windows is expensive. Especially with all the backwards compatibility they have to worry about. It would be much cheaper to just use open source foundations and build on top of that.
In this changing world, Microsoft has already made big changes to what Windows actually is as a product with Windows 10. It’s billed “the last version of Windows”, not because they’re stopping developing it but because it’s going to be a provided as a service – a continually updated product, with major version releases a thing of the past. Another interesting change with this new delivery model is the reduced testing effort, itself a cost cutting measure. Nowadays, Windows releases are signed off based on telemetry from beta testers in the Insider programme, rather than internal QA teams. Early builds of Windows 10 suffered as a result, but recently this has improved markedly.
So how would this idea work? Well, an engineering task like replacing the Windows kernel is certainly a massive job, but Microsoft are the best in the industry at this. They made 32-bit software run brilliantly on 64-bit Windows years before Apple did the same trick. They also pulled off some pretty crazy virtualisation tricks with the Xbox One, running two virtual machines on top of a hypervisor. So Microsoft could pull this off, of that I am certain. They would run the old NT kernel in a VM on top of Linux, and run existing software inside it. Slowly, software would be rewritten to run against the Linux kernel and custom Windows-specific layers above that.
The end result would be unification with the other two desktop operating systems – Linux and macOS. It would reduce maintenance costs for Windows significantly, and make life a lot easier for power users such as developers.
Perhaps the Bash Shell for Windows introduced with the Windows 10 Anniversary Update is the first step in this direction.