Archive for April 13th, 2010

13
Apr

The Great Section 3.3.1 Debate

So no doubt you’ve observed the great spectacle of frenzy over the infamous Section 3.3.1 (there’s a T-shirt in there somewhere, I know it) of the latest developer agreement:

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).

… with reactions from the profane to the pedantic to the metaphysical to the insightful to the whoa, dude.

Rather than weigh in one way or the other on the emo angst surrounding the apparently imminent demise of not only Flash Packager but also Corona and iPhoneWax (Lua), MonoTouch (C#) and theoretically even scriptable engines like Unity, we’d like to draw your attention to the pretty much completely overlooked point of exactly what is explicitly allowed. Specifically, JavaScript.

First observation is that leaving that as an option means you can completely throw out every “it’s all about the money” or “Apple wants to stop cross-platform development” argument immediately. As we’ve mentioned before, HTML5 apps are completely cross-platform, you can avoid the App Store with them, and Apple has gone to a fair bit of trouble to make the offline HTML5 app experience pretty darn close to a native code application experience. So several whole classes of anti-Apple rant are rendered moot right there.

Explicitly blessing JavaScript in this section, though, that seems to imply that frameworks using HTML5 to deploy App Store versions of cross-platform apps is not only tolerated but specifically consecrated. (Given the … fervor … surrounding the issue, religious imagery seems appropriate.) At the very least, it certainly cements the resolve we’ve been mentioning here and there to get familiar with this alternative sooner rather than later. And despite what some commentators are saying, it appears that proudly cross-platform App Store-targeting JavaScript-based frameworks like Titanium and PhoneGap and NimbleKit and Rhomobile [EDIT: Oops, Rhomobile is actually Ruby, they might be out of luck] and other miscellaneous bits are not just allowed, they are actively encouraged.

Indeed, we have word that Apple sees it that way too, at least for PhoneGap:

[ Update:: April 13, 2010 ]

I have received word from Apple that the above is STILL true! If you were concerned by the recent changes to Apple’s iPhone developer agreement, this has ZERO impact on PhoneGap!

Apps built with PhoneGap will continue to be reviewed based on their own merits and NOT dismissed/rejected because they use PhoneGap.

So enough with the crazy speculative rumour mill. Let’s get back to making apps with HTML+CSS+JavaScript.

PhoneGap ftw!

So there you go. You want to develop cross-platform apps, you have one already sanctioned environment and others that look like they’ll probably be deemed equally acceptable to do that. You want to focus on the iPhone, far as I’m concerned Apple is actually doing you a favour by keeping all the Flash gits out of your way. Either way, there is no problem here.

And one last thought for those that are still upset:

If Flash is such a great platform -it’s actually not bad but not that good either- go ahead and develop these killer apps on Android or WinMo7 whenever that comes out. With killer apps being available on competing platforms making a huge difference Apple will simply change the clause and allow you in. They’re not stupid.

Indeed. If you’re absolutely, totally, convinced that this is a bad move on Apple’s part … well you go right ahead and prove that!