Wednesday, October 29, 2008

The GPL and iPhone development

I have read through the GPLv3, and whilst I am not a lawyer, it is worded without too much legalese.  Here is my take in FAQ style, addressing some points of contention that I have come across on a number of forums.

Doesn't the signing certificate imply 'Tivoization'?

To clarify what 'Tivoization' is, included is the following from the article A Quick Guide to GPLv3:
Tivoization: Some companies have created various different kinds of devices that run GPLed software, and then rigged the hardware so that they can change the software that's running, but you cannot. If a device can run arbitrary software, it's a general-purpose computer, and its owner should control what it does. When a device thwarts you from doing that, we call that tivoization.
Many users are confusing the purpose of the signing certificate as a potential 'Tivoization' violation.  Your signing certificate has nothing to do with a specific application, nor is your application tied to a specific signing certificate (unless you were to somehow code it as such).  It is simply a requirement imposed by Apple that all 'official' applications be signed and it's purpose is to identify who built the application and that the application has come from a trusted source.  Remember, anyone who has access to the SDK and has paid their dues can sign an application and install it on the physical device.

GPL requires all the source be released, but doesn't the NDA prevents this?

Apple has revised the NDA, and now it applies to unreleased versions of the SDK.  At the time of publication, that would imply anything built on version 2.2 of the SDK (which is currently in beta) is under NDA.

GPL software requires all installation scripts ('Corresponding Source') be released, so don't I have to release my signing certificate, which would be a violation of Apple's license?

You do not need to release your signing certificate.  The source code or the compiled application is not tied to the original author's signing key, and as mentioned elsewhere in this FAQ there is no 'Tivoization' violation.  An individual can simply uninstall the original version of GPL'd application, compile using XCode and reinstall their modified version.  Releasing the compilable XCode project will ensure your project is in compliance with the GPL, as this handles the installation of the software to the device.

You must pay to enter the Apple Developer Program, is this a violation of the GPL?

Yes, and you had to pay to get an iPhone in the first place.  You also had to pay for an Apple computer running OS X to do official iPhone development.  Paying to enter the developer program is another cost, but this is not a violation with regards to GPL'd software.  Once you've paid your dues and received your own signing certificate, you can compile and install the GPL'd software you downloaded. 

Ultimately, the user still has complete freedom to modify and install the GPL'd application - and that is the essence of GPL'd software.

Sunday, October 05, 2008


This is a huge boon for all the GPL software out there. The more I researched the issue, the more I realised I wasn't going to be able to release any GPL'd software via the App Store until it was lifted.

Also, I've been quiet lately - not because I've lost interest in the iPhone, but my day job has required more of my personal time lately - admittedly, the GPL issue didn't help. I have been talking to Andreas, who is the author of SIDPLAY for OS X. We are going collaborate, which should result in a great version of SIDPLAY for the iPhone. Unfortunately, we have both been very busy lately, so things have been moving slowly, but don't despair, as in the coming months I'm sure we will be able to finish off SIDPLAY for the iPhone.