Tech —

Windows Phone 8 review: Microsoft lays a foundation for success

But is there room for another mobile OS in a world ruled by Android and iOS?

Programmability

The other thing that the new kernel brings is a new set of APIs. Windows Phone 8 is actually a bit of a hybrid; it uses some of the new technology from Windows 8, including pieces of WinRT. In other areas it continues to use Windows Phone 7's software stack, making it not quite like Windows Phone 7—but not quite like Windows 8 either.

Windows Phone 7 apps all use .NET managed code. Instead of being executables that run directly on the ARM processor, they're distributed as bytecode that gets run in a kind of virtual machine. There are two APIs in use, a version of Silverlight for regular apps and XNA for 3D games.

Almost all existing Windows Phone 7 apps and games should continue to run on Windows Phone 8, unaltered. A few won't, however. A small number of Windows Phone 7 programs were given special permission to use native ARM code instead of .NET for certain tasks. The Windows Phone 7 Skype app, for example, used native code (most likely for its audio and video compression algorithms), as does Nokia's Counter app (because it needs to use APIs that don't exist in Silverlight) and Spotify. Updated apps should fix these problems, given time.

Developers of new apps have two options. They can continue to use the Windows Phone 7 APIs, or they can use the new Windows Phone 8 APIs. Using the version 7 APIs means that you can target users of both the old platform and the new one, but it also means that you have no access to any of the new capabilities of the platform.

If you want to do new things, you need to use the new version 8 APIs. For regular apps, these are reasonably similar to Windows Phone 7's APIs; it's basically Silverlight, and porting from Windows Phone 7 should be pretty easy. For games, however, there's a big change. Instead of .NET code and XNA, developers now have to use C++ and Direct3D. There are also some provisions to mix and match; Silverlight apps can also use C++ components if it's useful or necessary to do so.

There's basically no migration path from XNA to Direct3D, meaning that any developer who wants to extend their version 7 game to take advantage of version 8 features has to rewrite the entire thing from scratch. The flip side is that it's going to be easier to port Direct3D game engines to the phone platform. This is a highly disruptive change, and it's difficult to see how it was necessary. XNA is still present on Windows Phone 8—it's used to run version 7 games—it's just off-limits for new apps.

Multitasking

Microsoft's change might lead developers to stick to Windows Phone 7's APIs, but here are some reasons why they might not want to. Windows Phone 8 has better multitasking and background capabilities. 7.5 introduced limited kinds of multitasking and fast app switching, but it had two notable omissions: VoIP and turn-by-turn directions.

VoIP applications need to be able to keep network connections open even when the app is in the background, so they can respond to incoming messages and calls. This wasn't possible on the old platform. It is now.

Turn-by-turn applications were similarly disadvantaged. They need to be able to track your location even when in the background and, when necessary, speak directions to you. In Windows Phone 7.5 that wasn't possible. Again, it is now.

Turn-by-turn is the simpler of the two. Apps that are location-dependent tell the system that they need to run in the background, and they can. There are some small pieces of integration, too; the maps app can launch a turn-by-turn app so you can find a location in Maps and get directions in your turn-by-turn app.

VoIP is more complex. With the new VoIP APIs, VoIP apps can run little background agents to enable them to receive calls even when the main app isn't running. They also integrate with the operating system so that inbound calls use the standard user interface to let you accept or reject the call.

It's all well and good in principle, but it's difficult to assess how well this works in practice. There is a Skype app "preview" that's meant to take advantage of the new APIs, but it hasn't worked well for me. It takes 40 or more seconds to notice that there's an inbound call, if it even notices at all, and accepting the call takes several seconds to start the Skype UI. I know from Twitter that the app is working acceptably well for other people; I also know from Twitter that my problems are not unique. I hope that these are Skype issues rather than platform issues.

The stuff that's still not there

Windows Phone 8 is solid and attractive, and it works well. There are still a few gaps here and there, though, ones that will continue to cause problems for Microsoft until they're fixed.

For a start, there's the whole app problem. Yes, the Windows Phone Store has lots of apps—more than 100,000. The raw number is fine, but it's also beside the point. It's not the number that matters, it's the apps themselves. Microsoft has certainly made great strides here. The store is moving in the right direction, but there are still critical gaps. The company says that of the top 50 smartphone apps, Windows Phone has 46. The missing four are Instagram, Pinterest, Voxer, and Wells Fargo's banking application.

The fourth in that list points at a much broader set of omissions. Visit your local Starbucks and there's probably an ad somewhere for the Starbucks app. The brick-and-mortar store promotes the use of an app to pay for your purchases and track your rewards. The app is available for iOS and Android—but not Windows Phone. This does two things: it means that non-Windows Phone users have less awareness that Windows Phone exists, and it means that Windows Phone users are left out.

It doesn't even matter if many of these apps see relatively low levels of usage; there's a perception issue that's important. For Windows Phone to not even be listed, not even be an option, is a huge problem. Filling this gap in particular is, I think, Microsoft's key app challenge.

The other big omission that will be particularly noticeable by iOS and Android users is that there's no kind of notification center for viewing historic notifications. How big a deal this is in practice, I'm not sure. Live Tiles do a lot of the work that a notification center would do, as they can be used to provide persistent indications of activity. On Android, the main thing I do with the notification center is hit "dismiss all" because otherwise my status bar just looks like a mess, so I personally find the Live Tile approach much neater. That's not to say it's completely without value—a notification center would let you look at notifications for apps that you don't have pinned, for example—just that it's nonessential to the Windows Phone model.

Nonetheless, a notification center is probably required, even if it's only to make iOS and Android users feel comfortable. Microsoft has said that it didn't have time to craft one for this release, which implies that it's coming eventually. There's no indication of when, however.

Another feature that would be nice to see (to match comparable capabilities on the iPhone) is integrated DLNA support, to allow streaming media over the local network. There are various OEM-specific apps that do this, but it's the kind of thing that should be built in.