Having for years used Nokia phones, lately S60 phones of various generations, with a fair amount of experience of the iPhone/iPod Touch OS and lately having used both the Nokia N900 (Maemo OS) and the Google Nexus One (Android) devices as well, I can't avoid comparing these together. As a developer, I'm not really that interested in what they look like today, because today's devices are not what a developer needs to target for applications - rather, what can one determine of the platforms' future from looking at their past?

I can't make any comparisons to the Palm Pre (WebOS), Windows Mobile or Blackberry devices, since I have no first-hand experience of any of them. However, of the four platforms I know to some degree, not only is iPhone still clearly in the lead, but it looks to have the most predictable future as well. iPhone OS 3.1 no longer misses any significant functionality and has gained all the important bits without giving in on the level of platform polish, and the application market is humongous. Its only real weakness is the draconian control Apple enforces, and the crazy restrictions that results in. Those issues are well documented by a recent EFF post outlining the contents of the iPhone developer program contract.

The imminent launch of iPad is the first time the platform starts to experience any kind of real fragmentation in terms of a application development target. At this point that fragmentation looks like to be minimal - with the iPhone, iPod Touch and iPad all sharing the same OS, same UI, practically same inputs and outputs and differing only by what networks are available for communication and what size the screen is, developers are not going to have a hard time at all in developing for all three devices.

That is quite unlike the situation on the other three platforms (Symbian, Android, Maemo). The fragmentation of the Symbian market is a matter of some notoriety. Basically, the same app will not work on phone models launched 9 months apart, or sometimes even on simultaneously launched devices, due to differences in the OS, let alone differences in the form factor, screen size, input mechanisms, and so on. With already two major revisions announced, this trend is only going to continue, and the base OS is already nearing 15 years old, if traced back to the first 32 bit EPOC it evolved from, though I believe the first S60 UI version came out in 2002.

Android is beginning to suffer from the same disease. Not only are the devices on the market each a running different base OS version with different features available to applications, but nearly all of them are also customized by their manufacturers or network carriers with little regard to compatibility (nor in fact could they have any regard for it, since none of them have any previous experience maintaining a platform). And of course each one has a different form factor. However, the most surprising feature of the platform (as a recent Nexus One user) is that even though Android is barely two years old, it already carries with itself a legacy of inconsistent UI controls. What exactly does one do with an indirect-control pointing device (a trackball) on a device capable of direct control via both a touchscreen and motion sensors? Why are the built-in applications (never mind those available on the Android Market) full of menus, "select an object and execute a function on it via a separate control" type UIs clearly inheriting baggage from the decade before touch screens, and other clunky hacks, when there's a rich base to copy from in the iPhone UI design library of 150,000 applications?

So, what about Maemo? I bought a few years ago the very first Maemo device, the N770 Internet Tablet. I've seen and played with every device since. All of them up to the N900 carried the same "windows and menus" baggage Android is suffering from, but the refreshed UI in N900 got rid of most of that. Not entirely so, but enough that I can state with confidence that the N900 UI is more modern, more designed for the touch screen than Android is. However, Maemo's weakness is that of a platform - there's none. Every version of the OS thus far (five iterations on the market) has broken compatibility with the previous. Now, that's to be expected and somewhat forgivable as long as it's in developers-only mode, essentially being beta tested. It's hard to call N900 a beta test any longer. What's worse, is that Nokia has publicly stated that the next device, whatever it's name, and regardless of whether its OS is called Maemo 6 or MeeGo whatever, is also going to be incompatible with the current one, and applications will require a re-write. This is no way to build a developer base.

So, what do we have to look towards to as application developers, trying to figure out what platform to target when working on our next mobile applications?

iPhone, a consistent, easy to use platform with a stable technical roadmap and little legacy baggage, but saddled with an unpredictable owner who's just as likely to deny you from doing business at all than to support you in it?

Symbian, full of legacy, and with a refreshed, incompatible platform to launch maybe next year?

Android, fast-growing, but already full of clunky hacks, and fragmenting faster than than anyone's seen before?

Or Maemo, approaching a state of polish but unable to maintain direction for the length of one device cycle?

I think we're all going to miss the days of Java mobile games development before this is over.