Facebook's chief executive Mark Zuckerberg admitted that the company's mobile app strategy of targeting HTML5 as a lowest common denominator platform instead of iOS was mistake that wasted two years of its development efforts.
Speaking at the TechCrunch Disrupt conference, Zuckerberg said "we've had a bunch of missteps" in deploying mobile Facebook apps, and that "the biggest mistake we made as a company was betting too much on HTML5 instead of native [platforms]," he said, adding, "We burnt two years."
A report covering the event by The Verge cited Zuckerberg as saying "Native [platform development] is going to be the approach that we go with for iOS and Android" and that "We're betting completely on it."
Apple encourages developers to make use of its native Cocoa Touch platform for creating iOS apps, but also supports full HTML5 web apps as well as hybrid apps that essentially wrap up a web app in order to make it visible and available in the iTunes App Store.
Various parties opposed to Apple for any of a number of reasons have long hoped to deliver mobile apps untethered to the company's native iOS platform, and HTML5 has long been the only viable alternative to do this. But HTML5 has always offered a fraction of the performance of native platforms, making it only really suited to tasks where the web's inherent cross platform compatibility is more important than performance.
Pros and cons of native app development
When it launched the iPhone, Apple initially announced it would not support existing Java applets (which would have required adding a Java Virtual Machine to essentially duplicate all the native API features of iOS), and over the first few months it also determined that it would be impractical and unnecessary to support Adobe Flash or Flash Lite, which were once significant mobile and web platforms.
This essentially forced developers to write fresh, native apps for iOS, resulting in new library of mobile software that followed Apple's design and security guidelines, quickly establishing Apple's App Store as the best place to buy apps, and therefore the best place for developers to deploy apps.
Efforts that mobile developers pour into native IOS apps aren't necessarily easy to translate into apps for other platforms however. And the closer the code is tied to Apple's Cocoa Touch, the more that's required to adapt it to work on a version of Android, Windows Mobile, generic Java phones, or other competing platforms.
That's why Facebook initially bet on HTML5 development, hoping that it could bring essentially the same code to any mobile device quickly. However, the actual result was that Facebook's largest and most valuable audience on iOS was saddled with a slower app than necessary.
The company addressed the issue only a few weeks ago with a new, significantly faster and more responsive version of its Facebook client that is native to iOS.
Facebook hired a series of former Apple employees, including touch-screen UI developer Greg Novick; iPhone software gurus Tim Omernick and Chris Tremblay; and creator of Apple's first-party Stocks app Scott Goodson, to develop its native Facebook app.
Native app for other platforms
Zuckerberg also promised to deliver a native Android app, but only said it should happen "soon," adding that "it will be ready when it's ready."
Even when relying on HTML5 code to ease the effort of keeping Facebook up to date across mobile platforms, the company's Facebook app for Android has lagged behind its iOS counterpart, despite being one of the most popular apps on any platform.
As part of its tense negotiating efforts with Apple over the past two years, Facebook also held up any version of its app for iPad, even while it delivered a version for Palm's now defunct webOS. It didn't launch an initial iPad version of its HTML5 Facebook app until October 2011.
Palm's webOS, like Microsoft's tablet-oriented Windows 8 API formerly known as Metro, are both based in HTML5, which is essentially just JavaScript executed by a web browser.
Apple and Google have both supported and contributed towards the open development of HTML5, mostly to prevent web development from being tied to proprietary technologies such as Microsoft's Internet Explorer with dependancies on Windows, or Adobe's Flash plugin.
However, HTML5's inherent association with the open web and untrusted servers requires layers of security and other compromises that makes it disadvantaged when compared to a native platform such as OS X's desktop Cocoa or iOS' Cocoa Touch.
While Facebook has the resources to target multiple native apps on a variety of mobile platforms, its decision to abandon HTML5 in favor of native apps will likely be closely considered by many developers without such resources, who are likely to continue to focus their efforts on native iOS development.
This contradicts the expectations of many pundits who have suggested that mobile app development would quickly migrate from Apple's leading App Store to generic HTML5 apps that can be deployed across a number of platforms, something that has simply never materialized and looks increasingly less realistic given Facebook's decision.
20 Comments
Perhaps the first breaker off a greater wave of common sense.
webOS??? Sounds like Zuck is having trouble prioritizing. No wonder he burned Facebook chasing after HTML5.
This will be interesting as more computer use migrates to mobile devices such as iPad, et al.
You can write a Cocoa Touch app and keep most of your code in plain C, only doing the GUI in ObjC. You may not be binary compatible with other platforms but you will be source compatible. This approach has been proven in the open-source/Unix world for decades. So in that sense HTML5 makes even less sense, because it's not a choice between 100% cross-platform or 100% native, it a choice between 100% cross-platform or 90% cross-platform (your company's portable C libraries) and 10% native.
Lack of experience. Young developers often had too much faith in "Moor's Law". In reality, inefficient code lead to bad user experience.