Microsoft has long been known as the king of mixed signals. The last 20 years was filled with contradictions, shifting focus and priorities. so when Microsoft announced they were working on a next generation operating system, the development community was understandably nervous. Was this going to be Windows Mobile 6.5 to Windows Phone 7 all over again?
Thankfully that does not appear to be the case this time around. Despite the fact that the Surface Neo was virtually erased from the face of the earth and Surface Duo runs Android. Microsoft has tried their very best to make sure Windows 10X is set up for success. Today we're going to explore the various approaches Microsoft is taking to make sure almost no app is left behind.
Let's talk a bit about the Windows 10X Architecture and how Microsoft expects to pull of this unprecedented next generation app experience while mostly maintaining backwards compatibility with legacy win32 applications. First up in our discussion:
All applications native or legacy will run inside containers on Windows 10X. If your mind goes to Docker or something similar you are on the right path. In essence its the same thing. Except Windows 10X will seamlessly manage these high performing containers and their security. As of the writing of this article there are three types. We are going to dig into them in detail below:
The Native Container
UWP applications are first class citizens in Windows 10X. They are the preferred application model on the new platform. These will run no different than they do today on Windows 10. As the native model for application on this new system these apps will benefit from very little overhead, complete control over privacy and security as well as the least impact on battery life and performance.
This container was built to provide legacy applications with a familiar environment in which to operate in. Think of it as Windows 10 running inside Windows 10X. It provides applications with access to familiar systems like the registry, taskbar, etc. Unlike native and MSIX containers, this is a shared environment which hosts legacy apps together. This means apps can talk to each other in the same ways they would on a regular install of Windows 10. There is no support for streamlined install, uninstall, update, etc.
MSIX apps are nothing new, essentially this is your traditional Win32 app which has been modernized and run isolated and protected to provide a more robust and secure experience. For the most part they behave like UWP applications with support for streamlined installation, removal and updates plus isolation for security and privacy. If you have already made the jump to MSIX, your application is almost guaranteed to run problem free on Windows 10X as these are essentially packaged Win32 apps. One important thing to keep in mind is they actually run within the shared Win32 container we spoke about above.
The power of the cloud unleashed
It is important to note that Win32 and MSIX will not run locally at launch. The initial release of Windows 10X will support these, but they will run in the cloud. This approach opens a world of possibility for Microsoft and Windows developers. With high speed home internet and 4G LTE the norm and 5G quickly gaining traction; Microsoft can now offload the work of running these containers to the cloud while providing seamless experiences for Windows 10X users on modest hardware. The possibilities are truly endless, one great example of a similar experience is project xCloud.
So now what does this mean for me and my apps?
Well there are a few things to keep in mind. Win32 and MSIX apps are running inside a container within the host system, in this case Windows 10X. That means they don't have direct access to the host system. As crazy as it may sound, users actually interact with these applications via a high performance RDP session. Yes you heard right, RDP. The simplest way to visualize exactly what is going on here is to think of the containers as virtual machines running on top of your Windows 10X installation. Now this is an oversimplified explanation, but that's the gist of it.
Keep in mind Microsoft is deprecating many experiences in this shift to a modern OS. If your application leverages the system tray, specialized hardware with obscure drivers, or depends on full access to the entire host system. You will probably have to rethink your approach. Those features are not currently supported on Windows 10X and I doubt they will make an appearances any time soon.
What are your thoughts on Windows 10X? Do you think its just another Windows RT? or has Microsoft finally gotten on the right path?