With AppNation wrapping up earlier this week and Mobile 2.0 happening next week I’ve been thinking a lot more about industry level shifts in mobile. Normally I’m heads down in some bit of server code lately, so it is relatively infrequently that I pop up and genuinely take a look around. One thing I was surprised to see is that whenever I talk about mobile apps it’s assumed that that discussion applies only to natively coded platform-specific applications. Definitely not the case.
In my opinion there are two major factors from the mobile web side that are pulling “web apps” into the broader discussion of applications. The first is offline web applications, which provides a way to specify a set of files that should be downloaded and cached locally so that the browser can continue to serve up the application even if the underlying system is offline. Besides the obvious benefit of being able to operate when the system is disconnected this also commonly means that the web application is given some kind of “desktop presence”. On iPhone I’m seeing more apps that lead the user through the process when they first connect to the app that results in an offline app with an icon in the launcher. This was one of the issues that most expected was hindering the mobile web, getting users to return to your app even if they liked it. I haven’t seen the same thing in practice as often on Android devices, but the common frameworks seem to be working on abstracting out this pattern across device types. I expect to see it a lot more. Having a manifest file that lists all the necessary resources also explicitly draws boundaries around your application. Sure, it’s still a web app built on HTML/CSS/JS, but it’s also in a very real sense also “shipped software”.
The other big factor is the single page web application pattern that seems to be gaining popularity. The entry point into the application is a static chunk of resources which dynamically loads the info necessary to present the app. It’s a shift from the content of the pages being the primary organizing principle the the functionality of the app being first and foremost. Organizing in this fashion actually complements the offline functionality quite well. However it presents a few issues too. It requires a few acrobatics to make sure the application functions in the absence of some of the functionality, and to ensure that users can bookmark pages sensibly and search engines have some kind of content to grab onto. I’m also not exactly sure yet how something like rearranging content around a simple layout and progressively enhancing would lie together with the single page app ideas. Seems like they would complement well, but we’re raising the bar pretty high at this point for web devs.
No matter how you slice it though, it’s pretty obvious to me at least that the conversation around applications isn’t just restricted to native dev. It isn’t even restricted to mobile. The granularity and structure of the resources being served up by all the web servers out there is starting to shift. Folks responsible for finding relevant info from the mass of data have started to pay attention to “the appiffication of the web” both on the desktop and mobile sides. I think right now we have a grab bag of techniques and some relatively new technologies that allow some of the bleeding edge folks to put together some really compelling apps on the mobile web. But I have no doubt that in short time all this stuff will be wrapped up and properly abstracted so that writing functional, fast, delightful web applications for mobile devices will be within the reach of most developers. And for the most part we’ll forget that we even passed through another era of native apps on the way to the mobile web.