views:

982

answers:

4

Hi

I have a web app(commercial) that uses a component(LGPL). This component has a plug in architecture. I have now created a plug for this component that use a library (LGPL). This library uses a data source which is GPL.

Does this mean I have to free the source for my web app? or is just necessary to release the source for the plug in?

Thanks for any input and advice, and forgive me for bad my english.

best regards bob

A: 

I am not a lawyer, but.. as long as you do not distribute the program (making it available for use as web app is not distribution), you do not have to release the source for anything.

zvrba
True, but not very applicable to this case by the sounds of it.
Jonathan Leffler
+6  A: 

To be 100% sure, you should read FAQ and then contact a lawyer who is familiar with software licensing. Don't talk to the lawyers who aren't because they'll tell you not to use anything free/opensource just to be on the safe side, which anyone can say.

Anyway, what do you mean by "data source which is GPL"? Is GPL source code being linked into your application?

There are several questions in the FAQ regarding plug-in and GPL.

Can I release a non-free program that's designed to load a GPL-covered plug-in?

It depends on how the program invokes its plug-ins. For instance, if the program uses only simple fork and exec to invoke and communicate with plug-ins, then the plug-ins are separate programs, so the license of the plug-in makes no requirements about the main program.

If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. In order to use the GPL-covered plug-ins, the main program must be released under the GPL or a GPL-compatible free software license, and that the terms of the GPL must be followed when the main program is distributed for use with these plug-ins.

If the program dynamically links plug-ins, but the communication between them is limited to invoking the ‘main’ function of the plug-in with some options and waiting for it to return, that is a borderline case.

Using shared memory to communicate with complex data structures is pretty much equivalent to dynamic linking.

As others have pointed out, web apps that are not distributed seems to be considered private use under plain GPL (not in Affero GPL?).

A company is running a modified version of a GPL'ed program on a web site. Does the GPL say they must release their modified sources?

The GPL permits anyone to make a modified version and use it without ever distributing it to others. What this company is doing is a special case of that. Therefore, the company does not have to release the modified sources.

It is essential for people to have the freedom to make modifications and use them privately, without ever publishing those modifications. However, putting the program on a server machine for the public to talk to is hardly “private” use, so it would be legitimate to require release of the source code in that special case. Developers who wish to address this might want to use the GNU Affero GPL for programs designed for network server use.

eed3si9n
I suppose that when you don't distribute the GPL datasource (JDBC driver, perhaps?) with your application, and the customer downloads the GPL datasource on his own and configures the application to use it, it would be considered private use on the part of the customer so noone of you would have to release the source to anything.The side effect would be a minor inconvenience for the customer (he must get the GPL stuff separately from the original creator and put all this together).Please, note that IANAL (I Am Not A Lawyer) so this is not official legal advice. Consult a competent person.
Aleksander Adamowski
A: 

If by web app you mean that you just run the software on your server and you don't distribute it to your users, then it should be simple. No distribution, no need to give away source.

(might be different with GPL3)

abababa22
+2  A: 

Does this mean I have to free the source for my web app?

No*

or is just necessary to release the source for the plug in?

If you distribute the application, then yes, you have to also distribute the source code for the LGPL portion of it.

You would also need to make sure that anyone receiving your application would have a chance of modifying it. This is important for compiled applications - you would need to include the necessary object files so your app can be re-linked with a modified version of the LGPL code. Or, use dynamic linking. The idea is that people need to be able to modify the portion of your code that is LGPL and re-combine it with your app.

Here are some of the requirements of the LGPL in my words (I am not a lawyer):

  • There must be some sort of clear separation between the LGPL code and the other code. In particular, it must be possible for the recipient to modify the LGPL code or even completely replace it with other code, such as a modified version or later version of the libary. Therefore, if it is a compiled program, then the LGPL code must either be dynamically linked (like, a separate DLL or shared file) such that it could easily be substituted for a similar library and still be interoperable; or, if it is statically linked, the minimum required source files and/or object files must be provided, to allow recompiling with an alternative library. The non-LGPL portion may not contain any part of the LGPL code except for very simple header files.
  • It must be clearly pointed out which part of the code is LGPL covered, including its original copyright notice and the text of the LGPL (including the GPL on which it is based).
  • If the combined software displays copyright notices during the course of running, then the copyright notice for the LGPL covered portion must also appear here, along with a link to the LGPL and GPL.
  • In some cases, you would need to provide installation information detailing how to use a modified version of the LGPLd code in the combined application.

Those were just some restrictions, but the LGPL also offers you a number of freedoms, that other licenses like GPL don't. If you're distributing a combined work, which includes someone else's LGPL licensed code:

  • You don’t need to release source code for the rest of your application (ie, the non-LGPL part). The only exception to this being as described above - if it’s all statically linked then you’d need to provide just enough code (and/or object files) to be able re-link it with an alternative or modified version of the LGPL code. If you are linking dynamically and interacting over a normal API, you don’t need to worry about that.
  • You don’t need to release the rest of your application under the GPL. You can use any license you want, including more restrictive proprietary licenses, provided that when you do distribute it you follow the rules.
  • Unlike GPL version 3, which prohibits using the code if you are implementing copy protection or DRM software, you can use LGPL version 3 licensed code in an application which includes copy protection or DRM.

I wrote an analysis of the LGPL license recently - you could read this for more information.

Also, please read the actual text of the LGPL. It's not too long.

*you mentioned that the library you're using has a GPL data source. Presumably that means that you won't actually be distributing this GPL data with it, just the LGPL library that uses it.

thomasrutter
Oh yeah, if you are not distributing the application but just want to use it for your personal use (on your own web server, for example) then go nuts. The requirement to distribute source code + other tools is only if you distribute the app.
thomasrutter