Tuesday, May 04, 2010

Apple versus DOJ-FTC?

Following up on my post from last week covering Steve Jobs scathing response to Adobe regarding Flash on the iPhone, I wanted to further note that today it was announced that the FTC and the DOJ are exploring the option of opening an anti-trust inquiry into the matter.

Let’s consider what appears (to me at least) to be the most arbitrary control exacted by Apple over its mobile platform namely its ban on cross compilers (…sort of a misnomer at it’s more a ban on non-approved programming languages and technologies).

Without getting overly mired down in techno-speak, the “cross” compilers that have been built for the iPhone (primarily Flash CS5 and MonoTouch) allow developers to author an application using a language and environment that they already have significant expertise in (i.e. Flash/Flex/ActiveScript or C#) and compile the application to run on the iPhone.

With these tools, developers (and development shops) that have significant investment in a particular language and set of technologies can immediately become effective and productive coders on Apple’s mobile platform without having to adopt (i.e. learn and re-tool for) its primary language Objective-C or its Xcode development environment.

In an apparent effort to thwart this potential Apple revised its developer agreement adding the following passage:

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

The key here is the fragment “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” which constitutes a direct order prohibiting applications “written” in any other language other than Objective-C, C, C++ or Javascript.

This is an unusual mandate to say the least.

It’s important to understand that the language used to author an application is not the same as the computer code that constitutes the application after compilation.

Developers choose a software language for a number of personal, technical and/or business reasons but after compilation the application consist of generally either a pile of platform-neutral bits (byte code like Java/.Net compilers produce) or platform specific native bits (platform specific low level operations Objective-C, C or C++ compilers produce).

So long as the compiler is only targeting documented platform features (documented APIs), equivalent compilations should produce roughly equivalent compiled code (i.e. two byte code compilers will produce roughly similar byte code and two native code compilers will produce roughly similar native bits… I realize this is a gross simplification so no need to flame).

So what Apple is demanding here is that developers MUST use a specific source language regardless of the outcome of the application bits after compilation.

Theoretically, a development shop could produce a compiler that compiles Pascal (an traditional programming language) to a compiled application that from the computers perspective is indistinguishable from the very same application written in Objective-C yet the Pascal-based application would NOT be allowed on the iPhone since its source language was not Objectvie-C, C, C++ or Javascript.

Anti-trust regulators now need to determine whether this type of mandate (along with other rules set out by Apple) constitutes an anti-competitive business practice.

My sense is that Apple is ABSOLUTELY and without question acting in an anti-competitive manner regarding its mobile platform and further that the new legal language (above cited) was specifically included in the licensing agreement for anti-competitive purposes.

Although they may make a number of relevant arguments for their action, Apple is clearly aware of both the MonoTouch and Flash CS5 initiatives and is likely concerned about the potential to quickly lose control of the development community that writes for their devices.

Even if the applications were delivered through the AppStore, multiple compilers written for more favored, more widely adopted languages and technologies (Flash/Flex, C#, Java etc.) could easily see the current development community being fractured into an organization of multiple third-party technology providers and developers using a host of software languages.

Apple apparently wants to prevent this outcome regardless of the validity of the new technologies being created for their platform.

In any event, this will be a very interesting case to follow as it likely shapes up in the weeks to come.

DISCLOSURE: I am now short of AAPL.