

Pidgin on the iPhone - "impossible" - jabo
http://developer.pidgin.im/ticket/13158

======
mrsteveman1
Last summer I started writing an AIM/XMPP client for the iPhone with OTR
support, in part because Adium isn't there, and neither was pidgin or any
other OTR supporting client (this has now changed, see below).

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 :(

~~~
jabo
It's quite disheartening to see that licensing issues were a deterrent to your
progress.

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?

~~~
mrsteveman1
Here's the 4 freedoms outlined by the FSF, which are embodied in the text of
the GPL

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

~~~
sixcorners
Why doesn't distributing the source satisfy all of these? Can't users do
anything they want with the program itself? Couldn't jailbreaking (or paying
$99/yr for the developer program) to run your own apps be considered the same
as any other step you need to run programs on other platforms? On Windows you
need to put it in an .exe file, on iOS you need to fork over $99.

~~~
mrsteveman1
In short, because the binary is also covered by the GPL and must be
redistributable and usable, and nothing that comes from the App Store meets
those requirements for anyone except the original buyer/downloader, because
they are all encrypted.

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.

------
jabo
User asks for an iPhone version of pidgin and the request was turned down for
this reason:

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

~~~
teilo
Really? When your entire code base (libpurple) is GPL, and in order to develop
to iOS you would have to throw out everything you have spent years doing, and
start from scratch?

------
coley
A suitable alternative is BeeJive. I used it religiously about a year ago.
Surely it's much better by now.

~~~
Yarnage
I've tried it along with virtually all of the other chat apps and none seem to
work very well at all with Google Talk. I am constantly disconnected and never
get any push notifications which makes it entirely useless.

I wish there was something better out there. I might give some another try
soon since it's been a while.

