At the time of this writing the initial RTM version of WP7 is done and the developers will have their hands on the RTM development tools in a few days. The Windows Phone 7 developer tools are still being discovered by developers on a regular basis and many of them with Windows Mobile experience have questions as to why their Windows Mobile expectations don’t carry forward to Windows Phone 7 that well and how Microsoft made the huge jump from Windows Mobile to Windows Phone 7. There’s a commonly repeated explanation that I often hear.
So the short version of the story goes like this:
One day Microsoft realized that in today’s competitive market Windows Mobile sucked so they made something completely unlike Windows Mobile and called it Windows Phone 7. The end.
If some one that had questions read that it would leave them having more questions than they started with. Unfortunately I’ve never seen any complete stories on how Microsoft made the huge leap from Windows Mobile to Windows Phone. So I’ve tried to assemble the story to the best of my ability. I've had to leave out a lot of details that I would much rather share. But for the sake of not making this entry any long than it is I've left them out.
Windows Embedded CE
Let’s go back 13 years to 1996. Microsoft made a trimmed down version of it’s Windows Desktop operating system intended for use on devices. It was named Windows CE. Windows CE (aka Windows Embedded CE) was designed to run on low power hardware, multiple CPU architectures, and to be highly customizable for various hardware designs. There have been a few products that have broken off from Windows Embedded CE including an automotive edition of Windows CE (found in products such as the Ford Sync), Windows Mobile, and PMC. PMC is one of the less known Windows CE derived products. I’ll talk about that in just a moment…
Windows XP Media Center Edition
The evolution of the Windows Desktop also ties into Windows Phone 7 history. In 2002 Microsoft released a version of Windows XP that made the computer act as a media hub. The Media Center application packaged with this version of Windows XP used huge fonts that could be clearly read from a distance and clearly readable on televisions which at the time had pixel resolutions that were much lower than computer displays.
Portable Media Center
A year later Microsoft announced PMC, or Portable Media Center. PMC was a Windows Embedded CE derived operating system for making media centric devices. It had an interface similar to what was used in Windows Media Center. A PMC device could play videos that were recorded on Media Center PCs (the computer would transcode video while syncing it). The operating system was supported until 2007 when Microsoft announced the end of the product. One of the most notable implementations of hardware that ran PMC was the Toshiba Gigabeat.
Zune and Zune HD
Microsoft and Toshiba worked together and took the design of the Gigabeat S to create another media-centric device that was given the name Zune before its public release. The device featured a user interface that also used large easily readable fonts. Microsoft also created an online music store for the device that was branded as the Zune Marketplace. The Zune Marketplace could be accessed through the Zune Desktop software which sported an interface that had a style similar to that of the device. By the release of the fourth version of the desktop software the desktop interface was given a clean minimalistic look. The most recent version of the Zune hardware (named the Zune HD) was a total redesign of the device and has a four point multitouch screen, solid state storage, and an HD FM radio.
The Xbox 360 (the second version of Microsoft’s home video game console) was launched in 2005. In addition to playing video games the Xbox 360 could act as a Media Center Extender; it could play content from a Media Center PC that is on the same network. In late 2008 the Xbox 360 received a user interface that looked to be inspired by the same style used in the Zune and Media Center. With later updates to the Xbox Live service the Xbox could play videos that a user had purchased through the Zune marketplace.
During the first quarter of 2006 Microsoft released the first version of the XNA framework. The XNA framework was a .Net based SDK that allowed independent and hobby developers to write software for their Xbox 360. Developers could create XNA based applications for their home PCs for free (the development tools didn’t cost anything). However, to deploy their programs to the Xbox 360 registration and a subscription fee was required. For the price of 99 USD per year a developer could deploy his or her programs and make them available for sell through the Xbox Live Marketplace. Being a closed consumer oriented device the XNA framework does not expose the underlying native APIs of the Xbox 360. Version 3.0 of the software included the ability to use the 2D features of XNA on the original Zune. With version 3.1 support for the Zune HD was added along with a class to interact with the accelerometer and another to interact with 4-point multi-touch.
While Microsoft was working on Vista one of the technologies it created was called WPF. WPF used a retain mode graphics engine and supported declarative interfaces. A lighter weight version of WPF was also developed named WPF/E which stood for WPF Everywhere. WPF/E was designed to be light weight, supported on multiply operating systems, safe, and to give developers a tool with which to create common experiences across those operating systems. By it’s release WPF/E was given the name “Silverlight.” The initial versions of Silverlight were for making rich internet applications and experiences. Silverlight versions 1 and 2 ran within a browser. Silverlight 3 received new features that allowed iSilverlight based applications to run outside the browser as standalone applications. At the time of this writing Silverlight 4 is the most recent version, but for the sake of Windows Phone 7 as it stands now only up to version 3 should be considered. Up to version 3 Silverlight does not make the underlying native APIs available to the developer. The Silverlight runtime also doesn’t expose the physical file system. Instead it makes a logical file system available to Silverlight applications without indicating the location in which the logical file system is stored.
The one contributing technology of Windows Phone that I’ve not spoken on much is Windows Mobile. I mentioned earlier that Windows Mobile was derived from Windows Embedded CE. Like Windows CE, Windows Mobile was designed to be adaptable to different hardware designs. Unlike the desktop there’s no such a thing as a generic version of Windows Mobile. Every Windows Mobile build has been customized by an OEM for their hardware design. There was a great amount of hardware variation over which Windows Mobile could run. It could run with a number of different resolutions, different amounts of memory, different graphic capabilities, different computational capabilities, and different OEMs extended it in their own way to support features that were not originally supported in the operating system such as front facing cameras and accelerometer. But the customizable features of Windows Mobile also had some drawbacks. Since every build of Windows Mobile was customized new builds were never available directly from Microsoft. Instead Microsoft released updates to the OEM and the OEM and carriers would decide whether or not to make those updates available to the user. In most cases a user would never see more than one update for their device. Beyond that there were no supported upgrade paths for the device. If the user wanted a newer version of the OS a newer hardware purchase was needed. The variance in hardware designs also meant there would be a variance in user experiences. The challenges were also present for the developer too. A developer could choose between supporting a subset of available Windows Mobile devices or putting out extra effort to make their program compatible with the different variations. In the mean time two other major operating systems were providing much longer upgrade paths for their users (Google’s Android and Apple’s iOS) along with a centralized way for finding applications.
Windows Marketplace for Mobile
To address purchasing and selling applications Microsoft created the Windows Marketplace for Mobile. The Marketplace opened in October of 2009. Additionally every Windows Mobile 6.5 device sold included a boot-strapper to install the Marketplace client. For the operating system Microsoft had initially started to make an updated version of the Windows Mobile operating system but ultimately decided this wouldn’t do, they needed something entirely different. So the project was scrapped and they started from square one.
Bringing it All Together
Rather than reinvent the wheel Microsoft made two technologies the core technologies that developers would use to develop against their new mobile operating system; XNA and Silverlight. To address the variance in user experiences that could be found in Windows Mobile Microsoft also will ensure that hardware design falls within their guidelines. The guidelines include minimal requirements for memory, processor and graphics capability, defined supported resolutions, defines the buttons that will be available, and more. Microsoft will be releasing the OS updates directly to the user themselves. For managing the device’s media and applications form the desktop the phones will use the Zune desktop software. Like the Xbox the development tools for the Zune are free but require registration. Like the Xbox 360 the native underlying APIs are not exposed to third party developers. Certain authorized publishers are also granted access to the Xbox Live APIs so that Windows Phone Games can publish achievements.
Juxtaposed to the history of PMC, Zune, XNA, the Xbox, and Silverlight I have to say that Windows Phone 7 doesn’t look to be as much as a spontaneous leap from one design to another as much as a well thought out combination of proven technologies.