As I was getting ready this morning, I started thinking about the technical hurdles that the Windows Phone SDK team must have around Windows 8. I wonder if we’re going to see a phone (or at least a virtual machine) running on the Windows 8 kernel sooner than we think.
This whole idea has the shape of an episode of Connections with James Burke. Anyone else watch that show growing up? Well, if you didn’t, James Burke starts out the episode with one little piece of an idea in science and going from random connection to random connection, he ends up someplace else. I’m going to start with my the Windows Phone 7 SDK and end up predicting the Windows 8 kernel.
Lately, as I’ve been creating training content for TFS2012 and VS2012, I’ve been moving more stuff on to Windows 8. The only stuff that really can’t move to that platform is my development environment for Windows Phone 7 (WP7). That WP7 environment has been a PITA since the beginning because it *has to* run on a “bare metal” operating system. The WP7 tools can’t run on a virtual machine because — (drumroll) — the WP7 Emulator is a virtual machine. If you can’t run a VM inside a VM then you can’t run the WP7 SDK in a VM.
This is a total drag for me because my primary machine is a Windows 2008 R2 Hyper-V host. Why is this a drag? Why not just install the WP7 SDK on the “host” OS. Well, because when you install the Hyper-V role, the host OS actually becomes virtualized. (Pretty cool, huh?) The hypervisor get inserted *under* the host OS and now everything on the box runs as a virtualized instance inside of the Hyper-V hypervisor. So, if I try to install the WP7 SDK on this machine, it literally BSOD’s the box. No can do.
Recently, I’ve started work to completely re-write my NPR Listener app for WP7. I wanted to use the Visual Studio 2012 (aka. “Visual Studio 11”) beta for this. Unfortunately, no WP7 SDK for Visual Studio 2012 or Windows 8. I was thinking about why Microsoft hasn’t released the SDK yet and hasn’t even hinted at a release date for the SDK and it occurred to me that the new Windows 8 Desktop Hyper-V feature might be cramping the team’s style.
Think about the problem for a second. The current WP7 SDK runs in it’s own flavor of VM. It’s not a Hyper-V VM — it’s the WP7 emulator. This makes sense to me because Hyper-V emulates an x86 and x64 processor like what you’d see on a laptop or a server for running Windows or Linux. The WP7 emulator has to simulate a different environment for something like a Snapdragon processor for running the Windows CE kernel. Totally not the same thing.
Now, thinking about the technical hurdles that the team would face for getting the Windows Phone 7 emulator running on Windows 8, it gets kinda nasty. They’re either going to preserve the restriction that you can’t be virtualized (aka. no Windows 8 Desktop Hyper-V if you want to develop for WP7) — OR — they’re going to have to figure out how to get that emulator running inside of a Hyper-V VM. Remember — even the host OS in Hyper-V is a virtual machine. Thinking about the likely developers of Windows Phone apps, they’re probably not only interested in Windows Phone dev but they’re probably doing a lot of other stuff. They’ve probably got pretty decent hardware, too and probably a good percentage of them will be using the Hyper-V Desktop role to play with all the server VMs that Microsoft is serving up lately. (Gotta keep your skillz sharp, right?)
So, is Microsoft really going to stomp on that developer’s joy and say “no Hyper-V for you”? Feels unlikely to me. It’s a monster of a “dissatisfier” and it complicates the SDK requirements because now they can’t just say “Windows 7 or Windows 8” in the pre-requisites. They’d have to explain the architecture of Hyper-V virtualization while they tell you about installing their SDK. Sounds confusing.
If you believe the rumors that the next version of Windows Phone is going to use the MinWin kernel (aka. the same kernel as the rest of Windows 8) and that Apollo will drop in 2012, this starts to get hairy for planning and makes me start thinking about muda (waste). If I’m on the team and I’m the Product Owner trying to optimize usage of developer resources, getting that emulator VM working inside Hyper-V when I’m going to be able to host that same OS inside of a Hyper-V VM soon is a complete waste. The team would spend a bunch of time working on it, it launches, and has a lifespan that’s less than probably 9 months. Total waste of time.
My predictions: the version of the Windows Phone SDK that will run in Visual Studio 2012 and Windows 8 will have a Hyper-V-based emulator and the OS that runs inside that emulator will use the Windows 8 kernel. Basically, that emulator is going to run some version of the Apollo OS. I’ll bet that Apollo is coming sooner than we think.
(shrug) But who knows. This is just me thinking about stuff while I brushed my teeth. I could be completely out of my mind. What do you think?