views:

419

answers:

3

I want to use a GPL component in an iPhone application which is not. It's an independent and standalone component, so on any other platform, I would compile it as a program and spawn it with some arguments when I need it.

But if I want to publish my app on the Appstore, I must comply with this section of the iPhone SDK:

3.3.2 An Application may not itself install or launch other executable code by any means, including without limitation through the use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded or used in an Application except for code that is interpreted and run by Apple's Documented APIs and built-in interpreter(s).

According to my understanding, it seems that Apple forbid me to do what I want.

Is there any technical and/or legal solution to embed a (standalone) GPL component in an iPhone application without licensing the whole application with a GPL license.

Note: This question is not about whether the GPL license is compatible with the AppStore rules as already asked elsewhere. I assume it is.

+2  A: 

You should ask the author of that component to license it to you under different conditions, perhaps in exchange for real money.

When the author chose GPL for that component, he may have done so precisely to make you use GPL on your application as well.

Martin v. Löwis
A: 

On the iPhone you cannot mix closed source and GPL code since all apps are self contained. You cannot use the contained GPL executable in any other way than with your application.

Since you're already planning on using some interprocess communication to use the GPL module without linking, you could put the GPL part on a server and access it via internet. I know it's a lot of overhead and doesn't scale well but it's the only solution I could think of.

Nikolai Ruhe
+2  A: 

You cannot spawn a separate process or load plugins, which means the only way to include something in your app is statically link it, which in the case of GPL code requires you to GPL the resulting derived work. That is the intent of the GPL for better or worse.

As an aside:

on any other platform, I would compile it as a program and spawn it with some arguments when I need it.

may in fact be a GPL violation depending on the intent of the author. Generally wrapping some GPL'ed component with a custom interface explicitly to keep it out of a binary still results in a single "derived work." Of course this has not actually been tested in court to my knowledge, and the concept of a derived work in GPLv2 is somewhat ambiguous legally.

Louis Gerbarg
In my particular case, I have not developed a custom interface for that, I only use the program available in the GPL component with its default parameters. I have not modified anything, I only spawn it with my arguments.
math