Two new phones, no new apps
Over the past month, two somewhat old but beloved companies have both entered the smartphone market: Mozilla, who make the still-popular but downward-trending Firefox, and Canonical, who make Ubuntu, the most popular Linux OS.
These phones* have one main thing in common - instead of trying to build an app store filled with "native apps" - that is, apps built specifically for that OS with a code that OS specifically uses - they are asking developers to build HTML5 apps that will work on any modern smartphone.
Ubuntu does encourage native app development as well, but this somewhat of a token effort - they seem mostly invested in HTML5.
This makes sense, and it doesn't.
The case for building HTML5 apps is pretty strong. HTML is the code that runs the web - the page you are viewing this on right now is HTML dressed up with some CSS. HTML5 is the slowly releasing new version of the language, which has much more functionality than the HTML now, and is much more suited to mobiles (the HTML 4 spec came out in 1999.)
The idea is that HTML5 apps (essentially dressed up mobile websites) will run on any device, just like websites; you won't have to build a version for Android and iOS and Windows Phone 8 and, crucially, these new phone OSes.
Mozilla and Ubuntu aren't stupid.
They know they are too late to the game to build a strong native app ecosystem.
It took Android a long time, and Windows Phone 8 isn't there yet, even with the full might of Microsoft behind it. At this point your phone would have to be extremely popular in order to entice app developers to a new system, and it is unlikely to become popular without said app developers. Instead of battling this catch-22, both these companies (well, Mozilla is a foundation), are attempting to attract more lazy developers, who would love a way to develop once for every platform. Still want a presence in the iOS app store? Just build a container for the HTML5 site - that's what Facebook did for a long time.
There is a problem though - HTML5 apps just don't perform like native apps do. This is fine if you are building an easy way for your website to be read on mobile devices, but anything complex? Probably not a good idea. Did any of you notice how much faster the Facebook iPhone app got a few months ago? That was them switching to iOS native from an HTML5 container.
Not only do HTML5 apps not perform as well, they often don't have the "hooks" that native code provides to developers - the deep integration with the phone that lets them use all the different hardware features of the phone. If they do they are often much slower. The "one size fits all" nature of HTML5 kind of hinders this - who knows what the phone your user is using can do? You can set up variables for different screen sizes and phones, of course, but that is adding complexity - antithetical to the whole purpose. Still, probably easier than building three different apps.
HTML5 apps also deny exclusivity to these OSes.
This makes sense given the nature of the organisations that spawned them - Mozilla is a not-for-profit and Canonical build a open source OS - but it also hurts. Exclusivity is a lot of what sells iPhones - that my phone can do this and yours can't - while any app built in HTML5 should run on any modern smartphone.
It's interesting and a somewhat encouraging move.
Apps that run well everywhere would be great for competition, making building the best phone and OS important rather than just the best ecosystem, and it would unseat Apple and Android a little.
I'm hopeful but not all that confident, to be honest. I think HTML5 will do well for certain types of apps, but hugely popular apps like Instagram won't be built in it - too little control over the user's experience.
It feels as though Mozilla are clutching at straws while Firefox loses ground to Chrome, and Ubuntu has never been more than a niche product. What do you think? Is an ideal future of open app development possible, or a pipe dream?
* Phone OSes really - Ubuntu aren't currently building phones - but let me get some narrative going.