The Problem with the Windows Phone SDK

Seeing the success of Apple's iOS (iPhones and iPads) and Google's Android (phones and tablets) over the last five years (the iPhone was introduced in 2007) Microsoft has been trying to react by first modifying and finally replacing its own much older mobile phone software.

I say "trying to react" because for years Microsoft simply didn't have a product that could compete in the same league as iOS and Android or even RIM's Blackberry and even now Microsoft seems to be unable to address the very audience it needs to convince of the validity of its platform: developers.

Mobile phone and tablet software developers use either PCs or Macs and on their PCs run either Windows or Linux or one in a virtual machine hosted by the other or on their Macs Mac OS X and Windows and/or Linux in a virtual machine hosted by Mac OS X.

Compare this list of Software Development Kits for the popular smartphone operating systems and their system requirements:

Google Android

  • Windows XP or later (x86), Windows Vista or later (x86 or x64)
  • Linux glibc 2.7 or later (x86 or x64)
  • Mac OS X 10.5 or later (x86 or x64)

Apple iOS

  • Mac OS X 10.7 or later

RIM Blackberry (SDK for Playbook and Blackberry 10)

  • Windows XP or later (no CPU architecture specified, I assume x86)
  • Linux (x86, requires x86 libs on x64)
  • Mac OS X 10.6 or later (no CPU architecture specified, I assume x86)

Microsoft's existing smartphone operating system SDK requires Microsoft Windows and Visual Studio running on x86.

I think we can safely establish that this is the world Microsoft is entering now. Smartphone software developers sit on Macs, either developing for iOS only or running Windows or Linux in a virtual machine to develop for Android as well, or they sit on PCs running Windows (and possibly Linux in a virtual machine) or Linux (and possibly Windows in a virtual machine) developing for Android.

Let's look at the system requirements for the new Windows Phone 8 SDK:

Microsoft Windows Phone 8 SDK

  • Windows 8 (x64 running on Hyper-V)

Microsoft's Windows phone emulator requires Hyper-V, Microsoft's "cloud operating system" (i.e. hypervisor).

Let's look again at the existing smartphone software developers:

  1. The iOS developer (running Mac OS X)
  2. The iOS developer who also develops for Android (running Mac OS X and Windows or Linux in a VM)
  3. The Android developer (running Windows or Linux, possibly in VMs)

Which of the three can Microsoft convince to download and install the Windows Phone 8 SDK?

1. The iOS developer

This guy cannot install the Windows SDK. The Hyper-V requirement makes it difficult (VMware) or impossible (Parallels and VirtualBox) to run the SDK in a virtual machine. Will an iOS developer buy a second development machine? I doubt it.

2. The iOS developer who also develops for Android

This guy cannot install the Windows SDK. The iOS SDK works on his Mac, the Android SDK works in a Linux or Windows VM. The Windows Phone SDK would require a second computer.

3. The Android developer

This guy might install the Windows SDK. Android developers on Linux cannot install the SDK because Hyper-V won't run in a VM. Android developers on Windows might consider running in Hyper-V and run their Linux VM, if they use one, in Hyper-V as well.

However, many of this group might not have administrator privileges on their corporate computers and cannot easily install Windows components, especially not Hyper-V.

It will be very difficult for Microsoft to convince casual developers, the very developers that were so important for Apple and Google to try out the Microsoft SDK and port their existing applications to Windows Phone 8.

Don't get me wrong, the Windows Phone 8 platform is excellent. It's a superset of a subset of the Windows RT API and a program that runs on Windows Phone 8, if written in C#, can easily be ported to Windows RT and Windows 8 and, via MonoDroid and MonoTouch, to Android and iOS.

The same C# codebase can be used to create applications for all Windows platforms, Xbox 360, iOS, Android, Linux (and Unix) and Mac OS X. Android and iOS do not offer such flexibility or as user-friendly an API as Microsoft's Windows and .NET runtimes.

But the Hyper-V requirement stopped me from trying out the Windows Phone SDK. The Windows 8 and Windows RT SDK does not have the requirement and I tried it out. It's excellent (and also allows development of "desktop applications" for Windows 7 and earlier using Windows Forms or Windows Presentation Foundationas well as native development for both the "modern GUI" and desktop Windows.

 © Andrew Brehm 2016