Tuesday, April 13, 2010

When Apple became Microsoft

I have been following the debate around section 3.3.1 of the iPhone Developer Program License Agreement. With the release of iPhone OS 4 SDK, Apple added one little paragraph that says:

Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited

One little sentence that kills any cross-platform development in mobile, and not just that, because the iPad is a home device. It is clearly aimed at Adobe and at the possibility of building Flash applications that would run on multiple devices (e.g. the Flash-to-iPhone compiler). As a byproduct, this might mean the kiss-of-death for companies like Appcelerator, although I really hope not because they are a cool team. Our about-to-be-released Mobile 2.0 Framework, instead, will definitely be ok (which is nice to hear).

It is interesting to look at the situation between Apple and Adobe. In my opinion, Adobe would not exist without Apple, because their initial traction was all on Macs (starting with Photoshop). And initial traction is everything. Then they decided to drop Apple and make Windows their main target platform (how to blame them?), pissing off Steve Jobs for good. This seems payback time. But I do not buy the argument that Steve Jobs is just a crazy maniac on a vengeance. There is way more to this story than personalities.

Let's go back to the desktop world: Apple had a superior platform but Microsoft took off faster: they had a better model, for that market, where being vertically integrated meant being different, and a niche... All developers built apps for Windows because they had a larger market share, leaving crumbles for the Mac (it happened with Adobe too...). With crumbles, I mean they built first on Windows with Microsoft tools, then - with the few remaining employees - they built also on Mac. They had 90% of their developers on Windows, 10% on the Mac (since the tools to develop were so different, you had to have a separate team with separate skills). The result: sub-par apps on the Mac, bringing even less consumers to adopt it.

Now, let's take a look at this new world of mobile (which, again, includes pads and it is likely to take over the desktop, excluding maybe inside the enterprise).

Who has the lead here? Apple, by a large margin.

What are developers doing now? Building iPhone/iPad apps first. Their teams are 90% iPhone, 10% Android (some have not even started any Android development).

How does Apple become Microsoft in mobile? Simple, just making sure this does not change. That developers build first iPhone apps, then they look at other platforms. Keep in mind that Objective-C (the language to build apps on iPhone) is way different than Java (the language to build apps on Android). You need a complete separate team to build for Android. You cannot move resources from one to another easily. There is an implicit barrier to entry and a very large cost, which pays off only if there is a large market to target (which is not there on Android, yet).

The only way around this? Cross-compiling platforms, which would allow developers to build one app and run it on both iPhone and Android. One developer team. One skill (Flash, for example).

That is what Apple just killed.

Now you can't do it. You need two teams. You will have to build first for iPhone/iPad (with Apple tools, which will make the apps better), then you can look at the other platforms. With the remaining developers you might not even have.

If this works as Apple hopes, the result will be better apps for iPhone/iPad, less apps and with lower quality for any other platform, which eventually will mean more consumers on iPhone/iPad and less on anything else. I have seen this before.

Apple is the Microsoft of mobile. And they are not going to let go that easy.

The solution, once again, is the web. What broke that Microsoft/Apple/Linux/Unix development tools craziness were web tools. The only way out of this are HTML, Javascript, CSS. Ajax is the solution. HTML5 eventually will win. But only if you can map it on native apps. Stay tuned, this is exactly what is going to happen.