Why I hate the iPhone

I hate the iPhone… no, really I hate the iPhone app platform. Why? Because it’s pushing the mobile web backwards and is a walled garden. It’s terrible.

The promise of the web, and the mobile web, as I see it, is the openness of building on a single platform accessible to all. You can - for the most part - access the same sites on Firefox as you can on Internet Explorer, Chrome, Safari, and Opera.

Imagine if I told you that you couldn’t read my blog unless you had a certain computer using a certain browser… and even then you potentially had to pay for it. It sounds archaic and idiotic, and it sounds like the iphone app store.

Building for closed platforms, and making programs that are not universally accessible, stifles innovation by limiting the number of participants. I can’t believe the amount of hype that the iPhone app store gets, when it’s terrible for the mobile web.

I’ve been against the premise of platforms since the Facebook platform started - that seems to have killed itself off, and I can only hope that the same happens to the iPhone app store. I’m hoping that more developers start to act like Google in the world of mobile, but even that strategy requires the right browser.

Mobile is still an odd animal, in that not all mobile phones can the same technologies and browsers do vary widely based on your phone. However, the problem of unequal capability does not go away by building for a closed platform… it goes away by building for open browsers that work on multiple platforms… like skyfire, or android’s browser (eventually, at least that’s what we’re told). You don’t have to look any further than Microsoft to see the problems that occur, and lack of innovation that happens, when everyone focuses on building for one closed platform.

Hey, I’m not sure about this one - the iPhone’s browser does standards-compliance very well (I first read this post via my iPhone, through google reader, then the site, which rendered nicely). The entire web (minus Flash, which I don’t miss) seems to render quite well (and freely) on mobile Safari. Plenty of sites are getting optimized for mobile safari, and usually in ways that apply to other devices as well (the inability to reach back to orientation detection and other hardware-stuff is viewed as a minus for web app developers, but the alternative would be evil proprietary extensions).

That said, sure, the App Store’s approval process and software signing is an odd approach and reflective of the old, dirty business of mobile phone app stores. But it isn’t completely separate from open-source code, there are plenty of apps which are open sourced now and use lots of gpl components…

And Android, while cool, can only be called a half-reality with the odd implementation and odd amount of focus Google seems to be giving it.

I have no problem with building things that work cross browser and in many environments - like google reader. My problem is with the walled garden that is the app store. If you build an iphone specific app you are supporting the development of a platform that severely limits access to your app. I know that doesn’t seem to be the case, because apple has done a great job with creating adopters out of its users, but you’re creating for a non-universal platform, when you could be creating a universal app that runs independently of the phone. The most popular iphone apps are apps for checking the weather and social networks like facebook. Why not create a universally accessible version that works on multiple mobile devices?

Even if you believe that by building for the iphone you are taking advantage of the best available technology and pushing the envelope, that logic stops when you tie your app to the app store. You hinder development of other technologies / open technologies when you build around a single platform. I guess my problem is really that I believe an app should work on any phone. In the current stage of mobile development, it may seem like making a universal app limits your ability to take advantage of next gen phone technology, and that may be right. But, I don’t think limiting accessibility by placing apps in the walled garden of the app store is the right way to address that issue.

You might be interested in Rhomobile, which lets you cross-compile HTML & Ruby into apps that run across platforms. There’s also a game framework which does the same thing…

So apps can sort of work on multiple phones, but I think your expectation of perfect portability is something from the web, while the iPhone OS is, of course, an OS, a subset of OS X. The standard language of iPhone development is Objective-C, just like OS X development, not Javascript or another standard, scripting language. Sure, portability between mobile devices sucks relative to web content, but it sucks in every other compiled-user-software realm, even (no, especially) in free environments like Linux. I’m not sure how Apple could have fixed this problem in this realm besides removing the possibility of compiled user applications and made everything HTML/Js… cross-platform toolkits (.NET, Qt, Swing) have never been the stars of the software or UI game.

Tom - that’s a very valid response. I think my issue is less with those that are building to take advantage of the iphone’s architecture that couldn’t utilize the web, and more with those that are merely doing things that they could be building for the web, but are instead building apps. Like Yelp.

I do expect portability, because I expect that we’ve learned from the desktop world that we will eventually move to cloud computing. Why start over with mobile platforms? Why not start with the idea of cloud computing earlier in the mobile development cycle?

Valid points, well taken. I think my thinking is more - why build apps for one os, when you could simply build for the web?