I recently had a nightmare. I had been called into the boardroom and told that we needed to make sure Product X would work in a mobile environment. That got me scrambling, asking what, exactly, was meant by "mobile environment," which features of X would really be needed in that environment, what the use cases were-you know, the usual stuff a development manager will say to cover his butt and buy himself some time.
In my nightmare, I quickly had to decide what kind of platform we would develop and make sure that we positioned ourselves for growth of the X product line in the years to come. In the light of day, the relevant questions center on target market segments, the installed customer base, a rich API, access to trained engineers and developers, and a comprehensive development ecosystem.;
Whatever X is (an office or business workflow application, a game or an app to track baby weight), it is important to realize that it will exist in multiple editions-such as an ultimate desktop edition, a Web-hosted version and a mobile device edition-all with potentially different slices of functionality. (In a more pleasant dream, they might all be derived from the same code base.)
Figure 1. The relative importance of mobile platforms used to run Facebook Mobile in late 2009.
Click on image to enlarge.
Though the market buzz currently centers on Android and iPhone, there are a few more platforms worth mentioning: Java Micro Edition as an overall platform (to some extent it overlaps with Android), Microsoft, Palm, BlackBerry, MeeGo and Adobe Flash Lite. I would also argue that Bada/HTML5 apps will have a piece of the action in the nearby future.
And since just about everyone (Android, Bada, iPhone, Maemo, MeeGo, Moblin, Palm) provides some kind of Unix-like OS for smartphones (and other portable stuff), we should not forget about plain, ordinary C/C++/Python/TK and the like-or about Posix application development, for that matter. (To get a feel for the relative importance of the various platforms, see Figure 1, which shows the results of a 2009 analysis by Dirty Aura of the platforms used to run Facebook Mobile.)
To develop for a mobile platform, I would want to have access to both development talent and a strong ecosystem (consultants, training, user groups, community, open-source libraries, code samples and so on).
My first sad realization was that Bada, BlackBerry, Brew and Palm (webOS) would require me to sign a quite restrictive nondisclosure/license agreement before I could even get my hands on the development documentation and software development kit. That might have flown a couple of years ago, but nowadays mobile applications are becoming mainstream, so a platform has scant chance of success without public visibility, scrutiny and coverage in independent textbooks and courses.
The restricted platforms' limited exposure in this article (a missed media opportunity) is just another example of the impact of restrictive licensing practices.