Everywhere in the software development world today you hear about mobile apps. iPhone, iPad, Android, Symbian, even old J2ME. More and more on-handset applications available, 100,000, 250,000, growing and growing, from GrandTheftTrademark LXXVIII to 2 Gerbils, 1 Cup. It's almost as if the mobile web has ceased to exist, after all, WML is all but dead, and with the customizations needed to get XHTML to display properly on all devices you might as well be writing a custom app for each one.
But don't be deceived. Mobile apps are dead.
We've seen this story before. Desktop apps were all the rage once. Instead of connecting to a mainframe and getting your thin slice of time, or even worse waiting for your batch job to get scheduled, you could run on your own machine at your own speed. Freedom. And yet, day by day desktop apps are being replicated on the web. Sometimes better than what was there before. Increasingly they are replacing desktop apps altogether. Personally, I've seen the desktop apps I use fall one by one as more and more migrate to, or are subsumed by, web apps.
Mobile is following the same trend and in the Kurzweil Accelerando sense, this will all happen much faster than it did with desktops.
The reasons are many but the concept is simple: programmer motivation. Anyone who has written mobile apps knows what a pain in the ass it is. Not only do we often have to deal with out-of-date paradigms - Objective-C, J2ME - we get stuck in the need to customize the app for virtually every handset to provide a good user experience. The whole process is obese with process and, most importantly, it isn't fun. Testing and debugging also present special problems. And don't even get me started about the installed base, compatible versions, migration. You end up spending most of your time getting the app to work right on the Samsung Hentai-XXX1007i that the executive who approved the project has, instead of making cool new stuff. It's a situation worse, far worse, than when we just had to provide Windows, Mac, and sometimes Unix apps.
Enter the mobile web app. iPhone was the breakthrough for mobile apps, true, but just as much it was the breakthrough for the mobile web. It was the first real browser that could run many web sites, in fact one of the reasons I purchased it when it first came out was it was the only phone that could access my secured network monitoring web app. Now just about every new phone coming out has a decent browser. And not just the old limited mobile browser, but ones that can carry their weight in javascript, css, and with decent speed. With HTML5 with Canvas, with WebGL, with WebSockets, there's a huge amount you can do you could never do before on the web. Personally I've been switching several apps I used to use on the iPhone and iPad to their mobile versions, because they are faster, updated constantly, less crash prone, and more featureful. It's getting better all the time - and at an accelerating rate.
Mobile browsers are approaching parity with their desktop cousins. The same can be said with processing power, memory, storage, bandwidth, screen resolution. Soon there won't be any need to create separate mobile versions of your app, or any separate versions at all. Write once, run anywhere will finally have arrived. And better than it was envisioned - you won't have to install anything, download anything, worry about spyware crap, local diskspace. The mirror image of the Cloud is an unhooked User.
Write Once, Go Everywhere.
Now get out and start hacking the mobile future!