Smartial Wayback Machine Text Extractor



Live version of this page exists.
However, it is different from the archived page (3 redirect/s found...)


This article contains 1 images. You will find them at the very end of the article.

This article contains 1447 words.

Help stop the spread of NIBS (Native is Better Syndrome)

  • In: Blog
  • By:John
  • October 21, 2010

John Gruber, well known and highly suc­cess­ful opin­ion­ista, is per­haps the high­est pro­file car­rier of the “native” apps are intrin­si­cally bet­ter than web apps meme (let’s call it Native is bet­ter Syndrome, or NIBS). I think it’s time for some vaccination.

Let’s take a look at the most recent out­break of NIBS.

In response to Jim Balsillie’s (co-​​CEO of Research In Motion) obser­va­tion

Why do you need a YouTube app if you play YouTube? Why do you need an app to fol­low the Tour de France if you can just fol­low the Tour de France?”

Gruber’s essen­tially states that this is flat out wrong. He asserts (among many other spu­ri­ous things)

Many native iOS apps are web clients — they’re just writ­ten using CocoaTouch instead of HTML/​CSS/​JavaScript. The results, in terms of user expe­ri­ence, speak for themselves

The logic here is sim­ple. If you write an app with Objective-​​C/​CocoaTouch (does the same logic hold for JavaME (Android), C++ (var­i­ous other plat­forms) and so on?) the user expe­ri­ence cre­ated is by that very fact better.

Now, in order for this asser­tion to be true, there must be not a sin­gle web app bet­ter than a sin­gle native iPhone app. This is triv­ially false. For any crap web app, I can show you a crap native app. Many of the most suc­cess­ful and lauded native apps, par­tic­u­larly games, are built with devel­op­ment envi­ron­ments that don’t use CocaTouch. So, the dif­fer­ence is log­i­cally not the devel­op­ment environment.

So, can we all please STFU about how native apps are intrin­si­cally bet­ter than web apps?

At present, on var­i­ous plat­forms, it’s true that the full capa­bil­i­ties of the plat­form are not exposed to web tech­nol­ogy based appli­ca­tions, par­tic­u­larly via the browser. However, with solu­tions like phone­Gap and Appcelerator, for iOS and Android, as well as “native” web plat­forms such as webOS, and RIM’s WebWorks means this is less of an issue than it was when iOS apps debuted.

But, I will argue, in the con­trary, there are things intrin­sic to web apps that “native” apps can’t, and will likely never be able to do.

1. Linking

The heart and soul of the web is link­ing. Right now, very few peo­ple see the power of app to app link­ing. But try these two links

Link to app with default settings

Link to app shar­ing settings

Yes it is a rea­son­ably sim­ple exam­ple, but it demon­strates how web apps can share state triv­ially via URLs, with­out the need for server side inter­ven­tion, in (effec­tively) any browser.

Native apps don’t do link­ing. They push stuff to and from a server. Sorry Mr Gruber they aren’t web clients, they’re sim­ply client server apps run­ning over http.

2. Reach

Want to write a “native” :

  • iOS app? — use Objective-​​C
  • Android App? — use Java
  • webOS app? — use HTML/​CSS/​JS
  • BlackBerry app — use Java

And of course, under­ly­ing each of these plat­forms is its own API — so even if your app does iden­ti­cal things on each plat­form, you need to learn and write to dif­fer­ent APIs.

The impli­ca­tion for devel­op­ers is they need to main­tain dif­fer­ent code bases for each plat­form, in per­pe­tu­ity. And, per­haps with the excep­tion of the very largest devel­op­ment shops, you are going to have to pick win­ners, because it is not fea­si­ble to tar­get more than a cou­ple of platforms.

This is never going away.

But, apps built with web tech­nolo­gies can already access many of the under­ly­ing device APIs, either directly as in the case of Geolocation, or via phone­Gap, or sim­i­lar harnesses.

Additionally, the W3C is work­ing on stan­dard­iz­ing Device APIs, through the Device APIs work­ing Group.

So, already, and increas­ingly into the future, you’ll be able to develop with a sin­gle code base, and deploy to (ulti­mately) any plat­form. The web. So why wait?

3. Control

As a devel­oper, here’s a sim­ple ques­tion — who do you want to con­trol your busi­ness or the dis­tri­b­u­tion of your appli­ca­tion? You, or a third party (any third party)? With “native” apps, you must go through a third party, who owns the plat­form, and also poten­tially com­petes with you. You cede them arbi­trary author­ity to shut down your busi­ness, or the reach of your appli­ca­tion, with no notice, and no right of recourse, for almost any reason.

This is the oppo­site of the web. The core prin­ci­ples of the web include

  • Decentralization (We have no kings or pres­i­dents. We believe in rough con­sen­sus and run­ning code)
  • Tolerance (good luck get­ting Dalai Lama related Apps on your iPhone in China)

In a way, native apps are par­a­sitic — con­sum­ing the resources of the web/​internet, resources like HTTP, TCP/​IP that would never be there to be built on, tak­ing advan­tage of the net­work effect of hun­dreds of mil­lions of users, who would not be there were it not for the web, all the while sub­vert­ing the guid­ing prin­ci­ples of the web.

In brief

The argu­ment that apps built with Java on Android, or Objective-​​C on iOS (and so on) are intrin­si­cally bet­ter (par­tic­u­larly because their UX is bet­ter) is sim­ply BS.

While appli­ca­tions run­ning in browsers do con­tinue to have less access to under­ly­ing device APIs than “native apps” there are tech­nolo­gies for min­i­miz­ing this, and in time (and not a great deal of it) this will be less and less of an issue. It’s frankly not a tech­ni­cal issue, it’s IMO a con­trol issue by plat­form devel­op­ers. Is it any won­der newer plat­forms make web tech­nolo­gies first class citizens?

Despite this, web based apps do have intrin­sic ben­fits — they are intrin­si­cally more con­nected, and con­nectable, and are intrin­si­cally freer. You may or may not care about such things, but this is sim­ply not in dispute.

And because I’m an opi­onista too, here’s my big bet. In as lit­tle as 5 years time, pretty much every screen based expe­ri­ence you see will be dri­ven by web tech­nolo­gies — TV UIs, mobile devices, in flight enter­tain­ment sys­tems, car dash­boards, ATMs, clock radios, vend­ing machines — it’s got a screen, the UI will be web tech­nol­ogy based. Objective-​​C, Java, C++, all other devel­op­ment palt­forms and lan­guages will become niche at best (and with JavaScript on the server explod­ing, we’re likely to see JavaScript take the place of many tra­di­tional server side lan­guages as well).

So, you want to bet big? Invest in web tech­nolo­gies — learn them, develop with them, build tools for them, immerse your­self in them. We aint seen noth­ing yet.

Your opinion:



Images:

The images are downsized due to limited space here. The original dimensions may differ.
Click on the image to open it on a new tab.



Please close this window manually.