Pidgin on the iPhone - "impossible"
developer.pidgin.im
developer.pidgin.im
I felt like I could really bring something awesome to people who needed it: actual privacy while chatting from your phone, over existing services like google talk and AIM, and compatibility with existing clients that also use OTR. Awesome right?
Using libOrange and an XMPP framework (both objc, really easy to use), I got the core functionality to work, then turned my attention to OTR. After I nailed down some of the tricky parts of wrangling a non-threadsafe C library, I was ecstatic. It worked!
The first time I watched an OTR session establish while talking to a friend over AIM from my iPhone was so rewarding :)
And then I realized one day, that while I was perfectly aware of the licensing terms on libotr and its dependencies (all LGPL or GPL), at the time I didn't realize they were blatantly in conflict with the app store in more ways that one.
For starters, Apple applies a EULA that, to my knowledge is still incompatible with the GPL. Binaries are also encrypted, and signed, and prevented from running on devices owned by someone who isn't the original buyer. Even if that person chose to exercise their rights under the GPL to redistribute the program, they can't because nobody else can run it.
I planned to BSD-license the whole project from the start, but it wouldn't have changed anything. I'd still be violating the terms (or inducing Apple to violate the terms) on more than one GPL licensed library, each with multiple original authors who could, should they feel inclined, have the entire thing removed from the store (which I believe is what happened with VLC, no?). Or, Apple could simply decide to yank it. Not something I wanted to have happen after spending loads of time on custom interface code, making everything play nice, etc.
Some time later, I noticed someone else started a similar project (ChatSecure) and actually put it up on the App Store, apparently undeterred by the licensing issues. The code is open and on Github, and maybe thats enough to satisfy all the copyright holders on the GPL stuff (if they're even aware) but Apple could still yank it.
I don't like having to make choices like this, I love working on iOS and I also have no problem with the GPL, but I have to actively avoid one when working with the other :(
I'm sure you must have done your research, so mind if I ask you this: Could you explain what exactly in the GPL clashes with the App Store's policies?
http://www.gnu.org/philosophy/free-sw.html
> The freedom to run the program, for any purpose
If nothing else, the DRM system built into iOS devices makes this impossible to satisfy. That freedom isn't being granted wholesale as required, it's being metered by Apple. They can take it away at any time if they want to, because in order to run the program your device MUST contact them and retrieve decryption keys specific to that app and that account holder. That's not freedom, its permission on a fine-grained basis
> The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1).
Releasing the source MAYBE complies with this, changing the program tends to require the code anyway, but its a grey area to me. Have I actually enabled recipients to change it if they can't run that code without Apple's permission? I guess, in a way, but it's a bad deal for them for technical reasons
> The freedom to redistribute copies so you can help your neighbor (freedom 2).
Sure I can hand out binary copies if I want (that can't run anywhere but jailbroken or preauthorized devices during beta testing), but someone receiving a copy through the App Store can't. The program is encrypted and can only be decrypted with a key held by Apple
> The freedom to distribute copies of your modified versions to others (freedom 3)
Same deal as previous point to some degree, they can modify the code, but then what? Grey area? Technicality? Not an ideal vision of freedom even if technically compliant.
If Apple's platform merely refused to run unsigned binaries (like Tivo), it may be kosher to ship GPLv2 (but not v3 for this exact reason), but they're encrypted too, which takes away those rights OUTSIDE the platform as well.
"We cannot make a version of Pidgin for use on any device running the iPhone OS. None of our dependencies exist for that OS, we'd have to write a completely new interface (which we really don't want to do), and the terms for the app store are draconian enough that they are completely incompatible with the GPL. Even if we wanted to (which we don't), the GPL incompatibility makes it impossible to develop an app for those devices."
It surprises me that the Apple Store's GPL incompatibility is one of the key influencers in this decision of not to develop an iOS version of Pidgin.
I wish there was something better out there. I might give some another try soon since it's been a while.