By Zed A. Shaw

How Apple Really Screwed Up With 3.3.1

For the first post to Shedding Bikes I thought I'd voice my real observation about how Apple screwed up with section 3.3.1 of their SDK license. Unlike the rant I wrote at oppugn.us this is a simple observation not meant to be hyperbolic in any way.

First, here's the section once again so you can review:

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 the key part being that software needs to be "originally" written in one of the mentioned languages. It's this word "originally" that has caused all the problems, and I guess is actually theoretically impossible to enforce technically. I'm actually thinking that Apple will probably strike this word from the license by the end of the week, but not for any particular business reason.

While many people have ranted that this clause is evil in various ways, if you think about it it's probably not that big of a dent in the amount of money Apple will make nor the number of applications. I'm going to make a conservative estimate and say that 90% of the currently installed iPhone applications meet the Section 331 requirements. I may be wrong, but I'd love some numbers from someone if they think that a lot more applications are affected by this.

Based on the fact that this won't really impact that many installed applications, and that the iPhone platform is lucrative enough for most developers to use, the idea that it'll drive programmers away simply because of language choice doesn't really work for me. Most of the programmers writing mobile applications for Apple are already compliant, and most of the new developers will be too.

Where I see Apple has failed is in identifying what programmers are really saying, something I alluded to in my above mentioned rant. Programmers are not saying:

Forcing me to use C is unfair because it's such an ugly langauge!

What I believe programmers are truly angry about is that Apple broke their long standing promise of supporting multiple languages when they originally attracted them to the platform. They're really saying:

You told me if I bought a mac, and an iPhone, and an iPad, that you would create LLVM and MacRuby and Python bindings so I can code in my favorite language. You lied!

Another way to look at this is ask yourself a simple question: If Apple had this clause when they originally launched the platform would as many programmers have adopted the platform? I say probably not because, even though they could learn Objective-C pretty easily, they would have baulked at their favorite language being classified as "illegal" or inferior. It wouldn't have been a technological statement, it would have been a cultural statement.

What has happened is Apple did a bait and switch. They told programmers for years that they love all their languages and all their cultures and invited them to write software for the new iPhone platform. Programmers came in droves because Apple looked like a good guy offering them lots of help. After Apple built up the platform and established it as a leader, they removed any hope their most loyal fan base had of writing software for their platform.

I actually predict that this will be a major problem for Apple in the future, but probably won't impact their bottom line for their mobile platforms. Programmers never forget things. They are notorious for not updating basic knowledge they believe and for spreading myths and rumors about technology for decades. I can actually see a situation building where programmers who maybe wouldn't have worked on an iPhone application would still avoid targeting Apple products simply because of the stories about Apple doing "A Section 331" on them.

In other words, this probably won't impact any part of their mobile strategy, and may even improve it, but it will impact all of their other platforms because programmers will refuse to write software if there's a risk that their investment can be eliminated overnight.

Additionally, I question the logistics of enforcing this clause. There's systems like Unity 3D and Gambit Scheme which produce Section 331 compliant code, or at least could. Unless Apple starts requiring source code submission (which they won't) they would have a very hard time telling what language was "originally" used. In fact this may spawn a cottage industry of cross compilers that are designed for plausible deniability.

Which leads me to my final guess as to what may start happening and where there could be a potential lawsuit against Apple regarding Section 331. What if the real reason they require the above clause is not because they plan to do any analysis to enforce it, but instead that they plan to look for the same application in competitor's "AppStores" and then use the presence of the application on multiple platforms as a means of rejecting it?

Imagine if what Apple is really doing is setting up a way to enforce that applications be written only for them but doing so indirectly by using the word "originally". You write an application for Android and iPhone. They see it available in the Android, then simply say that your application is rejected because they believe you have cross compiled it. The fact that it'd be hard to actually prove this through analysis may be to their benefit since you also couldn't prove compliance without releasing your source code them, which they probably won't accept.

In this case I think they could be sued or investigated the same way Microsoft was regarding their unfair business practices in licensing.

I'll put forward a small prediction to cap this little article off:

Apple will either drop the word "originally" by the end of the week, or they'll be sued within a few months at the first sign they're using this to limit a company's right to create software for competing platforms.