views:

134

answers:

5

I have a software which wrote and includes within several components each of which comes with its own license. In sum, all 24 components in use are sharing the following licenses:

  • Public Domain
  • GPL
  • LGPL
  • BSD
  • MPL

Questions I ask are:

  1. Am I allowed to sell a compiled version of this software which links to all these components?
  2. What is this is installed on a server (being a service) does this make any difference?
  3. What if I modify the code, must I tell the world what did I do?
+1  A: 
  1. Yes, but you must have a notice somewhere saying that some of the code(ie, everything but public domain) was under so-and-so license and it's source is available here.

  2. No, shouldn't matter

  3. Only for the GPL and LGPL code

Earlz
Your point 1 is wrong: http://www.gnu.org/licenses/gpl-faq.html#DoesTheGPLAllowMoney
Craig Stuntz
See also: http://www.gnu.org/philosophy/selling.html
Craig Stuntz
just changed it..
Earlz
GPLv3 doesn't have a software as a service clause. AGPL does. http://www.fsf.org/licensing/licenses/agpl-3.0.html
Brian Campbell
The GPL and LGPL do not prevent the sale of sotware.
Joe Gauterin
+2  A: 
  1. Yes, but see (3).

  2. Yes, depending on your reading of the GPL. If it is your own server, you are argualbly OK.

  3. If you distribute (i.e. sell) the executable, the fact that one of the components is GPL'd means you must also distribute your code.

anon
I didn't think you could ever sell GPL code?
Earlz
earlz, that's just wrong: http://www.gnu.org/licenses/gpl-faq.html#DoesTheGPLAllowMoney
Craig Stuntz
Absolutely you can sell GPL'ed software. You have to fully distribute the source code and your customers are free to distribute it as they see fit but there is nothing in the GPL that prevents you from selling the code for money.
Ichorus
A: 

1 : yes, cf earlz or Neil Butterworth answers.

2 : ??

3 : if you modify the GPL/LGPL libraries and you provide (give/sell) your product, you must distribute the code (more precisely, the modifications you did to the library).

My opinion : have these libraries in separate projects from yours, so there is a clear separation and you can easily provide a patch if asked.

DISCLAMER : I am not a lawyer, consult a lawyer if in doubt

chburd
If the library/component is GPL'd and you link with it, you must GPL all the code, whether you modify the library/component or not.
anon
+1  A: 
  1. AFAIK, you can't link to GPL code unless you use GPL on your software too (see http://www.gnu.org/licenses/gpl-faq.html#GPLInProprietarySystem ). If you're linking some other software together with GPL code, it must have a "compatible license" (see http://en.wikipedia.org/wiki/License_compatibility ). This matched, you can sell your software for any price you want, assuming you deliver the source code or offers this delivery for no charge.
  2. You can put GPL software on a server, with changes made on your own, without delivering the source code, as long as you don't give the binary to anyone. Google explore this possibility a lot, using GPL code to deliver proprietary services over the web. However, this behaviour is not possible with GPLv3 if it uses the "Affero clause" (aka AGPL)
  3. If you distribute your changes as a binary, yes, you must. Otherwise, check (2).
Luís Guilherme
+8  A: 
  • Public Domain
  • GPL
  • LGPL
  • BSD
  • MPL

Be careful with these licenses here. In particular, the MPL is not compatible with the GPL. Now, many (probably most) pieces of MPL licensed software are distributed under a dual license, in which you may choose to use and distribute the software under the terms of the MPL or under the terms of the GPL (or sometimes LGPL). But in that case, you shouldn't list the MPL in the list of licenses you are distributing software under, because in order to link to software released under the GPL, you must be using the GPL (or LGPL) option of the dual-license.

  1. Am I allowed to sell a compiled version of this software which links to all these components?

Yes (and the other licenses don't affect this, either).

  1. What is this is installed on a server (being a service) does this make any difference?

If you are selling a service, in which you only run the software on your own computers and don't distribute the software to anyone outside of your company or organization, then none of these licenses impose any significant restrictions on what you may do. In particular, the GPL and LGPL do not require you to provide source code to anyone else in these cases.

If you are using a lot of third party software, it's still generally a good idea to contribute your patches back to the upstream project. Diverging from the upstream can cause a lot of problems in the future when you try to upgrade, and contributing code upstream will mean you get more people who are familiar with the projects you are modifying to review your code, which can help improve its quality.

  1. What if I modify the code, must I tell the world what did I do?

If you distribute the software to anyone outside of your company or organization, then you must provide them with the source code, or provide them with a written offer to provide the source code at a later date, for no more than the cost of physically transferring the data to them.

If you do not distribute the software, then none of the licenses above impose any significant restrictions on you. The GNU Affero GPL, or AGPL, is the only license I know of that imposes significant restrictions on people who run software as a network service, and as you did not list that license in your question, I don't think it's something you need to be concerned about.

Note that I am answering these questions from the point of view of the GPL, which is the most restrictive license that you list. Effectively, when you link several pieces of software with these licenses together, you can consider the whole to be licensed under the terms of the GPL (except for the MPL, which as I've mentioned, is incompatible). See the following slide for a visual depiction of compatibility between common licenses:

License compatibility illustration, follow link for more information

Brian Campbell
great and descriptive answer. I would love to contribute back the code - but I am afraid these modification are domain specific and no one else would ever be interested in them. I even suspect that the customer would regret these changes later on and would like us to bring it all back into the track. Obviously, I am supplying the custoemr a full source code (actualy, a git clone of the entire repo.) - thanks again. Tzury
Tzury Bar Yochay