Apple is not evil. iPhone developers are stupid.

In his “Apple’s mistake” essay Paul Graham makes an unwarranted assumption; an assumption everybody who’s currently involved in the Great App Store Debate seems to be making.

The fundamental problem on the iPhone is not Apple’s App Store approval policies, but the iPhone developers’ arrogant disdain for Web technologies.

It was only last Friday I told a roomful of Web developers that Apple is evil, and a spontaneous applause erupted. Since then, however, I have changed my mind completely. The Web developers and I were wrong.

Apple is not evil. iPhone developers are stupid. Their problems with the App Store approval process are entirely their own fault and they deserve no commiseration.

I hope the App Store approval process sticks around for a loooooooong time.

Update: I was wrong about Web apps being able to replace native apps right now. I was wrong about the iPhone developers’ mindset. They aren’t stupid. Read my follow-up post.

Apple’s mistake

Graham’s argument runs as follows:

  1. Developers want to develop stuff they themselves want to use on the platform they’re using.
  2. Developers have embraced the iPhone with a passion.
  3. Therefore developers want to develop stuff for the iPhone.
  4. This is to Apple’s advantage, since it’s developers that can make or break a platform.
  5. Apple, however, is pissing off developers royally by its insane App Store policies.
  6. Therefore it is losing some good iPhone application developers.
  7. Even worse, Apple is becoming an Evil Company that developers won’t want to work for, either as third-party app creators or directly as employees.

The unwarranted assumption here is that if developers want to develop for the iPhone platform they love they must go to the App Store for distribution.

That’s not true. They have another option. In order to solve the App Store problem they just have to stop wilfully ignoring it.

Stupidity

In order to release an iPhone application without having to submit it to Apple’s insane App Store process, developers could just use Web technologies and create Web apps instead of native apps.

The iPhone’s Safari browser is one of the best mobile browsers available, and recent improvements in hardware acceleration have made it an excellent graphics platform that can handle serious 3D-animations written entirely in CSS.

It also supports JavaScript geolocation, which is (I hope) only the first step towards true device APIs that will give JavaScript developers access to phone functionality such as the camera, text messaging, the address book, and more. I’m assuming Apple is working on all that because it’s the next logical step.

Safari’s support of appcache makes it possible to store the Web app’s core files on the iPhone itself, so that it only has to download the data. Thus mobile connection problems can be avoided.

The user can place the Web app’s icon on his desktop, thus creating an app-like way of starting the Web application. When will users do that? When they think your app is cool. Instant meritocracy.

Best of all, if you want to update a Web app, you just put the updates on your Web server. There’s no need to wait for Apple’s broken approval process.

iPhone developers are stupid because they’re wilfully ignoring all this.

More stupidity

I reviewed the apps I have on my iPhone, and most can be released as a Web app right now. The exceptions are complex games that are both graphically and programmatically intensive, and apps that depend on device functions such as the accelerometer or GPS.

As I said, Safari supports geolocation, and maybe Apple is working on other device APIs. That would solve all problems for the second category. Complex games will remain very hard to release as a Web app in the near future.

Still, the graphically simple games such as sudoku and chess, the interactive shopping lists, the dictionaries and bible citation apps, the beer appreciation apps, the firmware Yahoo weather app, and most importantly all social network clients could have been written as a Web app without any loss of quality whatsoever. (Most have fairly little quality to lose in any case.)

In addition to avoiding the App Store and its insane policies, such Web apps would (mostly) work in any modern browser, whether desktop or mobile, and users of other phones or even of old-fashioned desktop computers could have used them, too.

Developers like their stuff to reach as many people as possible, right? That makes sense from both a business and an ego perspective, right?

Then why do iPhone developers jump through burning hoops as nasty as the App Store approval process just to make sure that their stuff can only be used on one single platform instead of many?

That’s stupid.

The Web

Apple’s original plan for iPhone development was to use Web technologies. This plan caught both Mac developers and Web developers by surprise because it was totally unexpected.

The plan failed. Jobs Himself ordered His developers to create Web applications with Web standards, but a deafening silence ensued. Then He hurriedly thought up the App Store. Too hurriedly, as it now turns out.

I remember the ecstatic reaction to the announcement, because it was the very first time a major industry leader mentioned Web standards in a major presentation.

Still, we Web developers didn’t really believe our favourite technology could deliver all that Apple wanted. Maybe we still don’t.

Besides, Apple does not reach out to Web developers at all, and Web developers respond by not bothering with Apple beyond making sure their Web sites work in Safari.

I believe that Apple is working towards its own heavily CSS-centric Web OS, certainly for mobile, possibly also for the desktop, and that this evolution has been slowed down by the energy devoted to the App Store as well as the complete lack of outreach.

(This lack of outreach, by the way, is the main problem with every single mobile player that has opted for Web technologies in the past two years or so. Everybody wants Web technologies. Nobody cares about Web developers. Stupidity is not restricted to iPhone developers.)

Arrogance

The fundamental problem on the iPhone is not Apple’s App Store approval policies, but the iPhone developers’ arrogant disdain for Web technologies.

That’s nothing new. Most X developers (for any non-Web value of X) live in mortal fear of the browser as a development platform.

As a long-time browser researcher I can confirm that their fears are not entirely unfounded, although the situation is not nearly as bad as it’s made out to be, especially not if you only want to target the iPhone.

But the so-called “real” developers aren’t confronting their fear. They’re covering it up with arrogance.

They dismiss Web technologies as toys for children. JavaScript is just this little language that cannot possibly compare to real technologies such as the one they’re using. HTML is too simple. Real programmers don’t do that stuff. As to Web developers, they are just glorified pixel-pushers that should in no circumstance be taken seriously.

After ten years I am fucking tired of the “Web development is not real programming” bullshit that the arrogant bastards in “real programming” are spouting because they’re too frightened to learn something new.

Fuck those condescending, ignorant, self-important, stupid, blind, fearful pricks. Fuck them real hard. Where it hurts.

And fucking them real hard where it hurts is exactly what Apple is doing right now.

That’s why I changed my mind. That’s why I’m cheering Apple on. I hope the App Store approval process sticks around for a loooooooong time.

The myth

The poor, oppressed iPhone developer suffering under Apple’s heavy App Store hand is a myth invented by these developers themselves because they’re too fearful to look beyond their “native” fetish.

The Web is patiently waiting in the wings like a spurned bride, quietly promising to solve all of their problems for them if they’d only look at her.

But instead, iPhone developers are eagerly bending over begging Apple for more because of their myopic obsession with bad APIs, the twin geekgasms of both objecty stuff and C, bloated SDKs, impossible layout mechanisms, and all the rest of the archaic nonsense we’re going to have to rid the mobile Web of in the next few years.

All that stuff is native and therefore “real” and important. Web development isn’t.

Well, you know what, iPhone developer? You’re wrong. Stupid, stupid you.

In order to create an app for the iPhone platform you know and love, an app that Apple’s policies can never touch and that works on other platforms, too, you need an iPhone, a text editor, graphics software, a Web server, and a good Web development reference.

None of these are particularly hard to find. You already found the reference.

Jobs showed His chosen people the straight and narrow path to enlightenment, but they ignored His word. Therefore He unleashed the scourge of the App Store upon them. Good for Him. He should do stuff like that more often.

iPhone developers deserve no commiseration. If we encounter yet another post about Apple’s lack of love for the author’s iPhone app, we should tell the pathetic whiner it’s his own fucking fault. He should have used Web technologies instead.

Update: I was wrong about Web apps being able to replace native apps right now. I was wrong about the iPhone developers’ mindset. They aren’t stupid. Read my follow-up post.

This is the blog of Peter-Paul Koch, mobile platform strategist, consultant, and trainer. You can also follow him on Twitter.
Atom RSS

I’m around at the following conferences:

(Data from Lanyrd)

Categories:

Monthlies:

Comments

Comments are closed.

1 Posted by Harald Kirschner on 23 November 2009 | Permalink

I totally agree, just thought this today when I saw people complaining about the slow update process: Just make a web app and you can be agile!

With the powerful webkit features like CSS3, HTML5, offline-browsing, etc, you can create awesome apps that even work on Android.

Thanks for changing your mind and hopefully opening some eyes for open platforms.

2 Posted by Elliott Kember on 23 November 2009 | Permalink

Every time I develop for a WebKit-only usage, be it AIR or OS X WebViews, or iPhone web apps, I get a sense that it's the future. As soon as there's a way to charge for web-apps without rolling my own purchasing and billing, I'm there.

Having said that, I do appreciate the App Store process for making sure my applications are of a decent standard. For all the bitching and moaning, I'm convinced the strictness does lead to better applications.

Personally, I'd like to see a hybrid - iPhone apps built with web technologies, and purchased through the App Store. I know this isn't what you're after, but I like to think it'd be a decent, achievable middle-ground.

3 Posted by Jordan Ryan Moore on 23 November 2009 | Permalink

There are three big downsides to creating an iPhone application as a web application:

1) If your application isn't free, you have to create an e-commerce solution. Yes, this has been done a million times, and it isn't difficult, but it is time-consuming.

2) Web applications don't get the same free publicity as native iPhone applications. Your web application isn't listed in the App Store.

3) Web applications don't work (well) offline. This typically isn't a problem for iPhone users, but a large percentage (I don't have the numbers) of iPhone OS devices are iPod Touches.

PS: I'm proud to be a web developer. :)

4 Posted by Kilian Valkhof on 23 November 2009 | Permalink

I'm sorry, but no. Web apps have one huge, huge disadvantage: they are terribly slow on the iPhone. I mean, *really* slow. Even the worst native app can't compete with the slowness of most iPhone optimised websites.

If you want people to use your applications, you better make them fast (see for example, google's research on page load speed) and currently, web apps on the iPhone just don't offer that.

Javascript may be fast, it might support a lot of cool tech, but if the rendering speed doesn't hold up, you might as well give up, bend over, and develop native apps ;)

5 Posted by Alexis Deveria on 23 November 2009 | Permalink

Excellent post and I fully agree the abilities of Mobile Safari have been largely underrated and overshadowed by app store apps.

I really do hope Apple will continue to give web devs access to other APIs. Back in March I made a wish list for future versions of Mobile Safari: http://a.deveria.com/?p=202

The biggest thing that bothers me is that you can't have audio play directly on a page, which means any games developed right now have to be silent.

I have one concern though, why would Apple offer more device API access on Safari when all this App Store dedication is so much more profitable to them compared to having devs write web apps?

6 Posted by kL on 23 November 2009 | Permalink

I do use WebKit view in my Cocoa applications, but only for bits that can have low performance.

There *is* a big difference in responsiveness and startup time.

There *is* difference in memory usage, that matters a lot for pre-3GS devices.

You should try to port Cocoa application to web technologies before calling everyone stupid.

In-Safari apps can't get rid of bottom toolbar, and have to use hacks to remove top toolbar. Try developing TabBar app like iPod.

UI does matter to iPhone users, and custom CSS look-alikes aren't easy to get right.

Usability of CSS overflow sucks.

It's hard to deliver web app with megabytes of graphics, and ISP proxies compress life out of any graphics on the wire.

Cocoa Gogole maps are much richer and faster.

I could go on and on about this.

7 Posted by sil on 23 November 2009 | Permalink

I don't think the Android browser supports appcache yet :-( If you can correct me then I'll be dead happy...

8 Posted by Jvdmeulen on 23 November 2009 | Permalink

I think most people who have tried porting an app to webapp OR have tried developing an webapp haven't really looked into the w3c specs.
Besides that, there's even more trickery that apple has nicely documented on their website. The trickery wich only works on safari (mobile) isn't any different than mozilla and other browsers.

regards from a happy webdev

9 Posted by Matt on 23 November 2009 | Permalink

Agree with Kilian - webapps are far too slow on current gen hardware, and until something like WebGL is widely implemented, performant 3D accelerated games and viz apps will not be sensible to produce. Performance matters more to users than whether the app they're using was implemented with web technologies. And thus, the necessary evil of the App Store with its pros and woes both.

10 Posted by Chris on 23 November 2009 | Permalink

In 2012 this problem will decline; according to Gartner Android powered phones will outnumber the iPhone. So the developers can choose between Android Market or Web powered applications: http://www.computerworld.com/s/article/9139026/Android_to_grab_No._2_spot_by_2012_says_Gartner

11 Posted by Harald Kirschner on 23 November 2009 | Permalink

Android 2.0 introduces more HTML5: geolocation, database, video and offline application access (more: http://developer.android.com/sdk/android-2.0-highlights.html)

Ergo: apps for both phones are no biggy.

12 Posted by Tom B. on 23 November 2009 | Permalink

Ppk, I always thought you are a genius, and you have proven it once again :)

But you can't lay all the stupidity blame on the developers -

The people who are responsible for web technologies, specially the browser vendors are to blame for the fact that people don't take the browser seriously. In the past 2 years the browser vendors fight each other for minor speed improvements, all kinds of propriety implementations and release new versions too fast for a normal person to track.

You have to keep more then 6 browser windows open on at least 2 OSes at any given time if you want to be sure your app works for 95% of the users, and it usually never does on the first attempts.

They have to slow down, fix the more pressing issues like memory usage and stability, and work together to unify APIs and modern CSS3/HTML5 implementations so developers like you and me can develop without getting stupidly mad about the way things just don't work as they supposed to (If to quote you: "No wonder I can't stop smoking").

13 Posted by Jani Hartikainen on 23 November 2009 | Permalink

While I agree that great many apps could indeed be written as webapps, here's something to consider..

- Offline usage.

- Speed. While great many apps can be built with web technologies, there is still some (minor) speed issues. Not a major factor, but in my usage "smoothness" was a contributor to the iPhone "experience".


A lot of the Apple device users seem to appreciate apps that behave and look similar to other Apple device apps. I would say that with web apps it would be more difficult to do a GUI similar to others.


Disclaimer: I don't own an iPhone, but I have used them.

(I expected more hate-mail from iPhone devs on this post ;)

14 Posted by Jeff Leyser on 23 November 2009 | Permalink

No, no, no a thousand times no.

As a mobile device, the iPhone spends a significant amount of time disconnected from the Web. You write that grocery list app to run in Safari and it's useless to me, since I can't get a signal inside my grocery store.

15 Posted by Nerdie McSweatervest on 23 November 2009 | Permalink

So, is Palm doing it right with webOS?

16 Posted by Martyn on 23 November 2009 | Permalink

A well presented argument with an appropriate amount of cursing (about the same ratio as when I was trying to learn Objective C). Maybe by Apple keeping their acceptance rules vague, developers will start moving more towards web apps, and maybe the limitations that other people have mentioned will encourage developers to keep their apps trim and fat free?

What's the latest on W3C widgets, are Apple still anti them?

17 Posted by Vince Vaughan on 23 November 2009 | Permalink

I'm not qualified to assess the intelligence or arrogance of iPhone developers. Arrogance is a pervasive problem. It continues to be so because while it's easy to spot in others, it's quite difficult to spot in ourselves.

Some developers have gotten rich off of the iPhone. Today, with 250,000 choices and growing, it's still possible but the probability has rapidly declined. That reality, coupled with the rise of other platforms give rise to the idea that this really is 1995 all over again. The market is fractured or fracturing. As business looks to mobile to reach customers and not "get rich quick," what will they do to streamline cost and put marketing back into the hands of professionals?

Move their applications to the World Wide Web. If that seems simple or obvious, it's because it is. Not everything belongs in the app store, and if that's true today, it will only become even more powerfully true in the future.

The app store will still be a haven for much more graphically rich applications that are too advanced for the standardized Web.

The Web, though, is a real choice. The author's recommendation is a powerful one.

18 Posted by John Handelaar on 23 November 2009 | Permalink

One of the many reasons I don't have an iPhone is that I have never, not once, seen one in person with a data connection above 10kbps. (The ones I've seen have all been in Ireland and the UK.)

You'd have a point if complex web apps actually worked on iPhones. Where I live, they basically don't.

19 Posted by Andrew Durdin on 23 November 2009 | Permalink

@Jeff Leyser #14:

HTML5 provides a standardised way for web-based apps to download their essential resources for offline use.

MobileSafari has supported this for some time, certainly since iPhone OS 3.0, and I think since 2.something.

So if your grocery list web app is written to take advantage of this (as it ought), then you can indeed use it in the store with no signal.

20 Posted by Menno on 23 November 2009 | Permalink

Sorry but the "both objecty stuff and C, bloated SDKs, impossible layout mechanisms" which you've probably never even touched beats Javascript and HTML/CSS every day.

21 Posted by Fabien Agranier on 23 November 2009 | Permalink

I'm sorry but there is NO WAY to convert a native app into a web app :

1) You can't have top and bottom menu in web apps !!!!!

2) You can't get rid of the safari bottom menu

3) You have to use a trick to hide the url bar and it's really not pretty (bar is showed during page loadings)

As for the first point :

css overflow:auto does not work (its works with 2 fingers but nobody will think to do that and that's not the way it should work anyway)

css position:fixed does not work, so-called viewport collateral effect, but let's be honnest, this feature just MEANS that the object should stay fixed in the viewport, so the excuse is just a nonsense, it should work, I firmly think its support has been intentionally removed to prevent web apps from happening !

Finally, there are some tricks with overflow:auto to intercept the touchMove event and scroll the div, but that's awfully slow and that's a pretty ugly bypass.

Without menu, your web app is just a web site with
no whatsoever usability!

CONCLUSION:
You were initially right : Apple is evil.
iPhone developer just don't really have a choice here...

PS: I'm a web developer that would love to see a little sense and standards in the mobile world.

PS2: Android has the same problem

22 Posted by Hamish on 23 November 2009 | Permalink

You accuse app developers of being arrogant and stupid, and claim to know better than every single one of them?

Having thus argued yourself out of a point about arrogance, do you not think you might want to revisit your point about stupidity?

23 Posted by Colin Surprenant on 23 November 2009 | Permalink

I am a web developer and strong believer in web based apps but I also think native apps are here to stay. First, a whole category of apps just wouldn't work within Safari since not all SDK resources are exposed, and will probably never be. Next, there are still some missing parts in the glue required to make real standalone/disconnected web apps, but this is just a question of time and we are quickly moving toward a usable model for this. It will be interesting to see how Apple will support this or not. My guess is that it will NOT provide these integration details that will make the difference in a usability standpoint thus pushing app developers/sponsors into the native app model.
I also think Apple app store model really really sucks.

24 Posted by Ryan on 23 November 2009 | Permalink

It's ironic that the comments on this blog aren't displaying properly within my mobile Safari. (The bottoms of long comments are being chopped off.)

25 Posted by James White on 23 November 2009 | Permalink

Writing apps for Safari assumes everyone's web connection is going to be fine all the time. Getting on and off public transport.. going in and out of buildings etc... all interrupts signal.

26 Posted by ppk on 23 November 2009 | Permalink

A few quick reactions:

Slowness: I don't doubt web apps are slower than native apps, but that only matters for intensive games. And I said in the article that this is exactly the category of apps that's not going to be ported to the web any time soon.

Payment: Make sure people pay for access to your website. Or, better still, for access to your content.

Getting rid of the Safari toolbars: why is that important? More in general the whole "you can't make it to look like native apps" argument seems a bit odd to me. Why *would* we want to make it look like that? If the app's good enough the users won't care whether it looks native.

Android does not support appcache.

Device APIs: Yes, those are absolutely vital for true mobile web apps. I said so in the article.

Many people don't seem to understand that appcache + local storage = offline use. I did not mention local storage in my article, though. My bad.

27 Posted by Fabien Agranier on 23 November 2009 | Permalink

Why do we want web apps to look like native app ?

You're asking why we want rich ui ???

USABILITY

You don't want to scroll all the page to get to the menu, you want to have it right under your finger !

As for the url/bottom bar of Safari, resolution of the iPhone is already ridiculously small for such a big screen, you don't want to waste any pixel with useless information.

28 Posted by Neil Mix on 23 November 2009 | Permalink

Paul, I of course agree with you that complaining about a process that one subjects himself to willingly is cognitive dissonance of the highest order. But many of your statements above are pretty offensive and just as arrogant and condescending as the statements of those you mock.

As you know, I once drank the web app koolaid. I don't any more, because it turned out that building a native multimedia app for the iPhone was way easier and tons more fun than it ever was on the web. And for that I have willingly subjected myself to a lengthy and painful review process, without complaint. (And you don't know the half of it.)

There are many arguments I could use to oppose you, but there's not enough space and more importantly, I agree with the larger point you're trying to make. But was it really necessary to insult and inflame? The world is not nearly as simple as your monochromatic attempt to paint it.

FWIW, I think the whole "real programmers don't do JavaScript" meme died years ago, at least amongst the people who matter. And for those whom still bear it, why waste your time?

29 Posted by John on 23 November 2009 | Permalink

Fabien Agranier wrote:

"1) You can't have top and bottom menu in web apps !!!!!
2) You can't get rid of the safari bottom menu
3) You have to use a trick to hide the url bar and it's really not pretty (bar is showed during page loadings)"

These are all incorrect. Apps written using HTML5 can be indistinguishable from native applications on the iPhone in all respects except the installation and update process. Examples:

http://blog.threepress.org/2009/11/02/ibis-reader-and-bookserver/
http://mrgan.com/gb/
http://www.jqtouch.com/

30 Posted by millenomi on 23 November 2009 | Permalink

My app cannot be easily released as a web app, no matter how it's spun. The UI could be ported over; the native access (eg address book or image uploading) couldn't. Absolutely not with enough immediacy to keep the app *good*.

It's the problem I'm facing with porting it to other platforms like webOS: I could, say, turn the UI more or less easily into a Cappuccino app, but the backend would need total rethinking for an inferior overall experience. Ick.

I evaluated web technologies and found them lacking. I don't think I'm stupid.

31 Posted by millenomi on 23 November 2009 | Permalink

@John (#29): You talk as though the app's user experience consisted only of its UI. It does not.

32 Posted by kL on 23 November 2009 | Permalink

Responsiveness matters for all apps. Being nice'n'smooth is what sells iPhone. All phones can do same things, only slower and clunkier.

On pre-3GS phones even in Cocoa it's hard to avoid lags. This makes applications feel tiring to use or even broken (you have to respond before user starts thinking tap didn't work - see how many people complain about "unresponsive touchscreen" in low-end Android phones).

Handling payments (refunds, support, fraud, "we just deleted your account and shut up" random PayPal actions, etc.) is as much pain as dealing with Apple.

App store has users' CC details and processes payments with 1 click. That's very hard to beat, except maybe PayPal (still PP is few clicks extra, and for $1 apps costs as much as AppStore).

Toolbar is interfering with the design, takes precious space. You have to design something that looks good with washed-out-blue chin. It's double bad for horizontal screen layout.

Download, before cache is filled, is part of first-run experience for web app. It's not perceived as such for app store apps. 2nd top app in (UK) app store weights 420MB.

There are apps that would work OK as web apps (unit converters, maybe twitter client, "the moron test"), but that's a minority.

33 Posted by Chris Messina on 23 November 2009 | Permalink

Desktop vs the web will be the battle of our time, methinks. At least for the next several years as desktop-based developers slowly realize that they're going to need to confront the perceived failings of the web rather than reject the web as an app platform in its entirety.

I wrote a similar screed about this that you might find resonates with your premise:

http://factoryjoe.com/blog/2009/08/01/steve-jobs-hates-the-appstore/

I believe one of the core things that the web community needs to do is build better app-creation tools — not just frameworks. The iPhone is *fun* to build for because the tools give you a great deal of power and finesse that let you create fairly polished apps with minimal amount of work. Until we have an Xcode or Interface Builder for the web (or use them natively and export to Atlas), I think many desktop developers are going to continue to lament the web as a second or third class app platform.

34 Posted by kL on 23 November 2009 | Permalink

I didn't know you can get full screen. Maybe I am little stupid then.

However jqtouch apparently can't stop top bar from moving.

Having half of back button off-screen is awful. And top bar "sticks" to fingers (scrolls page) when you try to press buttons.

35 Posted by millenomi on 23 November 2009 | Permalink

(By the way: as though the user experience consisted entirely of the *appearance* of said UI, rather than its behavior. Most webapps are markedly less responsive and less pleasant to see and to use on iPhone than native application, even on pretty decent 3GS-class hardware.

There *is* a reason that after one good year making web we still clamored for a native SDK, huh. Not stupidity. Some of the factors have been mitigated — say via HTML5 Offline Apps support —, but absolutely not all.)

36 Posted by Tor Løvskogen Bollingmo on 23 November 2009 | Permalink

If it's impossible to hide the Safari menu bar – Glyphboard can't be real. Install it on your home screen and have a looksie: http://mrgan.com/gb/

Maybe iPhone devs are stupid after all :-P

37 Posted by Jonathan Stark on 23 November 2009 | Permalink

Amen, brother! Thanks for writing this. I've been working on a post that essentially says the same thing, but it's a lot more powerful coming from you :)

For people who are interested in learning more about what you can do with web apps on an iPhone, there's a free version of my forthcoming O'Reilly book available online:

http://building-iphone-apps.labs.oreilly.com/

Best,
j

P.S. Thanks for all the mobile browser testing!

38 Posted by Steve on 23 November 2009 | Permalink

I didn't see any mention of charging in your article for applications that aren't free (correct me if I'm wrong).

I have a game called Real Racing on my iPod Touch.
Are you telling me that it could be created using CSS and web standards?

Are you telling me that if it were released as a web app people would put their credit card details into a mobile webpage to buy it?

Are you telling me the game would have received the same level of publicity if it weren't in the App Store?

Developers aren't arrogant for wanting to charge for their work, and by far the easiest (and safest) way is via the App Store.

Plus, consumers *like* native apps, they like being able to install them straight to the home screen. I haven't got a clue how to save a web app there, and I'm a freaking developer (not that I've bothered, noone wants web apps except those burned by the approval process).

39 Posted by Mike on 23 November 2009 | Permalink

Thanks for the interesting post!

While it's already possible to create very advanced stuff on the web technology-wise, it doesn't mean it would be the same than developing native applications. I'd argue it's different both in terms of development, deployment, community and the ways people are able to discover (and possibly pay for) your software.

While all the device specific functionality might be brought available in the web browser one day, it certainly still isn't there, nor does it make all the problems people have been having with the approval process go away.

As far as I'm concerned, the arguments you presented this far just don't justify calling people stupid. I love the idea of being able to develop with web tools and standards, but somehow I feel like there's two separate things mixed together in here.

40 Posted by John on 23 November 2009 | Permalink

millenomi: I was just trying to correct some bad information. Also, I wrote that the experience "can be indistinguishable," not "will always be indistinguishable." It depends on the application. (Of course, many apps can't be implemented at all using currently supported web technologies.) But for some apps, the entirety of the user experience (save install and update) can indeed be indistinguishable from a native app from the perspective of the average iPhone user. (I think it'd be possible to fool many developers as well, especially on the 3GS.)

41 Posted by Mark on 23 November 2009 | Permalink

You shouldn't call other people stupid, when you yourself are ignorant about why those people made the decisions they did.

Hints for you: speed, native UI elements, control... I could go on, but others have covered the points well.

42 Posted by George Ornbo on 23 November 2009 | Permalink

Couldn't agree more. As a developer I don't see the point in learning and supporting multiple SDKs when in the internet we have an existing application platform (mobile browser issues aside) that supports pretty much any device. You can push updates out instantly, your product is easy to port to other devices and platforms, and you are not at the whim of whoever controls the SDK / App Store.

You do a superb job of pointing out the glaringly obvious.

43 Posted by ppk on 23 November 2009 | Permalink

Fun factor: That's an interesting argument I hadn't thought of at all. From some scattered stuff I read I got the impression that developing an iPhone app wasn't fun at all, from a technical perspective. But apparently I was wrong.

@Neil: Maybe I was a bit over the top, but judging from the reactions web developers still feel that all other developers are dissing them far too much. That MUST stop. Maybe it's best to see my article as a first step towards a comparison between native and webb apps, provided the "real" developers take web development seriously. And I still believe the majority of iPhone apps could also have been released as a web app.

One more category of unportable apps: audio stuff. I tried to find out what Safari's support for QuickTime is, but couldn't really figure it out. Does anyone have a useful link? Besides, even with QuickTime fully supported I'm not sure if you could write a flute or drumkit app.

44 Posted by Grok2 on 23 November 2009 | Permalink

I think your argument is flawed -- yes you could develop a web-app, but you are missing one very important thing here -- the thing that really makes you the money that you are developing the app in the first place for -- the app store distribution mechanism. You could perhaps market your app well and reach the same level of distribution, but if your app is really good, it stands a very good chance of making some money as a App Store based iPhone app than as a separate web-app.

45 Posted by Brian Fling on 23 November 2009 | Permalink

Great write up. And you are exactly right.

For the last five years the entire mobile community (operators, device makers and developers) have all been trying to move toward the Web. Supporting mobile devices is way too costly, release cycles too slow, and the marketplace is limited. The web solves a lot of these problems but introduces some more.

But it is important to note that acceptance or certification will likely always exist in the native application space. Apple did us all a huge favor by taking the process from months, sometimes even a years to weeks. This is something no one else has ever been able to do.

Native apps will always have there place in the mobile ecosystem (mostly for Games, the largest segment of the mobile downloads market by far), but Web Apps can do a lot more for non-Game apps than most people think.

The W3C, OMA and some of the worlds largest Operators, device makers and browser makers are all trying to bridge the gap between the device and the Web. It's coming sooner than you think. And the people leading the charge are coming from companies like Apple, Google, Nokia, Opera, Yahoo!, Vodafone, Samsung, Sony-Ericsson, Palm and others.

46 Posted by Alexis Deveria on 23 November 2009 | Permalink

@PPK Re: Audio, is this what you're looking for?
http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html#//apple_ref/doc/uid/TP40006482-SW29

47 Posted by Fabien Agranier on 23 November 2009 | Permalink

@John (#29):

You're right on 2 points out of 3 :

When you install a web app you can get rid of both url and bottom bar of Safari...but as said, you have to install it (And that's not as easy as just loading a web site)
The power of the web is to not force people to install everything...
But it's a point, I was not aware of this mode.

Anyway, your still wrong on the main point :
None of you example can display a top/bottom menu !
Menu is being scrolled like everything else...and therefore is not a menu...
It's okay if you've got very few to display (like test apps !!), but as soon as you have real content to display, you're doomed.

48 Posted by ppk on 23 November 2009 | Permalink

Well well. audio and video tag call QuickTime, and they can't be played inline in a web page. Thanks!

Unfortunately that means audio apps can't be ported to the Web, either. Yet.

49 Posted by Jeremy on 23 November 2009 | Permalink

What an incredibly naive (and yet surprisingly hostile) post. You lost a lot of my respect with this one oh wizard of quirks :-( There are WORLDS of difference between iPhone apps and web apps for the iPhone, and if you'd ever actually tried to develop any one of those apps on your phone that that you claimed could be re-done as a webapp you'd INSTANTLY realize this to be the case (for the many reasons already list by other posters).

I'm all for using more web tech too, but this is just dumb.

50 Posted by Aaron Farnham on 23 November 2009 | Permalink

I have been thinking about the same issue the last couple of weeks (see my post on Nov 9 about the same topic: http://afarnham.posterous.com/leverage-in-the-mobile-market ) and come to the conclusion that it is mainly a case of following the money. Mobile web apps on the iPhone had a 1 year lead and did very little in that time compared to how fast the iTunes app store took off. I think the cause of this was mainly do to the lack of a sales channel for the web apps. There were a few successful ones, but due to the ubiquity of iTunes, native apps were able to bring in a ton more money in a very short time.

So if you want to make help make mobile web apps a reality you need to find a way that replaces some of the marketing and sales channels of the AppStore. Obviously no distribution channel is needed (thanks internets!).

I do disagree about developers writing solely because they prefer native to web programming. It is a factor, but marketing and sales are the 800lb gorilla that really make the native SDK case right now. To ignore those is to fail... like Apple did when they first introduced the iPhone without a platform for finding iphone web apps.

51 Posted by John Dowdell on 23 November 2009 | Permalink

Thanks for the post; I want to reread it and the comments later today.

But I'm not sure iPhone developers are "stupid"... a year ago many were attracted by simply getting a check from Apple, and not having to manage the transaction/support details themselves. Apple successfully reduced developers' total workload.

(And as some of the above comments attest, there is also a convenience in keeping the presentation and interaction layers local, as a device application, rather than on-demand as an in-browser application.)

One big problem we have to solve today lies in getting compensated for your creative work. Apple took a positive step forward here. I agree with you that Apple's approach is not necessarily the center of the universe, but we still do need to continue to improve the sustainability of creative endeavor.

jd/adobe

52 Posted by millenomi on 23 November 2009 | Permalink

@Aaron (#50): If only PayPal had a decent mobile interface. *sigh* Things could have played differently. Maybe not very differently, but still.

@PPK: The part of the post that upset me the most was being called "stupid", alongside with all my colleagues, over something I explicitly analyzed before app design. That was unwarranted. *grr*

53 Posted by Juliette Culver on 23 November 2009 | Permalink

Can you list ten good web apps for the iphone? Or indeed, even one? I think I'd find the argument more convincing if there was evidence that web apps could compete with appstore apps. I have to admit that I've even been considering quitting various google web apps for more general use because they work so badly on the iphone.

The other issue too, as has already been pointed out, is offline access which I don't think you should underestimate. Certainly I use my iphone a lot on train and tube journeys when mobile signal is erratic or non-existent.

54 Posted by bh on 23 November 2009 | Permalink

There's a pretty awesome tool that lets you develop using web standards and can compile down to native code for both the iPhone and Android, check it out:

http://www.appcelerator.com/

55 Posted by Alessandro91 on 23 November 2009 | Permalink

I am an iPhone developer. I started developing for this platform when there was just firmware 1.0, and the App Store did not exist. I wrote an application, which is still available on Cydia and updated, which is hybrid Cocoa/HTML.
I have also two apps in the App Store.

Actually, both the apps I have in the store could be easily rewritten in simple HTML and made available through Safari... But why I don't do that??
The answer is simple: because of the App Store.
The Store is an incredible money-maker. It gives you the possibility to sell thousands of copies easily, without too much advertising.
Yes, the approval process is sometimes annoying... But one of my apps, sold at just 1.99$, was bought exactly 1000 times in just 66 days, and it has not obtained a huge success.

56 Posted by Neil Mix on 23 November 2009 | Permalink

@ppk: totally agree that web devs shouldn't get short shrift relative to other software engineers. That stuff is hard! (And painful!) I'll drink that koolaid any day.

WRT to web-app versus native, you're mostly right feature-to-feature but you're missing the most important part: payment and discovery. The App Store provides easy, convenient, and safe billing along with the ability for an app to be discovered. It's a boon for independent developers who, you know, actually have to make a living, and there's no comparable equivalent on the web. THAT's the appeal of the App Store, and that's why iPhone developers are being so "stupid."

(p.s. why does your comment form keep rejecting me for filling in my blog URL in the "Homepage" field? It seems to be working for others?)

57 Posted by Ian Betteridge on 23 November 2009 | Permalink

"Slowness: I don't doubt web apps are slower than native apps, but that only matters for intensive games."

Sorry, but that's utter nonsense. It's essential for any serious application. Responsiveness is a vital part of usability - it's not snappy and doesn't happen as close to instantly as possible, it's not good enough.

The fact that you think that speed only matters for games tells me either that you're happy with simple applications, or that you don't really care about usability. Which is it?

58 Posted by KT on 23 November 2009 | Permalink

This is fine from a purely technological perspective, but what if you want people to pay for your app? For developers of pay apps, the App Store remains the ONLY distribution mechanism available for the iPhone.

59 Posted by Dylan Mankey on 23 November 2009 | Permalink

Your entire point is rendered completely moot by the following:

"... and maybe Apple is working on other device APIs."

Please consider adjusting your half-cocked point of view to something more along the lines of:

"iPhone developers might be stupid at some point in the future, provided Apple provides access to more device API's for web tech."

And even if that happens, it still won't be on par with app store apps. Users will never get over the barrier to entry of paid web-apps. Currently they don't have to think, they just click and its installed. Until there is a universal way to search/sign up/pay for web based iPhone apps, it will never be a comparable technology to native app distribution via the app store.

Note: I've been a web-developer my entire career. And agree with the sentiment that web-development is real development as well as the direction most development is going in the future.

60 Posted by velvet on 23 November 2009 | Permalink

The reason why people hate web apps is that the internet is not around everywhere at every time. When the internet is down for some reason, all the web apps are unavailable. Even on the iPhone there are places where this is true, and they are places where a person would use an iPhone for hours to pass the time (eg. subway, airplane). For the iPod Touch it's even worse.

61 Posted by Stephen Hay on 23 November 2009 | Permalink

You just *had* to open that can of worms, didn't you? ;)

62 Posted by Dave Hulbert on 23 November 2009 | Permalink

Looking through most of the Apps on my Nokia, most could theoretically be ported to web apps. Many would run slowly, but with the right SDKs they could work.

2 apps that wouldn't work are an FTP client and a SSH client. I wouldn't want to give out access details to a third party, and even if I did, I couldn't SSH inside my LAN.

63 Posted by Tom on 23 November 2009 | Permalink

It is a little bit ironic that I can't read a large number of the comments on this page when using the iPhone Safari browser. After about 10 lines, the rest of the comment is hidden by the comment underneath.

Back to the topic: why does having an appalling approval process have any bearing on the creation of webapps? It's not like developers are saying "I hate the app store's approval process, and fuck off all you people who develop web apps" (expletive added to keep in tone with the article).

Webapps have a place right now, and a big future. But so too do native apps. And I think Apple could do a lot to help both.

I really don't understand why you seem to have taken some developers greviances with Apple as a slight against web developers.

64 Posted by Wow, you're totally cool on 23 November 2009 | Permalink

It's so cool the way you curse. You must be really edgy.

65 Posted by Chris Morris on 23 November 2009 | Permalink

The US is built on the concept of a free market, by creating a market inside the market (The App store), Apple is circumventing all the checks and balances and elements of competition that make the free market so good. The whole concept of App stores suck because it lends too much power to corporates...but hey.. if you all want to live in a dictatorship because you believe Apple is benevolent, more fool you.

66 Posted by Andrew Hedges on 23 November 2009 | Permalink

When you mentioned the working title on Twitter, I had a feeling this was going to be a rant. I was open to being convinced, but you fell short.

I've spent the last 5 months building iPhone web apps and I can say, definitively (as others above have mentioned), there are technical reasons why web apps are inferior to native apps.

That doesn't mean many apps wouldn't work as web apps. It does mean the user experience is going to be (at least) subtly sub-par. It does mean you can't (currently) use accelerometer, camera, and other phone features without using a native wrapper (which puts you right back in the store).

To call a whole class of developers stupid because they a) want to make a buck, and b) want to build the best apps they can might make good link bait, but it's a poor argument.

67 Posted by Andrex on 23 November 2009 | Permalink

Awesome, get all the iPhone app developers coding for Chrome OS. ;)

But yeah, I share the sentiment about people's indignation towards web development. On the other hand I thoroughly enjoy programming for Android, though that's because I also like Java and Google's policies are the loving opposite of Jobs'.

68 Posted by E.S. on 23 November 2009 | Permalink

Holy crap you're dumb. Have you even *tried* to make a web app equivalent to the native apps? If you had, you would see that (a) the web "technologies" are "there" only in theory and (b) there are other functional considerations to app behavior than just the placement of pixels on the screen.

69 Posted by Ezmyrelda Andrade on 23 November 2009 | Permalink

I heartily agree. If iPhone app developers started using webapps for the simple html and javascript apps that they are releasing it would clear the bottle neck for the graphically itense apps and programatically complex apps that are more suited for the app store.

Touch DJ was finally released with few changes and it was clear to Amidio from the start of where the restrictions layed so the only logical reason it could have been in the approval process for as long as it was was the sheer amount of crappy html and js apps in front of it in the cue.

70 Posted by Dej on 23 November 2009 | Permalink

I'm an African and the word that stands in the face of web technology is the word "offline". Until the web technologies give me full offline functionality on my iPhone, then native is the only way for a connection challenged society to enjoy the iPhone. Apps like the Reuters iPhone app, facebook, twitterific, and so many others allow me to go online, grab the data and consume it offline. Apps like the yahoo app, don't. Until we have cheap continuously available Internet access, web technology leaves us at a significant disadvantage.

71 Posted by Paul on 23 November 2009 | Permalink

I think there are pro's in developing via HTML (I myself have written a game using the latest HTML5 tags) to emulate simplier flash / appstore stuff. It's alittle quirky making sure it runs on various browsers and all that, but I think that the two main disadvantages with HTML5 at the moment would be that all the resources (sounds, video etc) have to be downloaded first (some may be on a slow connection) and the fact that anyone can view your souce code - ok don't mind that to much.

However if you want to make money for your work, the app store looks like its gives you more chance for that possiblity.

72 Posted by Mike Riley on 23 November 2009 | Permalink

I agree with your argument but I also thing you're overlooking a huge problem with developing on the web for the iphone. You describe the "instant meritocracy" and how users will immediately bookmark your application if they think it's cool, but you're making a big assumption here, in my experience users are much more apt to install applications than they are to bookmark websites to their home screen, not because there is any advantage to one or the other, but because it's what they are used to. It's a gigantic disadvantage imo, in general I think more of an effort should be made to educate people that many iphone applications, for all intents and purposes, could have a fully functional implementation as a website, but the key is that both developers AND users need to have this knowledge imparted for it to work.

73 Posted by Daniel on 23 November 2009 | Permalink

The problems with doing web based apps for iPhone are:

(1) Doesn't work well for graphics heavy games (main reason I ruled it out for us) - if iphone safari supported flash this would change

(2) Different (more expensive?) marketing channels: on the web search (goog), viral (facebook) and media (reddit/tc/etc) are the big channels. None of these are big on iphone so you need a something like the Top100 list to get any significant volume. I think it would be very expensive to acquire a large user base for an iphone web app (mobile web based ads would likely be your best bet and they costs about $1/user acquired which is way to high) ... i have lots more to say on this topic

(3) Entrenched consumer behavior: saving bookmarks as icons on your phone isn't a common behavior so repeat usage (and thus customer lifetime value) is likely low for web apps (i.e. even if you acquire lots of users your APRU will be low)

(4) No in-app-purchase support (i.e. can't bill to user's iTunes account); alternatives are pay pal, credit card, mobile payments (e.g. zong) or alternative payments (i.e. CPA offers);

Nonetheless all these issues could be solved if someone spent some time trying to solve them: opportunity in there somewhere.

74 Posted by Andrew Hedges on 23 November 2009 | Permalink

@ppk asked me on Twitter for specific examples of how web apps are limited to sub-par user experiences. Here are the 1st 2 off the top of my head:

1. Mobile Safari does not support position: fixed. This means you can't pin a header to the top of the page, nor tabs to the bottom. One clever developer came up with a nearly native feeling workaround using JavaScript and hardware accelerated CSS transitions, but "nearly native feeling" is just a little worse than native.

2. The common navigation model for iPhone apps is to click on one of a list of items to transition to a new page and click a "back" button to transition back to the list. In a native app, you transition back to the list, scrolled to where you left it. The various web app frameworks (iUI, jQTouch, WebApp, etc.) all jump you to the top of the page before transitioning you to the new page because the alternative is to track the scroll position of the viewport and reposition elements so when you come back it's in the right place. The problem is that this requires the application to reset both the top of the element and scroll position at the end of the transition. This causes a "flash" of content as iPhone redraws the viewport. AFAIK, this can't be avoided.

75 Posted by Faruk Ateş on 23 November 2009 | Permalink

I finished my comment / response piece, PPK :-)

http://farukat.es/p347

76 Posted by Josh Greenberg on 23 November 2009 | Permalink

The overall message of this makes sense: if you're writing a basic app and for whatever reason the app store is a brick wall to you, consider the route of a webapp as a secondary means of getting your content in the hands of iPhone users.

Overall, though, writing a "large-scale" app is limited by the performance factor, as many of the comments have mentioned. When you have a webapp that's slower for your users than competing native iPhone apps, you aren't giving your users a solid reason for choosing your app over the others.

Second to speed is another important factor to take into account for developers working on media distribution iPhone apps: there are restrictions on what you can securely do with media content over iPhone webapps vs. local apps.

77 Posted by klang on 23 November 2009 | Permalink

How do I get paid?

Trading agility for cool cash does not strike me as a good deal.

78 Posted by Shim on 23 November 2009 | Permalink

The reason iPhone developers make native iPhone apps instead of web apps is because those are the apps that users...use.

Apple doesn't publicize web apps well. Review websites don't cover them much. And many users don't even know they can save bookmarked sites to their home screens.

Hopefully, that all will change. But right now, the developers are using the platform that gives them the best chance of being used. (Plus, they can charge for the app.)

79 Posted by ppk on 23 November 2009 | Permalink

@Andrew Hedges I'm not sure if I'm convinced by your second point. I just tested it, and when you press Back on the iPhone it *does* scroll the previous page back to the position it had when you clicked the link. It also retains the zoom factor.

There might be problems in less simple situations, but you might solve them by just showing the new page/interface/whatever in a new layer on top of the old one and remove that layer when you're done. The original interface hasn't changed and is shown immediately.

Finally, your mention of the frameworks makes me wonder whether it's actually a framework bug instead of a browser problem.

You're of course right about position: fixed; that IS a serious problem.

80 Posted by Fabien Agranier on 23 November 2009 | Permalink

Its a closed debate anyway, Apple/iPhone policy won't change anytime soon.

At least not on their own, and not until they'll totally lose their control over the mobile world.

We should discuss this with Google/Android.

If Android does that :
- Accept web apps in its store (perhaps it already does)
- Update its webkit to handle position:fixed and overflow:auto correctly.
- Handle Flash player (soon)
- Have decent devices (I'm sorry HTC Hero is nowhere close to the smoothness of an Iphone & its screen is even smaller)
- Takes over the mobile market as Gartner is forecasting

Maybe we'll have a chance with web apps but until then...
I really don't see it coming under the iPhone era.

81 Posted by bunnyhero on 23 November 2009 | Permalink

i always found it sad/ironic that iPhone OS 2.0 added all of this amazing support for web apps (appcache, hardware-accelerated 3D CSS, etc), but it was completely overlooked and ignored because of the appstore. you're right, so many apps (including many games!) could actually be done as web apps instead of native apps.

the only real issue is ease of payment and findability, as many others have pointed out.

82 Posted by Fabien Agranier on 23 November 2009 | Permalink

@ppk:

Thank you to finally acknowledge that position:fixed is a big deal ;)

I confirm that scroll offset is well handled by Safari when we hit the back button

83 Posted by jurg on 23 November 2009 | Permalink

i really like your arguments. and they hold true for the iphone. but the iphone is not the end of mobile computing.

if everyone starts doing what you suggest the iphone will be reduced to a dumb terminal. it will be pretty on the outside, period.

but people want to something else. they want to find the limits of this new technology. but what they experience is being confined by the platform.

yes, we can develop most of the iphone apps with web technology. but that means zero innovation apart from the fact that we can squeeze more function on a pixel.

some things just are not possible with web technologies. and some things just are extremely difficult with just an iphone. they are still difficult with android or j2me based phones. but they serve a purpose. an example is what some friends and i built for the android developer challenge. (http://decaf.9apps.net/) with decaf you can manage and monitor your amazon cloud. you just can't do this without background processes and long running services. just a web app is not enough.

what i realize because of your article is that apple is going to make much more money, for a quite a long time. but the real innovation is going to be somewhere else.

84 Posted by sethaurus on 23 November 2009 | Permalink

Ppk, your rigor and meticulous objectivity have long made you an asset to the web standards community. I'm disappointed to see them replaced here by such spiteful vitriol.

It is to the credit of your commenters that so many of them have dispassionately engaged with your argument and ignored its outrageous tone despite differences of opinion. I wish I could do the same.

85 Posted by Andrew Hedges on 23 November 2009 | Permalink

@ppk, To elaborate on my 2nd point:

Requirement 1: when the user clicks a link, do a native slide transition from the current page to the new page.

Requirement 2: when the user clicks "back", do a native slide to the previous page, scrolled down to its previous position.

To do a slide to the new page, you must have both the current page & the new page in the DOM & transition their positions from/to the visible viewport.

Clicking "back" in this case is not using Safari's back button. It's clicking a button in the web app interface to initiate the slide back to the previous page.

To meet the "scrolled in place" requirement, we do the following:

1. Simultaneously offset the viewport by the previous page's scroll offset & position the current content at top: Xpx, where X is the same scroll offset --> Flash of content
3. Position the previous content at top: 0px.
4. Slide to the previous content.

If you're scrolled down in a list & click a link, we do the following:

1. Save the current scroll offset.
2. Position the new content at top: Xpx, where X is the scroll offset.
3. Slide to the new content.
4. Simultaneously set the new content to top: 0 & the scroll offset to 0 --> Flash of content

I'd love to hear a better solution!

86 Posted by louenas on 23 November 2009 | Permalink

Portability between desktop web and mobile and portability among different mobile devices is key. We all agree that Javascript/Html/CSS is not the best technology out there but it is one of the most popular and most portable one. Your organization can take its web app and make them mobile very quickly. All developers can participate. No platform specific skills are required to get productive.
Right now, one can write native apps using Web technologies on Blackberry (BlackBerry Widgets), Palm Pre using the respective device manufacturer development tools. For iPhone, Android, Symbian and Windows you can use Rhomobile, phoneGap, W3C widgets and/or other Web or hybrid frameworks. All you scripts, Html, CSS, static data, etc can stay on the device if you want. You can also keep part of it remote if you want. And these apps are already being sold in AppStore too.
As for performance, I believe that intensive games will still be written in native code for a good time to come. As of today actually, if you write your JavaScript, CSS, data messages (use preferably JSON) for performance and good usability, no one can notice whether your app is web or native.

Web technologies are becoming slowly the native technologies of choice ;)

87 Posted by Garrett Murray on 23 November 2009 | Permalink

Sorry, but I completely disagree, and I think this article shows a complete lack of understand about the SDK, how it work and its benefits, as well as just how ridiculously poorly Mobile Safari handles user interaction.

Mobile Safari can be clunky, slow, has limitations in layout, loading and animation, and has some really funky issues with multi-touch and other interaction methods.

I make a majority of my money building mobile applications both for web-enabled devices and also native iPhone apps, and while building web applications is certainly much easier from a development/time perspective, the richness of native apps will always win from a usage perspective.

The iPhone SDK and development tools are world-class and work very, very well.

Sorry, you're just plain wrong.

88 Posted by Horsie on 23 November 2009 | Permalink

You claim in the title that Apple is not evil. However, you use the following phrases:

There’s no need to wait for Apple’s broken approval process.

And fucking them real hard where it hurts is exactly what Apple is doing right now.

In addition to avoiding the App Store and its insane policies,

Then why do iPhone developers jump through burning hoops as nasty as the App Store approval process

Therefore He unleashed the scourge of the App Store upon them.

All of these phrases (and others) suggest that you are incorrect. APPLE IS EVIL. Just because you think you have an acceptable work-around, does not mean that Apple is not evil. It does not mean that all developers are stupid.

It only proves that Apple is evil and you are an arrogant prick with a massive chip on his shoulder.


89 Posted by Jeff P on 23 November 2009 | Permalink

I agree 100%, it's a choice. Interesting that those same developers are praising the Pre for its web standards based development environment...

90 Posted by Jonas on 23 November 2009 | Permalink

I'm sure Spotify would make a great web app.

Good luck with that.

91 Posted by Thomas Lukasik on 23 November 2009 | Permalink

@jurg (Re: "if everyone starts doing what you suggest the iphone will be reduced to a dumb terminal")

That IS a very interesting (and historical) perspective. While adopting the classic "Thin/Dumb Client vs. Fat/Rich Client" view of all of this may be (arguably) somewhat of an oversimplification, and calling modern browser technology either "thin" or "dumb" hard to justify, that 10,000 ft POV definitely seems to be at the root of the technological aspects of the larger, fundamental issue.

92 Posted by Kris on 23 November 2009 | Permalink

Gonna have to disagree strongly on this one. Guessing you're not a programmer... to say C is just like Javascript or that a web app is just like a desktop app is flat out wrong. Sure some would convert fine, but plenty would not convert well (if at all) and would likely require complete rewrites of their code. Web apps have their place as do desktop (phone) apps, each with their pros and cons. It's not as simple as just checking the "Webapp" or "Desktop App" box as you seem to indicate.

93 Posted by Dan Lyke on 23 November 2009 | Permalink

I'd absolutely love a mode where I could load pages into Safari from a local source. Give the JavaScript in those pages access to a MySQL database and I'd be ecstatic. So, yes, in theory web apps should do a whole lot of what I expect my iPhone to do.

However, as others have pointed out, net coverage isn't sufficient or reliable enough to make good apps (even if we turn off 3G so pages will actually load more than half the time).

And even at that: do you use the online version of Facebook and Twitter, or native clients? The clients protect me from slow network, do net in the background while I'm reading, and are way more responsive than Safari.

So, nope, not buying it. Native apps respond faster and don't depend on the capricious whims of AT&T's coverage and capaibilities.

94 Posted by John Fredrickson on 23 November 2009 | Permalink

I agree that Mobile Safari has been overly ignored in the shadow of native apps, but without the additional publicity available from being in the app store, it's going to be hard to convince developers to move to the web simply because they can. I don't think these developers that are crying about being mistreated by apple aren't aware that they can move to the web instead, I think they simply realizing what they are losing by not being in the app store.

95 Posted by @RandyMcMillan on 23 November 2009 | Permalink

I've never had a problem getting an app published.....

Apple created this technology...they can govern it anyway they like......

96 Posted by Abbi Vakil on 24 November 2009 | Permalink

Good argument but how do you make (serious) money? Last I checked, no 1 was paying for access to websites anymore, so that model is dead. Don't say advertising because that model seems to only be lucrative for someone like Google. And even if you could get people to pay for access to your web based app, how do you handle the back end transaction processing for such small amounts?

97 Posted by Look on 24 November 2009 | Permalink

There is a crazy unjustified hate wave towards Apple. The conformists bloggers are just so boring. The funny thing is that Google which is the sneakiest company manage to steal public opinion easily (while indexing your entire life + adds!

.
.
.

98 Posted by Mike on 24 November 2009 | Permalink

Many of your points are valid -- you posed one question however: "Then why do iPhone developers jump through burning hoops as nasty as the App Store approval process...?"

It's all about monetization man! I agree, web apps are the way to go, but until there's a monetization process for web apps that can beat Apple at its own App Store game (and heavy marketing) the gauntlet of the App Store is the only path to make any money.

99 Posted by Mario on 24 November 2009 | Permalink

Agree with you on most points. But I don't feel that Apple has ignored web devs. I feel it has been the other way around and then it turned on a circle vice. And the fact that other browsers have been slow to implement CSS transistions is a very good example. I'm a web dev and my main dev browser is Safari. I would totally prefer to code a web app for the iPhone than learning a whole new language and framework...

100 Posted by Dave Hulbert on 24 November 2009 | Permalink

If applications for a Mac OS X had to go through Apple's approval process (who knows, some day they may), then would web apps (like Adobe AIR) be the main way forward? I, for one, would move to a platform where I can freely run my own native code.

101 Posted by Fabien Agranier on 24 November 2009 | Permalink

@Look
What's so wrong with targetted ads? I prefer seeing 1 or 2 ads that can be useful to me than having loads of random ads that doesn't interest me at all!

I prefer being indexed (Google) than being jailed (Apple) !

102 Posted by luke on 24 November 2009 | Permalink

does apple make money off of webapps? im pretty sure they dont, so why would they want to piss ppl off so much that they do this?

if that is true, webapps also lessen the "stickiness" of the iphone. when my contract runs up, yea id love to get off this crappy network and suffer through a somewhat worse phone...oooops already dropped $25+ on apps on my iphone which almost doubles (i can do without some i bought) if i move to a new phone...

103 Posted by samuel black on 24 November 2009 | Permalink

Before the sdk, I tried a few web app calculators, and they all sucked. The worst native calculator is better than the lot of them.

It's just one example, and things may have changed, but as a user, I hope developers stay stupid.

104 Posted by Thomas on 24 November 2009 | Permalink

"The iPhone’s Safari browser is one of the best mobile browsers available, and recent improvements in hardware acceleration have made it an excellent graphics platform that can handle serious 3D-animations written entirely in CSS."

Ah, come again?

105 Posted by Thomas Lukasik on 24 November 2009 | Permalink

@samuel black Perhaps, but a calculator is also a very poor candidate for a Web application. Generally speaking, if there's little or no "content" involved, then there's not much of an argument for taking a Web development approach.

106 Posted by Tristan on 24 November 2009 | Permalink

Hi,

There is one thing that you seem to forget here. Apple has no incentive to improve Safari on the iPhone, because it undermines the position of the native apps.

To some extent, they're in the same position as Microsoft a decade ago: improving the browser that runs on their platform is bad strategy because it weakens their native app business. This is why Microsoft has disbanded the IE team and left us with a stagnating IE 6 for so long.

So don't hold your breath on Apple improving Safari on the iPhone in order to support features that would enable Web apps to compete better with native apps. We may wait for a very long time for Apple to implement hooks to the GPS and the accelerometer. Same for any technology that would enable "graphically and programmatically intensive" apps to run in the browser.

That is, unless other mobile vendors compete well enough in terms of embedded browsers so that Apple has to improve Safari... (which is what I hope will happen).

(Disclaimer: I work for Mozilla, but these words do not necessarily reflect the opinions of my employer)

107 Posted by Joost Diepenmaat on 24 November 2009 | Permalink

Correct me if I'm wrong, but IMHO one of the most important reasons so many developers want to use the apps in one way or another is that you can - easily - get payed by selling them: the process for the user is simple, apple handles the payments and users are actually willing to pay for apps.

Try doing the same for a "pure-web" app. At least some people are complaining so loudly because they feel they're being frustrated in getting payed back on their investment, not because there aren't potential customers, but because Apple is getting in the way.

As far as technology is concerned, you're probably right, though.

108 Posted by steven on 24 November 2009 | Permalink

this is a pretty funny post. bravo.

although i must admit, i don't see reason to call p.graham stupid.


regardless, excellent work. i have yet to delve into webapps.

109 Posted by kL on 24 November 2009 | Permalink

So you're saying developers are stupid that they haven't chosen _in the past_ platform that may be viable _in the future_?

No sound, no accelerometer, poor scrolling, no vibration, poor maps API, poor performance - are the issues *now*.

"but it may be fixed soon" is stupid argument for decisions made in the past.

110 Posted by jcak77 on 24 November 2009 | Permalink

So if I understand you, you're saying developers are stupid because they don't use a platform that doesn't exist yet (a version of Mobile Safari with access to camera, accelerometer, opengl es, etc thru javascript) and struggle with the only process available right now?

Nice troll!