Essays  
 

iPhone SDK, DRM, and the Open Tool Chain

A Snippett from the Front Page - Mar 8, 2008

With the release of Apple's SDK, the development community has come to the rude awakening that it's not all it's cracked up to be with its restricted features, hidden methods, and heavy distribution scrutiny. Nobody had imagined that a development platform would be so heavily DRMed, but it looks like the linker even includes DRM from crt.o. Where does this leave developers? Well, it looks like it's impossible (without hacks at least) to build anything with the Apple SDK that is DRM-free, possibly requiring approval from Apple just to run once the production builds hit iPhones.

Apple's SDK restrictions appear to be taking a swipe at the open source community, which has already developed a functional open SDK (the tool chain), community distribution channel (via Installer.app, PXL, etc), and a very large audience of users and developers. Nick Penree of Jailbreakme.com fame found over one million users used his site to install the community "Installer" on their device - just within the first few weeks. Apple is in fact lagging behind the open community, and rather than the open source community duplicating commercial efforts, Apple is embarrassingly the one trying to duplicate the open source community today. As a result, many of Apple's SDK restrictions appear specifically targeted at this established community: Apple has banned NullRiver's Installer app, as well as PXL and other software installers, essentially locking out any third party distribution channels from iTunes (which may equate to unfair competition). They have also guaranteed themselves full control over the accessories market by limiting the SDK's ability to communicate with accessories. Finally, Apple has secured themselves potential contracts with game manufacturers, such as Nintendo and Sega, and with companies such as Sun and Adobe by banning any software that executes another program's code on the iPhone. This means companies may need to ink a special deal and pay a hefty ransom to Apple to release things like Java, Flash, and video game emulators (many of which are already available using the open tool chain).

What's worse is that some of the technical limitations are very serious. For example, Apple does not allow use of any of the private frameworks (they left out the headers, meaning if you copy them from the tool chain, your app has a strong likelihood of being rejected). This means you cannot "officially" use CoreSurface, LayerKit, Celestial, and other valuable frameworks. In addition to this, Apple seems to have restricted what you can and can't do based on their own design requirements for applications - for example, they have restricted you from being able to create an application-level preferences table, forcing you to create a "bundle" to place in their settings app. This is the equivalent of forbidding your application to have a "preferences" section (inside the app). Essentially Apple is putting technical roadblocks in developers' ways to cause them to create applications that fit Apple's definition of what an application should look like on their phone.

The good news is that, in spite of Apple's attempts to thwart "unauthorized" software development on the iPhone, we now have two different SDKs to choose from - the open tool chain and Apple's. Enterprises requiring DRM control of their software, who can live with the restrictions that Apple's SDK imposes, are likely to fair well with an "officially supported" compiler and support from Apple. But where Apple has left the rest of the development community out to dry - that is, open source developers and small software houses (which will likely not see the light of day until the end of the year), the open tool chain provides the only way today to build DRM-free applications for the iPhone, and a distribution channel that can reach as large an audience (albeit, not as captive) as iTunes can. The open tool chain also runs on Linux and Windows, and doesn't restrict the developer from using any of the more advanced APIs - you can even run applications in the background, as God intended it. The various dev-team camps have made it so easy to add custom applications to the iPhone, in fact, that any grandma can do it today with just a few clicks - almost easier than using iTunes!

It seems that now, more than ever, does the community need to support the open source tool chain and the ability to freely write and run software for the iPhone. Why? Because Apple's SDK is designed for enterprise - and makes no bones about alienating everyone else. Fortunately, we have a free tool chain that has almost a year of maturity, a fantastic (and free) support base, and hundreds of great applications available today for the iPhone that anyone can download and use.

The Apple SDK, as many have come to find, has seemingly crippled much of the functionality that initially set the iPhone apart when first launched. Even simple features like the ability to run a program in the background, have been crippled in the Apple SDK. Fortunately, the APIs that the open tool chain uses seem to reflect more closely to the "real SDK" in terms of what methods Apple is using in their own applications. Most of the objects you use in the Apple SDK appear to be "wrappers" around these real objects, which limit their functionality. It's like a "fisher-price" SDK, so developers have a horn to honk, while Apple uses the private APIs for "real" software. While the Apple SDK lets you write applications that look somewhat like iPhone applications, the open tool chain allows you to get right down to the metal and write applications using the same objects as Apple's own - and use the same spectacular effects that are otherwise restricted. The Apple SDK can be used to write good applications and games. The open tool chain can be used to write great ones. The only difference are technical restrictions.

And if you think about it, a lot of the agreements we see on hold today likely have to do more with monopolizing the iPhone's distribution chain than actual technical hurdles. Take Adobe Flash for example - it runs fine on 400Mhz machines, and even runs on weaker mobile phones without any problems. It's likely that rather than technical problems holding this up, that Adobe simply doesn't want to pay whatever ransom Apple is demanding to put code that "executes another program's code" onto the iPhone, cleverly violating Apple's licensing requirements. All of Apple's restrictions and T&C for their SDK point to market control being the key factor.

The SDK is clearly not ready for general adoption yet - and doesn't appear to have ever been intended for it. The open tool chain works today on production iPhones, and has no licensing restrictions or technical limitations. It has had almost a year to mature into what has become a very robust SDK with a large distribution base. I encourage developers to continue using it, and think it's going to be around for quite a while.

 All Website Content © by Jonathan A. Zdziarski. All Rights Reserved.
Reproduction prohibited without permission