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