So it has been a few months since MIX and the announcement of the availability of developer tools for the Windows Phone 7 platform, and I have managed to put on at least one presentation about the upcoming Windows Phone 7. With the target of shipping in time for Holiday 2010, I feel it isn’t an unreasonable assumption to believe that the phone will probably start to surface in October / November of this year, which is only 4-5 months out. So, what are my thoughts so far?
Obviously, with the tools just at CTP-stage right now, room for improvement is to be expected. Silverlight as the primary platform for applications is a great thing, but hopefully we can move off of Silverlight 3 and onto Silverlight 4 before too long…because Microsoft is retaining control of the platform instead of letting the carriers control it (read – continue to royally screw it up), hopefully an update to the Silverlight runtime will follow before too long.
Developing against the emulator experience is nice, but lacking, and of course, we “mere mortals” don’t yet have access to real hardware. Most hardware services within the emulator are simply not available, making it challenging to pursue applications that take advantage of these services. Some solutions are available to simulate or mock the hardware input (using the Reactive extensions, etc.), but in my opinion these options put too much responsibility for anticipating the real-world hardware’s real-world behavior in developers’ hands – again many of whom have not yet had a chance to even touch a piece of real hardware. What’s more, most of the provided hardware interaction API’s expose concrete classes; for mocking and simulation, interfaces would have been better choices in my book, and would have involved fairly low overhead in the API design. Regardless, it would be nice if the emulator could provide pre-built facilities for simulating interaction with this hardware. For example:
The emulator should provide an emulator-adjacent window with an embedded Bing Maps control. The phone’s hosted virtual OS should have a hardware driver that uses the map’s coordinate values and updates instead of an actual GPS receiver. From a developer’s point of view, this would be preferable to any option that used the host PC’s GPS, as the software could be tested without taking the host machine literally “out for a drive.”
Another external device, the emulator’s accelerometer data should also be provided by an external UI. There are plenty of applications available today that provide interaction with a 3-d view of an item (I know I have used the one at ClosetMaid several times to help design the layout for closet storage in my own house), and such a UI would again be an interesting option for testing applications (without trying to physically rotate a development system.)
Other Hardware Devices
For most of the other hardware devices, the emulator application should provide access to the devices of that type on the host machine. Connection to a specific device should be available through options in the emulator’s host application (such as which web-cam to use of those available on the host machine, which microphone to use for input, etc. See Skype as a reference application for choosing these settings.)
Figure 1 – Conceptual Thoughts on Extending Hardware Emulation for the Phone
Obviously, this writeup has been more critical than complimentary. Just because QA people focus on reporting defects, doesn’t mean that don’t like or believe in the product they are working on…they just want it to be better. My intent here is the same. Having focused my development career (so far) on the Microsoft stack, and seeing that mobile/smartphone applications are going to continue to be more and more important as development targets, I am anxious and eager for Redmond to get this right. The readiness of useful, well-written applications in the phone Marketplace will be critical for the success of this platform (Microsoft is clearly aware of this – just look at the “Hey Windows Phone, I Need This App” contest.) The quality and completeness of the tools that we as developers have available will directly impact the quality and completeness of the applications that will make it to the Marketplace.