There are a bunch of great decks posted from the Future of Mobile event. Andrea’s slides on The Truth about Mobile Web Development Standards in particular caught my attention. These two points from slide 8 I really like:
- Standards should provide a direction, tools help build applications
- Standards should provide interoperability, fragmentation is not good for anyone
One of the problems that keeps cropping up in developing for mobile devices, particularly web development for mobile devices, is how to provide for different levels of device capability. The first layer of tools needed is a repository of information about which devices support what capabilities and exhibit which quirks. It’s hard to get there at times though, because the average developer isn’t really interested in what the details of mobile devices are. They’re interested in seeing their application work across a variety of handsets.
That’s where stuff like abstraction libraries come in, such as the WALL library that Luca has been working on. It changes the level of abstraction that the developer works at and covers over rendering details. There’s also effort being put into this at the W3C, through the Device Description Working Group in particular.
The mobile arena hasn’t really hit the right stride yet however. If I take a look at AJAX on the wired web as an example, I think there are some strong parallels. The idea of using asynchronous calls and DHTML within a web browser to create applications certainly wasn’t new. But once some common libraries like prototype.js, Dojo, and YUI came in to provide the right kinds of abstractions and cover over cross-browser issues the technique really gained a lot of momentum.
I haven’t really seen the same kind of thing happen on the mobile end however. Is it because there isn’t as much of a standard base to build on? Are there too many mobile browsers and platform differences to be able to come up with a common set? Are the intentions of developers and users just too varied at this point to be able to come up with a common abstraction?
I’ve seen very few mobile applications that really adapt to different degrees of browser capability very well. Generally the ones that adapt do so in a distinct high capability/low capability versions of the site, instead of feature by feature adaptation. And even more frequently I find folks developing to the lowest common denominator, which from a user interaction standpoint tends to make better situated apps anyway.
If I could magic up any one particular library/tool for mobile developers to use it would be something that helps deliver the lowest common denominator and provide some real base level functions that work across all devices and carrier networks. Stuff like making sure you send back a content type that is going to be understood by the device, how to probe to see if cookies are supported (which is not a device specific thing, it’s a device and carrier network/gateway together issue), how to render a form that will actually work on all phones, etc.
The points from Andrea’s slides help somewhat to define the line between what should be part of a standard, and what should be part of the toolset. It’s a part of the discussion that I think is particularly relevant right now in the evolution of mobile web development. Right now I think standards across mobile are pretty atrocious, so we have to leave a lot up to the tools. But that doesn’t have to be the case going forward if someone can get a hold of the standards (defacto or formal, I don’t really care) across the board.