Re-imagining the Windows Phone Platform
In the fall of 2008, our Operating Systems Group was participating in the Menlo project to explore new phone-related experiences. At the time, Windows Phone 7 was in early development using the Windows CE kernel and .NET Compact Framework. We had been experimenting with these “legacy” platform components for over a year. While they performed well, we were frustrated by their lack of compatibility with the Windows NT system and .NET Framework Common Language Runtime (CLR) used on PCs. We realized the time had come for a bold experiment: could we replace CE with NT and replace the Compact Framework with the CLR?
We undertook a skunkworks project, codename “Experiment 19”, to re-imagine the software platforms used by Windows Phone . We started from a Windows core (called MinWin) and a port of the Windows NT kernel to the ARM processor. Working closely with MinWin pioneers—Adam Glass, Mark Russinovich, Richard Pletcher, Richard Neves and Bryce Cogswell—and with partners at NVIDIA, we created the device drivers and firmware necessary to boot and run MinWin on our prototype phones. We created an ARM JIT compiler for the CLR and ported the CLR runtime to ARM. To complete the system, we ported the phone implementation of Silverlight to run with our ARM implementation of the CLR.
The resulting system proved that the “desktop” code bases actually performed better on modern phone hardware than the legacy mobile systems. Why? Because mobile chips now provide advanced features and capabilities, such as multiple cores, rivaling PCs of just a few years ago. The Windows NT and the CLR code bases had long since learned to exploit those capabilities to maximum benefit. With Experiment 19, we proved that Microsoft could build mobile devices using the desktop code bases (NT & the CLR). Within months, Microsoft began efforts to build the systems that would become Windows RT for ARM tablets and Window Phone 8.