Apple and multi-platform apps

Steve Jobs has said developers won’t be allowed to write multi-platform apps for Apple devices. Software for the iPad, iPod, or iPhone has to be written specifically for those devices because developers are incapable porting software worthy of running on an Apple device.

I doubt Steve Jobs is sincere in the reasons he gives for blocking cross-platform applications. It seems more plausible that he simply wants to keep certain players (e.g. Adobe) off his devices. But let’s take his reasons at face value for the remainder of this post.

Apple is judging one piece of software by the existence of other software. Here’s an application X. It runs on the iPhone. Is it kosher? Well, that depends on whether another application Y exists that has similar functionality but runs on a different operating system! Application X is not being judged on its own merits. It’s as if there were some sort of quantum entanglement between applications X and Y. Like two particles separated at birth, they remain connected to each other in some spooky way.

Imagine applying for a job at Apple. You made a good impression in the interview, but before they make you a job offer, they have one more question: Do you have a sister who works for Adobe? They cannot hire you based on your credentials alone. They have to know first whether you have a sibling who works for a competitor.

This post [Update: dead link removed] defends Apple as follows:

Multiplatform applications are bad.

They look alien. They are not stable. Their main code is not native to the OS they are running. They cause confusion to some users and they can destabilize the whole OS.

I partially agree. I would say that multi-platform applications are often bad. They often look alien and are not stable.Years ago I could immediately spot an application were written in Java. (Since that time things have improved.) I don’t mind whether my software is written in Java, I only mind if I can tell it’s written in Java.

If Steve Jobs’ only concern were protecting the experience of his customers, he should ban software that acts like a port from another operating system, i.e. software that looks alien or is unstable, regardless of whether it runs on another platform. What matters is the quality of the software, not the existence of some sibling application.

21 thoughts on “Apple and multi-platform apps

  1. If Apple’s primary reason for banning multi-platform apps is to block Flash (ie. to retain control of their platform) then they should stick with that, instead of talking about quality, when they have plenty of horrible quality apps that remain. Similarly, they should stop having such a ridiculous charade of a review process for apps for quality content/usefulness, when fart and swimsuit apps abound.

    Being controlling is one thing, and we can take it or we can take our business elsewhere. But don’t lie, because consumers will call you out on it, and that’s exactly why Apple has been getting so much flack about it.

  2. Chris, I would disagree that iTunes and Safari are truly native apps on Windows. At the instruction level they are, but they look and feel like Apple software. (See this parody: Bill Gates Bans iTunes From Windows.) Jobs would not allow analogous software on his platform.

    Perhaps “ridiculous” is too strong a word. At a minimum, let’s say Jobs is pursuing his objectives indirectly. If he really wants to ban software that doesn’t behave like a native app, he should do that. What matters is whether an app feels native, not whether siblings exist on other platforms. Some Java software only runs on Windows, but it feels foreign. But Firefox runs on many platforms, and feels like a Windows app on Windows.

  3. Daniel Lemire

    Some researchers write their papers specifically for a conference or a journal. And this makes a lot of sense as they are increasing their acceptance rate. Me, on the other hand, prefer to write papers “in the abstract”. Whenever I’m done, then I go look for a journal or a conference.

    Software-wise, the same choice applies. Both carry different risks. If you cater to a specific platform, you risk becoming a “me too”. But if you develop something without a specific platform in mind, you risk appearing out-of-place.

  4. Mike, that bring up an interesting point: how strictly do you interpret Apple’s terms? ReBirth seems to violate the strictest interpretation.

    Here are the terms:

    3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

    How do you make sense of “originally written in …”? Seems almost impossible define objectively. If you prototyped your code in VB before writing it in C, does that mean it’s verboten?

    It’s an absurd requirement, unprecedented as far as I know.

  5. I don’t understand why you doubt Steve Jobs’ stated reasons. They seem perfectly legitimate to me. John Gruber has a nice post here where he discusses some of the history with Apple and third-party frameworks. This isn’t about any individual app (or set of apps) or any individual developer, it’s about who controls the platform. Apple has made it clear that they control their own platform.

    Look what’s happening with Android, where practically every phone runs a different version of the OS, and customers are at the mercy of the carrier with regards to upgrades. Yecch.

  6. Chris: Apple certainly does control their platform. By contrast, Microsoft was nearly split into multiple companies for making their web browser the default browser on Windows.

    I don’t object to Apple (or Microsoft) controlling its own platform. Let consumers decide how much control they want their vendors to have. I just think Jobs is either being hypocritical or ridiculous.

  7. I always thought that going after MS for making IE the default on windows was stupid and set a bad precedent. There were plenty of other things they did that seemed to violate anti-trust laws.

    I still don’t get the “hypocritical or ridiculous” part. What are the examples of Apple (under Jobs) trying to do what Adobe is trying to do—establish a cross-platform development environment? It seems to me that when Apple has wanted to put its own apps on other platforms, it has produced native apps, e.g. iTunes and Safari on windows. Is there some way in which those are obviously sub-standard ports?

    I think mostly what we are seeing is Apple trying to figure out how to establish and manage this new platform (which is only two years old with respect to third-part apps). Sometimes they go too far, but I think it’s mostly just growing pains. Not very pretty to watch, though.

  8. John, just one last comment. I don’t think Jobs’ goal is to “ban software that doesn’t behave like a native app”; his goal is to ban third-party development environments, especially cross-platform ones. (Which I think are the only extant third-party IDEs for iPhone OS.) Eliminating software that doesn’t behave live a native app is one desirable result (from Apple’s view), but it’s not the only result or even the main one. As Jobs said in his essay “We cannot be at the mercy of a third party deciding if and when they will make our enhancements available to our developers.”

    Now you can argue that it’s not Apple’s place to make this decision, but I think it’s wrong to ignore this aspect of the situation. That’s the real heart of the issue—who makes the tools that developers use to write apps.

  9. Where I wrote “third-party development environments”, I should have written something like “non-native third-party development environments.” I don’t think Apple would care about third-party IDEs for writing Cocoa code for iPhone OS. Not that any exist (discounting things like BBEdit+xcodebuild).

  10. When I heard

    We cannot be at the mercy of a third party deciding if and when they will make our enhancements available to our developers

    my immediate reaction was that he was saying

    Developers are too stupid or lazy to make native API calls.

    Every framework I’ve ever used has had an escape hatch to let you go a level lower if you want to: Java has JNI, .NET has PInvoke, Python can call C, etc. I find it hard to imagine that third party development tools would prevent calling native APIs.

  11. Brendan Dowling

    This isn’t accurate. There are multi-platform apps for the iPhone already. A very good example of which is the game Plants vs. Zombies. Many other games are cross-platform. So they are not banning applications based on exclusivity.

    What they are banning is third party application frameworks that do not allow access to the native iPhone API’s. Flash applications typically don’t have access to native platform code, even with Flash Air, which is designed for desktop-like applications. If you read the Adobe Air Developer FAQ, developers are specifically told that they cannot make native API calls.

    So if Apple added a new Smell Sensor API with the iPhone 5 that would allow applications to return information about environmental smells, it would be impossible for Flash Air developers to access that API until Adobe supported it in Flash. That’s what Apple doesn’t like.

  12. Apple is quite possibly insisting that developers use Apple’s development tools so that there is an easy path to migrate applications to new processors.

  13. Brendan, I didn’t realize that there are frameworks that don’t allow native API calls. I am surprised. That makes Steve Jobs’ argument a little stronger, though it still sounds a little flimsy to me.

    As for Plants vs. Zombies, does that imply that the real impact of section 3.3.1 is that vendors must write applications “originally” for Apple devices, unless Apple has no commercial or personal interest in blocking them? ;)

  14. Brendan Dowling

    Hi John. As for section 3.3.1, I think the first sentence is the most important. The second sentence seems to be a rambling, incoherent mess of an attempt to explain in more detail.

    To me Apple’s stances about iPhone OS development has been about “burning the boats”. They want developers to fully embrace the new platform and its new usage paradigms. The best apps embrace this. The worst ones tend to be cludgey and require using your finger to move around a virtual pointer on screen as if it were a mouse.

  15. Brendan, I respect the “burning the boats” thing, and I wish Jobs would come out and say that. And maybe he did. But he also said some other things that rang hollow. Maybe we’ll look back on this in a few years as a brilliant move on his part. Or maybe we’ll look back on this as an act of hubris that alienated developers and provoked anti-trust law suits.

  16. Chris, in regards to your statement:
    ” It seems to me that when Apple has wanted to put its own apps on other platforms, it has produced native apps, e.g. iTunes and Safari on windows. Is there some way in which those are obviously sub-standard ports?”

    Have you USED iTunes and/or Safari on Windows? iTunes, in particular, generally displays abysmal performance on Windows. And, as mentioned above, neither makes a great attempt to follow Windows application styles or conventions. They look like…well…Adobe Air apps…

    And let’s not even discuss the level of support you receive from Apple on issues with Windows applications.

    Mr. Jobs has the right to define his platform however he sees fit. I just don’t think he’s being remotely honest about it.

  17. The one who controls the API controls the platform. MS knew this from the beginning, and WIN32 is its golden boy.
    Behind section 3.3.1 I read a company that don’t want to loose the control of their developer base. Think for moment, Flash is the only technology that developers can actually use to make cross-platform mobile apps. Unstable? yes, Ugly? maybe. solve a real problem? you bet!. It was a matter of time before Adobe would polish their tools making it the most perfect tool for developers to use. Apple was intelligent enough to stop it (Flash) before they went viral inside the platform, something MS failed to achieve during the Java wars. (Being VB6 the most notorious casualty)

  18. the trend is clear, commercial operating systems are becoming “police systems”, DRM, locked software, locked development, rent your hardware,… the rest are excuses. Just like totalitarian police states, with the excuse of “safety”, “stability” (political), and “aestheticism” (good morals) they oppress people and heavily tax them.

    The other day I was talking with a friend of mine, who owns an old iBook G3. He was complaining that he can not open some recent file and basically Apple doesn’t provided software updates for this hardware. After doing some research I realized that she can install Linux on that PPC, Ubuntu 10.04 for example, isn’t that ironic? Steve Jobs will let you down, again and again and again.

    It is like a oppressive police state that doesn’t even care after their citizens. If at least Apple did that. Come on, cross the Wall, and bring your hardware with you.

  19. alfC, it doesn’t bother me that Apple products are closed. Closed systems have their advantages, and many consumers value those advantages enough to tolerate the restrictions. What bothers me is the audacity of Jobs saying Apple can’t work with Adobe because they’re too proprietary.

Comments are closed.