Are mobile webapps really the future?
Written on 26.2.08
I can't think of a way to sugar coat this so let me jump straight to the point: I don't believe mobile applications are dead. The reason for this is that the alternative isn't much better and I don't think this will improve any time soon.
Michael wrote an obituary to mobile apps this weekend and although I somewhat agree with most of what he wrote I don't think mobile webapps will be an alternative anytime soon.
The diversity of platforms vs. the diversity of browsers
The top issue regarding mobile applications is the diversity of platforms. Name your pick between Symbian, Windows Mobile, J2ME and countless other less popular platforms and a couple of others that still haven't seen the light of day like Android or the iPhone (officially that is) but will surely continue to contribute to the mess.
Of these, the undisputed leader in popularity is J2ME, it being present in Symbian and Windows Mobile devices. But, the catch with J2ME is that, although it's present in the majority of phones currently on the market, it contributes a lot to the fragmentation that torments mobile developers with it's countless JSRs, few of which force a contribution to a better platform or solve small, but extremely annoying, problems. Honestly I blame this one on Sun. Sometimes I look at them and simply see a company that enjoys specifications and reference implementations quite a lot, leaving the task of solving problems to other people, never actually commiting to a decision. As long as the spec looks nice, they're OK with it. So we're back at square one, with J2ME under-delivering on it's promise.
On the other hand, there's a lot of buzz regarding mobile webapps. Developers are being lured to this with the promise of just having a single deployment to worry about. Except for the fact that the mobile web is just as broken, and getting worse by the day thanks to the commercial efforts of Novarra which appear to be a lot better than it's engineering. It's not uncommon to do content adaptation on the server side for different types of browsers, each with it's rendering quirks and host device limitations. So even with mobile webapps, you get to do a lot of leg work to provide the best experience possible. On top of that, you can't resort to small artifacts like AJAX to make your users awe in admiration. Couple that to the fact that you can't even upload stuff like photos or videos from the vast majority of mobile browsers and you get a web that's as dull as it was back in the day.
But, that will, eventually, change so they say. It's not uncommon to hear something along the lines of "you just wait another year and every phone will come with a top notch browser". Oh no it won't. You see, usually it takes a few years for the features present in top of the line mobile phones to pass on to lower end phones, if they ever do. This is based just on observation, therefore you can judge this a flawed theory, but I reckon it takes between 2-3 years, and millions of mobile phones later, to do so. So as much as WebKit-based browsers look great today, they won't be available to the vast majority of consumers until 2009, so I wouldn't bet on stuff like AJAX on mobile browsers to be ubiquitous anytime soon.
In the end, you just can't escape diversity on the mobile ecosystem. The only way to get something to your users is by learning to live with it now and be really smart with your options while having the conscience that every decision you make has it's downside.
The powerful grip of Mobile Network Operators
Or the quest for a single certificate that fits all networks and phones.
This is another big obstacle in the way of 3rd-parties. Even when you're able to work around the issues of diversity you'll run into problems regarding getting your application certified to run on different mobile networks and different handsets. From what I've read it's worse in the US than in Europe but either way you have to work it out. Just having your app signed by Verisign doesn't necessarily mean your user won't be prompted to allow your application to access the camera, connect to your servers or simply installing on the handset. There are countless certification programs, ranging from Verisign and Thawte all the way to Java Verified and each MNO's certification program. If you choose to develop for the Symbian OS, you can count of putting the OS provider in the mix (unless this has changed in recent years).
I see the reason for a certification program, would you really want a rogue application shaving off your credit by sending hundreds of text messages on your behalf? But again I fail to understand why there isn't an industry-wide standard.
Once again, mobile web apps are touted as the silver bullet and again I don't completely agree. As I wrote earlier, you can't do much through a web browser. You can browse freely but you can't be a part of the social web in the same way you are through your PC's web browser. At least not yet, but soon you should be. The problem is that, in this case, the browser won't be a good gatekeeper. Let's say the popular browser(s) all expose an API, accessible via javascript if you will, to your contact list. Every website, good or bad, will have a shot at reading your contact list. Even if it shows a couple of warnings to the user, these will certainly be mostly ignored just as they are ignored on PC browsers. Mobile spam ahoy?
A possible (easiest?) solution for this is, you guessed it, certification. So if you want to access certain API's exposed by the browser your webapp must be "signed"; accessible via HTTPS where your certificate must have been signed by any trusted CA. And you can be as sure of this as much as the sun rising again tomorrow, the MNO's will have the last say on what certificates will be accepted by the browser.
For this though, I can understand the reason. When people get their phone bill they won't knock on your, 3rd-party app provider, door to find out why were they charged with X if they "didn't do anything special". They'll blast through the MNO's shop, pitchfork and torches, arguing they weren't warned about overbilling and demanding their money back. It's a tough spot to be in.
The really bad thing is when operators create barriers to 3rd-parties, because they want to channel people onto their own services, thus avoiding the bit-pipe syndrome by becoming a "content provider". Not the content you want, though, simply the content they allow. How condescending and monopolist is that?
I think now you can understand why I don't really believe in the mobile webapp silver bullet. At the end of the day, all your options require lots of tradeoffs.
Bonus: J2ME doesn't need to look bad
Another, although much smaller, issue is that of aesthetics. It's common belief that J2ME apps are ugly. I won't go much more into it, but I'll give you a couple of pointers so that you can see how much wrong you are by yourself:
- J2ME Polish is an UI toolkit that uses CSS-like styling. I've found it a bit limiting for what I need but pretty good otherwise.
- TWUIK's a product of TricastMedia. Seeing is believing so be sure to check out their videos.