tags:

views:

294

answers:

4

I am confused about the "viral" nature of GNU General Public License (GPL) version 2, particularly about calling a GPL'd application executable from my own application.

Here is my story:

I am thinking about developing a commercial, closed-source application that receives SMS through a GSM modem/phone, and then executes certain scripts. I have developed my own GSM library to do SMS related tasks, but my library falls short on device support (it only supports a few GSM devices).

Now suppose I want to give my users a broader choice of GSM modems/phones by enabling my application to use Gammu (www.gammu.org) as an external SMS engine. Gammu is a command-line application to do amazing things with GSM devices.

  • My application could work 100% by itself without Gammu, because it has an internal SMS engine.
  • GSM modems/phones support in my application could be extended by using Gammu as an external SMS engine. There are tradeoffs of using Gammu (such as much bigger memory requirement, speed decrease, etc.), so it could not be said that all users will want to use Gammu.
  • In order to use Gammu as an external SMS engine, users would have to download Gammu executable, place it in certain folder, and change some settings in my application. I do not distribute Gammu executable with my application.
  • My application will do interactions with Gammu by starting & stopping it, giving it text files, and grabbing text files it produces.

Are things described above will make my application GPL? I don’t want to license my application under GPL.

Any relevant thoughts and comments would be gladly appreciated.

Thank you in advance.

+1  A: 

As far as I know the GPL license only relates to you making modifications to the code, or using libraries from within your code (i.e. calling an API). But in this case you are just calling an executable with the correct parameters and reading the text files it produces. I don't see anything wrong with that.

tomlog
+2  A: 

You're in the clear because you aren't distributing Gammu. If you were, it'd get stickier.

chaos
+7  A: 

If you are not redistributing Gammu, you are not bound by the terms of the GPL.

Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.

http://www.gnu.org/licenses/gpl-2.0.txt

Joe Koberg
+2  A: 

This is considered to be the correct way of doing such things.

It is normally allowed to invoke a GPL'd application in pipeline from a closed source one. The license makes no reference to this but the explaining material does.

I do not know of one case where a non-GPL'd application calling a GPL'd one in pipeline caused a license problem.

Joshua
Bizarre. If the two codebases communicate across process boundaries, then the license says one thing. If they communicate within a single process boundary, a different thing. The distinction seems arbitrary and irrelevant to me. But that is an entirely different topic!
Cheeso
Yeah it sure is bizarre. It has a lot to do with the UNIX philosophy and the general practice of pipes and filters.
Joshua
The issue isn't how they communicate; it's who has the right to distribute the copyrighted code. Authors who place their work under the GPL only allow you to distribute their work if you extend that right to the recipient. Basing your work on theirs (creating a derivative work) means the derivative is also covered by the GPL. Not including the GPL'ed code is a sure way not to be considered a derivative work.
Joe Koberg
The only exception to this is if the GPL tool puts pieces of itself in its output (think: c preprocessor.)This doesn't happen here, so he's in the clear.
Broam