When it comes to mobile application development, the debate surrounding native vs web is divisive to say the very least. On one side of the battlefield there are those who believe there's an adherent benefit to developing native applications optimised to fully take advantage of the capabilities specific devices and platforms (such as iOS) have to offer. On the other side we have those who believe in the
The One Web is a rather broad concept, but it has one important principle at heart - the web should be open. Regardless of who you are, what device you're using and what browser you're accessing content from, no user should be left behind. Open access to all is one of the defining principles behind the web but it can feel like we're ignoring this fundamental concept in mobile sometimes. What the
suggests is that rather than companies focusing on creating native applications, they should instead focus on creating experiences
is able to get to.
This extends to veering away what open-web evangelists call the big
- namely the Apple App Store ecosphere, Windows Phone 7 and other such platform or device-specific mobile applications that limit themselves from being available to all of the web by their locked native nature. Some designers involved with native application development may claim that users feel more comfortable with experiences that look and act like they're more integrated with a particular OS, but in my opinion this can be achieved with a web application just as easily.
Why do we believe it's the future?
I'd like to explain why I, like
, support this crazy notion of the One Web.
At the moment, there's a limited set of capabilities that differentiate what is currently possible when creating a web app and a native app. In my opinion, this boils down to the ability to interact with a device's hardware (the camera, microphone, etc) and the filesystem. The reason I believe that mobile web applications are the future is because in time (give it a year or two), the gap between what's possible with native apps and in-browser apps will narrow and eventually close.
Almost all of the mobile panel discussing this topic at
agreed with me on this point.
If you happen to also agree with it, you may enjoy Jeremy's framing of where the future of native applications stand in yesterday's discussion.
Jeremy Keith: Writing a (native) app is like coding for LaserDisc.
Aral Balkan: That's not a fair analogy!
Jeremy Keith: Give it time.
You don't, however, have to take anyone's word for it. There
is already progress being made towards bridging the gap between mobile and native -
draft specifications exist for device/media APIs as well as one for the filesystem API. Those heavily vested in game development will have access to hardware-accelerated canvas and WebGL across multiple devices. Audio APIs are also being worked on and I have no doubt that once these specs have been implemented in more mobile browsers the appeal of opting for native development will slowly start to fade.
Would you really want to lock your content into one platform when you could expose it to millions of other users?
Did we forget anything?
One important topic missing from the above discussion so far is monetisation. Businesses like the closed ecosystem around the App Store because it offers a simple, one-click path to actually making a profit from your creations. This is crucial to the success of applications that don't rely on in-app advertising revenue, so we can't simply ignore it.
Some would argue one-click payments are a lot more difficult to get right with web applications. Right now, I tend to agree. Sure, we currently have PayPal, Google Checkout and other such solutions, but there's nothing that's
as being as reliable or as flexible as what you get out of the box when you're using the App Store.
I believe that a time will come when a solution we can all trust (within reason) will make itself known, but for now all we can do is research and continue evaluating and innovating in this area. It's a hard problem to solve, but someone will get it right.
What about the here and now?
It's time to come back to the present. I want to discuss
between native and the web, as this isn't always explicitly stated when having this discussion. We of course need to be realistic about what is feasible in mobile development
. A few of the attendees at yesterday's event were looking for a solid answer to this, so I hope the rest of this post provides a little more clarity.
Yes, One Web is a brilliant idea in theory and one that's inevitable, but what if you want to start creating apps that use all of those extra pieces of device hardware today? Should you wait until all of these APIs have been finalised? Should you wait until a better payment solution for mobile is available? The answer is, of course, no.
I believe that native application development is only a temporary stop-gap solution, but both Jeremy and I agree that progress towards the One Web shouldn't prevent you from building native applications for the time being. If you absolutely need access to capabilities that aren't currently possible with the browser, you shouldn't let anything stop you.
Just be open to the idea of us moving towards the One Web in the future. It's just a matter of time, but some day we'll all be able to access applications regardless of device or platform and it will be glorious.
As Jeremy poignantly put it himself, 'I don't write for devices. I write for people.'