tags:

views:

571

answers:

8

Hi everybody

I would like to find out more about the GNU GPL, and in particular how it pertains to a particular commercial project I wish to undertake. I have just read the license, and have obviously heard about GPL for many years, but I have some specific questions that I hope learned people here can answer:

  1. If I want to add additional, proprietary functionality to a piece of GPL sofware. What am I required to distribute/make available? Must I make my functionality available to the public?

  2. If I write commercial software that contains the GPL software (e.g., it contains a pointer to an instance of the GPL software, but within the same runtime executable) do I have to make all of my commercial code available to the public?

  3. If I write commercial software that interacts with the GPL software (e.g., it sends and receives messages via, say, a network adapter but in a separate runtime executable) do I have to make all of my commercial code available to the public?

Apologies if my questions are ignorant, I look forward to hearing your responses.

EDIT/UPDATE: many thanks for your generous responses, they are greatly appreciated. As a clarification, the software would be sold to a (probably quite small, certainly <100) number of customers.

+2  A: 

To answer your first question, if you make changes to a piece of GPL software and distribute it (i.e. make it publically available) then you must include the source code (or make it easily available).

See this FAQ and this one

Phill Sacre
+4  A: 

"...available to the public".

One important thing to note with the GPL is that your responsibilities are to those people that you distribute your software to, rather than "the public.". So it's fine to use GPL software for pretty any in-house application, and just 'distribute' your source in-house.

This is how pretty much any website, commercial or otherwise can use GPL'd software like the LAMP stack - the actual software is never 'distributed' beyond their own servers.

Of course, if you plan to distribute your software which incorporates GPL'd software to "the public", then yes, you'd have to distribute your own source.

Oh. and IANAL...

KeithB commented:

Just to be clear, there is a big difference between using software as it is distributed (e.g., the LAMP stack), and using it as part of the software that you develop. Since websites aren't, in general, modifying the software, they have nothing to worry about.

In one way he's right - if you don't modify it, you have no modifications to distribute. But, you still have obligations under the GPL to make the source of the GPL'd code available.

And what's worse, there is a grey and untested area about exactly when code that 'loosely interacts' with GPL'd code becomes covered by the GPL itself. If your code talks to a MySQL database, MySQL want you purchase a commercial license unless your code is open source.

Roddy
Just to be clear, there is a big difference between using software as it is distributed (e.g., the LAMP stack), and using it as part of the software that you develop. Since websites aren't, in general, modifing the software, they have nothing to worry about.
KeithB
There's no "grey and untested area" where MySQL is concerned. If your code talks to a MySQL db **using the GPL'd libmysqlclient**, you have to abide by the terms of the GPL. It's linking to the GPL'd client library that's the issue, not the fact that the server is GPL'd.
Sherm Pendley
@Sherm - yes, but there's also an older LGPL'd fork, and MySQL claim the actual *protocol* is covered by the GPL so it's impossible to implement your own.
Roddy
MySQL can claim whatever they want - a cleanroom implementation of the protocol would not be covered.
Sherm Pendley
"MySQL can claim whatever they want" - Well, their lawyers are bigger than mine, so I guess they can :-(
Roddy
+2  A: 

The GPLv3 term for distribution is conveyance, to avoid legal ambiguities outside the US. Here goes:

  1. If you don't distribute it, you don't have to do jack. Distribution doesn't include distributing your changes within your own company. Also, a user interacting with a program over a network is also not considered distribution (However, the AGPL does add this stipulation).

  2. Yes. If you distribute binaries containing GPL'd code, you must distribute your source that links to that code. If possible, find a library that uses the LGPL, which does not have this requirement. See this explanation of the GPL vs LGPL for further information.

  3. No. If you are not distributing GPL'd code or binaries, you are not bound by the license. For more information look into "Tivoization" and the changes between GPLv2 and v3.

SoloBold
+9  A: 
  1. You only need to make the source code to your functionality available to the public (and then it also has to use the GPL license) if the overall package is made available to third parties. You don't have to release code for functionality only used internally.

  2. You're not allowed to mix GPL code and proprietary code in the same executable without making the whole thing GPL. That's what LGPL licensed code is for.

  3. AFAIK, it's fine to interact with GPL code over a network adapter. It's not normally OK (again, AFAIK) to have code that's more tightly coupled than that, particularly if your code can't function without the GPL code, but that's a gray area.

Alnitak
Regarding 1) You only have to distribute the source to whomever you distribute the binary - if you give the program to users internally, you must also make the source available to those same users. It's a distribution rule, not a publication rule.
Adam Davis
+1  A: 

1: If you modify a piece of GPL software, you have to make the source code with your modifications available to anybody you distribute the software to.

2/3: Whether your software is bound by the GPL or not hinges on whether it's a derivative work or not. Ultimately, only a court can decide this. The consensus seems to be that linking (making a combined executable) does create a derivative work, while speaking to a GPL program over a socket does not. It depends on what you do exactly, and you should consult a lawyer if you are uncertain.

The GPL FAQ is long, but thorough. You might find it helpful.

daf
A: 
  1. You're required to give the source to anyone who you've given a binary to, if they ask for it. However, you're not required to release a binary to begin with.

  2. Yes. Any time you include the code in your app, your app is considered a "derived work" under copyright law. Standard copyright law forbids you from distributing such a work without permission from the original copyright owner, and according to the GPL such permission is only granted if you release all of the source upon request.

  3. No. The GPL is based on copyright law, and copyright only covers the original and any derived works. The idea that data that is processed by a GPL'd app (network packets, documents, database records, etc.) can somehow be "infected" is pure Microsoft FUD.

Disclaimer: I am not a lawyer. I don't even like lawyers. If you need a real legal opinion, ask a real lawyer - not random passers-by on the internet.

Sherm Pendley
Not "if they ask for it." You *must* distribute or offer to provide the source, *period*.
Mihai Limbășan
... or offer to provide the source upon request. I.e. if they ask for it.
Sherm Pendley
Yes, but the offer must be explicit in the first place. You may not state the offer just on request. You must offer to provide it without being asked for that offer.
Mihai Limbășan
Duh, no kidding. How else would they know to ask for the source, if you hadn't let them know they could? The point is that you don't have to include the source with every binary copy - it's only required if someone asks for it.
Sherm Pendley
I think this misunderstanding comes from the fact that I'm talking in *legal* terms. The position of a qualifier like "if they ask for it" in the sentence makes the world of difference in legal matters.
Mihai Limbășan
Read the disclaimer again. :-)
Sherm Pendley
I did... I'm not a lawyer either, but (unfortunately) do have enough experience with IP law, which is why I wanted to prevent someone from misunderstanding.
Mihai Limbășan
+1  A: 

I'd like to point out that you can sell software that is licensed under the GPL. Of course, since you have to make the source code available for free, few people do.

Slapout
Only a few small companies like RedHat.
KeithB
Does RedHat actually sell the software or do they sell support for the software?
Slapout
A: 

1, If you modify the GPL software you must release your changes. You could keep your proprietry functionality in a seperate runtime linked library which is loaded by the GPL code. This is what the Linux kernel does to load proprietry graphics drivers for isntance.

2, You can link LGPL code in your proprietry app. Compiling GPL software as a library and linking that is more grey - it would be safer if you could call the GPL code as a completely separate app. If you have to modify the GPL code to allow this you simply release the changes to the GPL part. This would be how a proprietry IDE like komodo calls gcc.

3, No lots of commercial software calls GPL apps or services. Everything running on Linux or calling a Linux server is doing this.

Martin Beckett