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.


Timothy Barrington-Smythe said...

I'm quite sure I speak for most people waiting on the SID player for the iPhone when I say we don't care what license it's under or this overly detailed analysis of the GPL, we just want to see something tangible that shows this isn't vaporware, which it's seriously starting to looking like.

Given the turnaround and development time of other iPhone apps, even by part time developers, this is seemingly taking an ice age!

Stuart said...

Indeed, it may seem wasteful - but believe me, I wanted to make sure that I was still good to go.

I've purchased 3 books on ARM / iPhone development (>$120) to finish of these projects and make them not just good, but hopefully great. I've made a fair investment in this so give it some time.

Timothy Barrington-Smythe said...

An SC68 player has appeared on the Appstore, so I would say that clears the way for a SID player.