About that Section 3.3.1 of the new iPhone SDK

A quick recap : that section enforces the use of Objective C, C or C++ for iPhone app coding. First reaction is obviously hostile (quite legitimately, IMHO).

More interesting, however, are the following short exchange between an iPhone developer and Steve Jobs himself, and John Gruber’s rethinking on the subject. It boils down to Apple not liking layers over their SDK because they feel they hinder software quality.

My personal experience very much agrees with this. Unless you’re under exceptional circumstances or requirements, you generally don’t want to add some cross-platform layer between you and the native development framework. An exception is if the framework is really too low level and calls for a higher-level one, but if Objective C was higher level, it would be a scripting language. An intermediate layer generally means that it will make simple things easier, but will make everything else (anything not directly supported by the layer, and debugging) a lot harder (especially debugging). It also means you depend on the vendor of that layer to support the last available features of the platform it wraps. And if it’s a cross-platform one, you’ll only get the lowest common denominator.

That said, while I understand Apple’s effort to maintain a globally high level of quality on the App store (they do advertise quite a lot about it), I really don’t think actively blocking these other frameworks is a reasonable move. First, it looks paranoid and bitchy. Apple can be that, more often than not, so adding more to that trait doesn’t help. But more importantly, these frameworks still may serve a useful purpose. In many cases, an application can be just “good enough”. Even if that’s hardly Apple’s style, an ugly, poorly integrated but useful and working application is better than none at all.

Another possible reason I see for this is the need to be able to easily audit applications, especially given the new multitasking features of iPhone OS 4, which have some aftertaste of cooperative multitasking.

But ultimately, I think Apple should do what Google did with Android : an official App store where what you buy is Apple-certified, and allow alternative App stores where you’re on your own. That said, I don’t know how the average user would handle that.

While I’m at it, Apple should also do the same for Mac : create an official Mac OS X app store, along with the current means of software distribution (i.e. downloads from various http sites). Think Linux distribution repository.

Edit Apr. 17th 2010 : An interesting alternative view on the topic from Steve Cheney is that by enforcing the use of XCode, Apple ensures its independence of the hardware. Indeed the transition from PowerPC to Intel went remarkably smoothly, and the fact that Apple provides the main development toolchain for OS X is a big reason why.

Edit Apr. 21st 2010 : Right now the download pages at apple.com are no longer being updated. And from the comments on this tuaw post, it seems I’m not the only one thinking that a Mac App Store is in preparation :-).

Edit Apr. 26th 2010 : well, it seems that no, there won’t be a Mac App Store. Can’t be clearer than that.

6 thoughts on “About that Section 3.3.1 of the new iPhone SDK”

  1. Oh, please.

    In the first place, iEvil’s claim that apps written in layers over the SDK have poor performance is a naked assertion, and your “experience” doesn’t validate it. Let’s have some actual benchmarks before you start lining up to defend something as indefensible as this.

    The truth is that iEvil doesn’t want developers to be able to develop for multiple platforms, it’s that simple, and all this other bilge is a pile of steaming facile rationalizations. ‘Droid is going to destroy iPhone, and Jobs is just trying to slow down the inevitable collapse of his market.

    What Google should do now is come up with a device that also competes in iEvil’s iPod/Touch market space. Then I can point my niche app users who don’t want to buy an iPhone to a more developer — and therefore more user — friendly vendor.

    1. Should I really reply to a comment which calls Steve Jobs “iEvil”… Do you spell “Microsoft” with a $ instead of the the ‘s’ too ?

      Anyway, I never mentioned performance (though it is sometimes an issue in some cases), I mentioned the quality of the resulting application, and the problems you’re likely to encounter while developing it. As for my experience – I think you can spare the quotes around it – I’ve co-maintained such a layer over an existing framework for several years, and did some development using it (which every reader of this blog knows). I also know Qt quite well, and therefore its limitations as a cross-platform toolkit.

      As for the rest of your comment, we’ll see if Android does “destroy the iPhone”. I doubt it will, in the same way that Linux failed to “destroy Microsoft”. Users don’t care about how the app they’re using it written as long as it works properly. They want a seamless experience, and so far Apple is still in a much better position to provide that. As for your implication that “developer friendly” means “user friendly”, well, it perfectly sums up your misunderstanding of the problem.

      The irony, though, is that Apple is quite developer friendly – as long as you play by their rules, of course. But the development tools they provide, be it for Mac OS X or iPhone OS, are extremely good.

  2. This is certainly an “interesting” topic.

    One thing that intrigues me is the imprecision of the clause in question — there is a lot of scope for creative interpretation on Apple’s part (in either direction). Maybe that is inevitable with legal attempts to proscribe technical means. The language is a bit reminiscent of the Qt commercial licence, which has a similarly hard-to-scope clause forbidding the use of any code “initially” developed using the Qt open source edition. I once queried a few specific cases of code reuse with Trolltech to try to establish whether they would be permitted or not, and came away with the impression that they didn’t really know either. Clauses like that are risky to engage with, especially when there is evidence (as with Apple) that the company is prepared to change them without notice.

    Historically this sort of thing doesn’t seem to have worked too well; the lesson of the last few decades seems to be that platforms that are easy to develop and flog any old crap for (and frankly this has been the iPhone, so far, in this space) are more likely to succeed.

    Apple has spent much of that time in the PC market acting as the more controlled platform (in comparison to the free-wheeling chaos of Windows), which has worked well for them in generating an impression of quality within a smaller market segment, but this is the first time since the early 80s that they have been in a position with the potential to dominate a new market. So it will be interesting to see how this apparently traditional Apple tactic works for them in this wider sphere — presumably the goal is not to simply maintain their existing niche image, so what is it? They can’t possibly think they are already dominant enough to be able to give developers a choice of “Apple, or everything else” and win. Can they? Are they? Can the less open platform become the dominant one? It doesn’t usually happen.

    Although, what is difficult in thinking about this is that the reasons for Apple’s success so far appear to be about delivery rather than development — the main cause of iPod’s success was iTunes, a principal reason for iPhone’s broadening success is the app store, etc. So far other companies have found this surprisingly difficult to do. Why? Is it because Apple is so confident in their niche market segment that they feel able to start out by disregarding the demands of third-party developers who would otherwise insist on having the same delivery system that they are already familiar with? Is it just that there is no existing delivery system that works for these platforms? When I wrote above that generally the dominant platform has been one that is more chaotic and more open to the whims of developers, was I missing the point? — is the dominant platform in fact just the one that is most open to the delivery and sale (rather than development) of its software? Are Apple just recognising that as long as the technology works and the delivery mechanism is the best available, they can squeeze the developers as much as they like? Is there any existing company that can succeed in doing an even better job of facilitating software delivery than Apple has? Can Google?

    Ah, so many questions.

    (Incidentally, I don’t believe for a minute that ensuring software quality has anything to do with this.)

    Finally, about the suggestion of making an app store for OS/X — the problem with that idea is that OS/X as we know it is probably supposed to die out as a consumer option. Don’t you think?


    1. Hi Chris,

      I don’t think that the iPhone and Mac (or more generally personal computers) development ecosystems are really comparable. Users don’t expect the same kind of services from either platforms, you won’t mind tinkering around on your computer, but you really want your phone to work.

      So while I generally agree that a more open platform is more likely to succeed, I also think that this is a computer-bound criteria, mostly geek-oriented, and therefore doesn’t necessarily translate to the mobile platform.

      That said, Apple tactics are also different on the iPhone from those on the Mac. Or more precisely, they are similar in principle but pushed much further : much tighter control but also a much more thorough service, and so far users seem to like it. I’d argue that this is one of the reasons why they had such a success in this market.

      You mention the iPod, but note that it has so far remained dominant even though it’s just as locked as the iPhone, since it requires iTunes to be used, while many other mp3 players act as USB mass storage device, which can hardly be more open.

      I doubt that Apple thinks it can squeeze the developers as much as they like. Quite the contrary, given the quality of the development tools they provide (both for the Mac and the iPhone) and the wealth of information freely available, it’s more like they pay a lot of attention to them. However they don’t want them to be a source of trouble within services that they provide to users (which makes sense). And as you note, these user services, that is, content distribution, are key to Apple’s success. So they require devs to provide products fitting Apple’s quality standards.

      Will a challenger rise and take over Apple as the most convenient content distributor ? I don’t know, so far I can’t see any. They’re very well positioned on all the strategic points required to achieve this status (infrastructure, strong reputation, ability to deliver a service, access to large content catalogue, complete control of their platform). I actually see Microsoft a more likely contender than Google.

      You say you don’t believe that ensuring software quality has anything to do with this – fine, but then what’s the reason ? Apple are control freaks because it serves a purpose, not out of some silly doctrine.

      As for OS X not being a consumer option in the future, I very much doubt that. The iPad/iPhone UI is too limited for many of the uses Apple has traditionally touted the Mac for (i.e. content creation, rather than only consumption).

  3. Mm, you see I don’t think I agree with the opening analysis in your comment there. I think that most people’s expectations for computers and (smart-)phones are not all that different, it’s just that in most cases with computers their expectations are thwarted.

    In other words, people do also want their computers to just work. Yet in most cases they nonetheless buy computers that do not. I think that to reason about possible sales and market share and suchlike you need to look at what has actually happened in the past, not just work from what you think should happen. If consumers acted rationally, the Mac would have been the dominant platform of the last 30 years. Of course, the past isn’t necessarily a good guide but it’s probably a better one than “common sense” is.

    I suppose my argument is that platforms on which it’s easy to sell software (i.e. on which software development is not too hard and software delivery is simple) generally seem to have been successful even where they are not the best platforms to use. Perhaps you disagree with that.

    re. the iPod, although I was talking about platforms for software, perhaps the same logic holds: the iPod is the more effective platform (than other music players) for delivery of “content” in the sense that record labels etc can provide stuff for it and know they will be paid.

    I guess this means that what I’m talking about is being “easy” (to produce and deliver software for) rather than necessarily “open”. And I am wondering whether Apple will reach a point where their technical restrictions make things sufficiently “harder”, for the developer, to outweigh the advantages in “ease” of their software delivery system. That would require another provider to have a comparably easy and effective delivery system, but when that happens, it’s possible that technical factors may then take over.

    I don’t know. I don’t strongly disagree with you on any of this, but it’s a compelling subject because (unlike many software-business affairs) it gives me a nagging feeling that I could actually work it out if only I thought about it for long enough.

    About software quality, the main reason I don’t think that’s the primary purpose is simply that I don’t think this would be an effective way to do that and Apple are not that stupid. Whimsical and capricious, but not stupid. As has been pointed out endlessly elsewhere, there are plenty of crap applications written natively and Apple already have the right to reject (or classify) on quality grounds. Portability is a bit more convincing though.

    I will be interested to see what happens with the downloads page. I have one small application on there, which funnily enough was written using a cross-platform toolkit and which Apple then picked up as one of their “staff picks” — quality software, you see! My impression was that the service is useful but a bit of a mess behind the scenes (I have that impression about a lot of their web stuff). An app-store alternative might be interesting.

    I do think the long-term plan is to have most of the devices sold “into the home” use the iPhone/iPad OS though.


    1. I’m not so sure that if consumers acted rationally, the Mac would have gained dominance. Now consumers do not act rationally, that’s a given. However, the Mac suffered in the beginning from many problems, it’s only since OS X that it’s faults are largely offset by its qualities.

      I do agree however that platforms on which it’s easy to sell software are more successful. Example : Windows. Counter example : Linux.

      Regarding Apple imposing more and more tech restrictions, well, I obviously really hope it won’t happen. The backlash would quickly reach huge proportions. Just yesterday a rumor circulated that OS X 10.7 would only run Apple signed binaries. The comments were telling enough, even if few bought it at first.

      About the software quality control issue, I disagree with you. Apple can much more easily audit a binary compiled in XCode, knowing then that it will only use permitted APIs. That falls more under the “security control” category though, but it’s a valid possibility nonetheless.

      Let’s wait and see what happens next with the download pages :-). May be it’s just a temporary glitch.

Leave a Reply to Chris Cannam Cancel reply

Your email address will not be published. Required fields are marked *