« In Vancouver | Main | Union v. Charter »

Super-OS Layers for Mobile Devices

In a recent exchange on the unwired mailing list, Tom Hume wrote:

With the advent of licensed "reference designs" like Nokia's Series 60, isn't the underlying OS less important than ever?
I replied:
I couldn't agree more with this. Honestly, device OSes are yesterday's battles. They all do pretty much the same things. They all cost money (to Microsoft, Sun, PalmSource, Symbian, a Linux integrator, or your own Linux team). The interesting battles are going to be in the software layers above the OS. We've only just begun to scratch the surface of what we can build in terms of collaborative mobile applications, and there are fortunes to be made in providing those capabilities.

Arguments over OS-level APIs aren't quite as tired as arguments over big-endian versus little-endian byte order, but they're close.

In reply, David Enzer wrote:


Building applications in these handsets even where they support a standard is a major undertaking and time commitment. They all use different code, dsp's and mcu's... getting them to run in real time -- always -- takes a lot of dough and engineering strength.

I answered:

It seems obvious to me that, for the foreseeable future, there will be no clear winner in mobile OSes. Java, Palm OS, Windows for Mobile, Symbian, BREW, Linux, and some others I'm probably forgetting will all have meaningful market shares. The reality is that application developers are going to have to live with a highly fragmented mobile platform for years to come. So does it matter whether Carrier A says it will support OS 1, or whether Carrier B says it will support OS 2? No, it doesn't.

The absence of a single dominnant mobile OS means that super-OS layers will take on even more importance. If, for example, one is building an application for mobile collaboration, then a software layer supporting that, running on a wide variety of mobile OSes, suddenly becomes quite important -- more important, I would argue, than how one draws to the screen or manages memory.

I don't mean to understate the difficulty of making mobile applications really sing. Before switching focus, our company spent over a year working on a mobile client-server-based imaging solution. I know how much work it was to get it to feel right in the user's hands. But we didn't spend a lot of time worrying about OSes -- we picked the two OSes that were right for us, abstracted as much as we could, and built multi-platform from the start (because, as a friend once said, there's no such thing as portable code, only code that has been ported).

It bears repeating: in the mobile device world, super-OS layers will take on increasing importance. From a developer's perspective, the mobile device market isn't just fragmented, it's a sorry mess. We have at least six major OSes and virtually as many provisioning services as there are carriers. Unless the consolidation fairy comes along and waves her magic wand, we (in the US, at least) will be living with this for years to come. Therefore, abstraction layers focused on high-value interactions are where the action will be -- mark my words.


TrackBack URL for this entry:

Post a comment