Monday, March 22, 2010

Windows Phone 7 - A party pack of sweets for developers

They are playing advertisements for Pascall's Party Pack on TV at the moment. The tag line is "All sweets you love, and one you can't stand." That pretty much sums up Windows Phone 7 for developers. Lots of goodness with a few things that may leave a bad taste in your mouth.

Despite the name, Windows Phone 7 Series is not a successor to Windows Mobile 6.x. Instead the name is a marketing nod towards Windows 7. Although both WP7 and WM6 are based on Windows CE, there is no resemblance at a higher level. From a user point of view, WP7 is closer to the iPhone than to WM6. A more accurate name would be Windows Phone 1.

After far too much time reading, watching and playing, here are my thoughts on WP7 as relates to development:

Tasty:
  • Development is done in c# and Silverlight/XNA. While native code would be nice, C# is easier to get into than Objective C. I haven't used either Silverlight or XNA previously but they look a lot more promising than the XP era Windows Forms used by Windows Mobile.
  • The tools are much better than those for the iPhone, and free
  • Push notifications look at lot easier to do than on the iPhone
  • Apparently xbox live integration is really good (I wouldn't know)
  • There are metric shitloads of tutorials, walk throughs and documentation (Twitter apps are the new hello world)
  • Games programming looks really, really nice

Meh:
  • The tools don't work well in virtual machines. You can make it work in a Win 7 32bit VM but it will run like a dog. The tools don't work at all in Win 7 x64. If you don't want to install onto your main system, you can try booting from a virtual hard drive.

Yuck:
  • No database support (apparently it's not necessary coz you have xml and the cloud). SQL Server CE is built into the rom, but no access is provided.
  • No multitasking (push notifications only)
  • No access to the file system. Application files all go into Isolated Storage in the app folder.
  • No "sideloading" of applications. Apps can only be installed from the Marketplace, or by Visual Studio
  • No built in file synchronisation (it's this cloud thing again).
  • No Silverlight support in Windows Mobile 6.x (but there is Silverlight for Symbian wtf) and no Win forms support in WP7. I.e. even if your win mobile app was written in c# it needs to be rewritten for WP7.
  • Limited APIs (no access to contacts, no sockets, ...)
  • No native code - no c, c++, pascal etc (and thus no firefox :()

I haven't felt this conflicted since the vfr 1200. Some nice things balanced by some not so nice.

As mentioned, so this is essentially version 1. Some of the issues are planned to be fixed after the initial release (copy/paste, database access).

Links

Microsoft
Windows Phone 7 tools
Code samples
Developer network
Mix10 videos (check out the keynote)
UI Guide

Silverlight
Get started in Silverlight
Get started with Silverlight in WM7

Example apps
Twitter client
Another twitter client (Scott Gu)
Labyrinth
Sqlite database

Blogs
Artificial Ignorance
10rem
Mobile development

6 comments:

Jan Derk said...

Android is quite a bit more attractive as it solves most negatives of Windows Phone 7 development.

It has multi-tasking, runs wherever Eclipse runs, has native SQLite database support and allows you to run native code.

The moral issue I don't like about IPhone and WP7 development is that there are two kinds of applications: Apple/Microsoft ones and the rest of the world who are not allowed to run in the background/natively.

With Android you can do as you please.

Sean said...

I spent a fair amount of time yesterday playing with an android phone, the nexus 1. It's quite nice.

From a user point of view, I dislike the locking down of (and general dumbing down) phones such as the iPhone and wp7.

I don't know which way I will jump yet.

Lars Fosdal said...

One of the few benefits of the locked down appstores, is that the chance that apps you download contain malware, is fairly low.

About the WP7 tools: The inability to run well in a VM is really strange. I mean, if you can run other VMs inside their own VMs - why not this one? That said - writing WP7 apps is almost too easy. There will be a flood of junkware.

Sean said...

@Lars
The problem is that the emulator needs directx 10 to run well. The vms I have used only support dx9.

There is an additional problem with Win7x64 causing the emulator to hang in a vm.

LDS said...

I see they got the same BorCodeDero road to ape whatever the "other ones" made instead of pursuing their own road. It looks that smarphones instead of becoming PC little siblings are going to be "dumbphones", candy shops for lusers with little more to do than using faceboog and some games.
It looks I will return to plain phones, as long as smartphones turn into dumbphones. A netbook or the like will fill the lacking capabilities.

Ron said...

I don't see anything to be conflicted about. That's a seriously lame feature set. No local DB makes me wonder why you'd ever write anything but a web app to reach this device. There's a few other things on your "yuck" list that I find astonishing as well. I mean seriously, you can't get to the contacts? Is that for real? I've done no research on this so I can only go off what you say. But that's beyond lame if it's indeed true.

In any case, as a business app developer I haven't seen a scenario where I thought it wise to waste development costs on phone specific software. Perhaps organizations others deal with can enforce the same kind of phone on everyone, but I haven't seen one yet. My last full time employer had people with iPhones, Blackberry, Palm. And if I went back today I'm almost 100% certain I'd find some Droids. I couldn't imagine writing anything other than a mobile web app for them or anyone I've dealt with since.