Intel’s CEO, Paul Otellini, may have inadvertently pre-disclosed Microsoft’s plans for the next versions of both Windows and Windows Phone. We’ll call them Win8 and WP8, respectively.
During a conference call to press and analysts after Intel announced record Q4CY2010 quarter ($11.5Bn in revenue for the quarter if you’re interested), Ottelini was asked about Microsoft’s move to port Windows to ARM. He said:
The plus for Intel is that as they unify their operating systems we now have the ability for the first time, one, to have a designed-from-scratch, touch-enabled operating system for tablets that runs on Intel that we don't have today; and, secondly, we have the ability to put our lowest-power Intel processors, running Windows 8 or the next generation of Windows, into phones, because it's the same OS stack. And I look at that as an upside opportunity for us.
So, according to Ottelini, it appears that WP8 may well be built atop the Windows Kernel and OS subsystem. Windows proper, not built atop Windows CE as WP7 is today!!! Not only that, but Win8 may will include a brand-new touch-centric UI that is built from the ground-up for tablet scenarios.
So, is it even feasible for future versions of Windows Phone to run on the Windows kernel?
To understand why, let’s dig into this a little more.
MinWin – the history of the future of Windows:
In order to handle the explosive growth and breakneck development schedule of Windows 2000 and XP, Microsoft relaxed its own rules around modular interdependencies between OS components. This resulted in Windows increasingly becoming intertwined around itself – essentially turning into a ball of string.
Microsoft has spent a great deal of time and effort over the last 10 years cleaning up the Windows OS architecture and codebase. This effort, sometimes called MinWin (Minimal Windows), was a huge undertaking that benefitted Windows Vista a little but truly bore fruit in Windows 7.
With most of the Windows OS now cleanly modularized and far less fragile, Microsoft began the process of replacing pockets of what were once the necessary evils of embedded assembly and machine-architecture-specific code with machine and processor agnostic code. Once the code was finally clean, they could complete the work to port Windows to ARM.
Now this is where things get interesting:
I know from my discussions with colleagues during the latter stages of my 10 year career at Microsoft that the MinWin project had gone very well and that they’d actually managed to exceed their initial goals by creating a totally isolated core kernel (MinKernel) that depended on nothing. Built upon the MinKernel are the remaining kernel and OS features that were not considered as absolutely essential to the core kernel.
Therefore, the networking stack, graphics and media drivers and services, most device drivers, storage drivers, IO drivers, printer drivers, etc. were implemented atop a VERY small, efficient, stable and secure kernel.
In a Channel9 video interview, (the always awesome) Mark Russinovich indicated that much of the confusion about MinWin was due to the the improper nomenclature used to describe the various aspects of OS architecture, I contacted him and suggested referring to the parts as CoreKernel, Kernel and CoreOS and OS:
- CoreKernel is the indivisible minimum kernel (controlling the processor, memory and critical hardware)
- Kernel includes everything else that runs in the kernel (e.g. logical kernel abstractions including threads, processes, etc., networking stack, device drivers, printer drivers, graphics & media drivers, KTM, ETW, etc.)
- CoreOS is the core (mostly user-mode) OS substrate upon which the OS itself depends (e.g. Win32, COM, OLE, RPC, WMI, DirectX, etc.)
- OS is the remaining set of other high-level essential and non-essential features that may, or may not, be installed by the OEM/user/etc. (e.g. Explorer, Silverlight, .NET, Media Center, IIS, etc.)
Using these abstractions makes it easier to see the boundaries around which Microsoft may well be architecting both Win8 and WP8.
I know from prior conversations that CoreKernel is small. VERY small. Last I heard it was around 32KB on disk! Yes, that’s 32 kilobytes!! It gets the machine booted, initializes the processor and memory and loads the rest of the OS. Its core role is then to provide the very lowest-level services to the rest of the OS (e.g. switching threads, allocating memory, managing processor cache, etc.)
Now add to CoreKernel the logical kernel abstractions and infrastructure (e.g. threads, jobs, processes, jobs, etc.), a networking stack, the device drivers necessary to control a PC, phone or tablet’s hardware features and you have a kernel.
Now add on top selected CoreOS and OS services and features.
There’s little reason why Microsoft couldn’t port a slightly modified version of the current WP7 OS & UI running on an ARM board inside a phone or tablet. Or port some/all of the rest of Windows for that matter. After all, one of the huge benefits of WP7’s OS is that it’s largely built on .NET and Silverlight – both of which are already easy to cross-platform and both of which isolate .NET and Silverlight apps from any dependencies upon the underlying operating system.
What’s the point?
Now, you may be wondering what’s the point in doing this? After all, Windows CE is a perfectly adequate kernel and OS for small embedded devices and already powers Windows Mobile devices, Windows Phone and several 3rd party devices like bar-code scanners, process control devices, monitoring equipment, etc.
Right? Right … but only up to a point!
Consider the vast leaps forward in Smartphone technologies in the last 5-6 years. Phones have gone to something you talk with to computing devices in your pocket that largely out-perform a full-blown high-end PC of 8-10 years ago. Modern smartphones already display HD content, play games that used to require a $400 graphics card and contain more data than ever.
With this in mind, and progress in this space accelerating, Microsoft will want to bring technologies like Silverlight and WPF to the phone. They’ll want to enable users to view content streamed wirelessly as well as watch content protected with DRM to enable offline viewing during an agreed period.
These technologies are already built-in to Windows, but are missing from Windows CE. Porting these technologies to Windows CE is just too costly and too cumbersome. CE is a fine embedded OS but is NOT sufficient for the kinds of complexity thrown at modern-day connected devices.
So, in short (after a lengthy post), I believe porting Windows to ARM is perhaps the most important thing Microsoft will have done in over 10 years. Doing so enables mobile and tablet entire scenarios that were just not possible with today’s embedded Windows CE kernel and OS. And, yes, there’s NOTHING to stop the already finely tuned and thoroughly tested Windows kernel operating beautifully on modern ARM chips.
Will any of this come to pass? Will Microsoft finally standardize its embedded, integrated, desktop and server OS’ upon a common kernel & OS? We’ll just have to wait and see how this story unfolds!
Just be sure to revisit regularly as I’ll be keeping a very close eye on this story and reporting what I find