We keep bumping into the useful libraries that are GPL (most recently FFTW, which is GPL with commercial licenses available). My proposal is that we allow dependencies against such libraries as long as - the code which depends on the library is gathered into a self contained module which is, itself, GPL and - IMP as a whole does not require the library to function, only certain functionality is missing
The reason for this suggestion is that - the LGPL, under which we plan to license IMP, allows the code under it to be relicensed under GPL - most people in a research environment will not care if their resulting application is GPL or LGPL - reimplenenting things ourselves is a pain and best put off until we really need to create an application which is not GPL (for example linking with Chimera).
Daniel Russel wrote: > We keep bumping into the useful libraries that are GPL (most recently > FFTW, which is GPL with commercial licenses available). My proposal is > that we allow dependencies against such libraries as long as > - the code which depends on the library is gathered into a self > contained module which is, itself, GPL > and > - IMP as a whole does not require the library to function, only certain > functionality is missing > > The reason for this suggestion is that > - the LGPL, under which we plan to license IMP, allows the code under it > to be relicensed under GPL > - most people in a research environment will not care if their resulting > application is GPL or LGPL > - reimplenenting things ourselves is a pain and best put off until we > really need to create an application which is not GPL (for example > linking with Chimera).
Yes, this is a technical solution which would work. However, dynamic linking to GPL is kind of a gray area, and thus since any IMP module which does that would probably need to be GPL, no other IMP module would in turn be able to use that GPL IMP module without in turn becoming GPL. So a GPL FFTW IMP module would be of limited use, since we wouldn't be able to use it inside IMP.em for example.
I would prefer to avoid GPL dependencies as much as possible, since they would need to be handled very carefully. I don't want to ban them outright at this point - I will have to check with Andrej and our legal folks first - but for the time being, please avoid them.
Ben
On Apr 27, 2009, at 4:23 PM, Ben Webb wrote:
> Daniel Russel wrote: >> We keep bumping into the useful libraries that are GPL (most recently >> FFTW, which is GPL with commercial licenses available). My proposal >> is >> that we allow dependencies against such libraries as long as >> - the code which depends on the library is gathered into a self >> contained module which is, itself, GPL >> and >> - IMP as a whole does not require the library to function, only >> certain >> functionality is missing
I should have added: - the API hides the GPL library so it can easily be replaced by another library or our own implementation later if desired.
> Yes, this is a technical solution which would work. However, dynamic > linking to GPL is kind of a gray area, and thus since any IMP module > which does that would probably need to be GPL, no other IMP module > would > in turn be able to use that GPL IMP module without in turn becoming > GPL. > So a GPL FFTW IMP module would be of limited use, since we wouldn't be > able to use it inside IMP.em for example.
What we would be doing would doing would not be in a grey area. They key thing is that anything that is LGPL can be automatically "upgraded" to GPL just by linking against a GPL (see the GPL compatibility matrix in the GPL FAQ). So we can release most of IMP under LGPL but anyone can make the choice to make their program GPL just by using a GPL module. The key thing is the GPL/LGPL requirements apply to resulting applications and don't make sense when just talking about source code.
IMP.em could use it as long as IMP.em didn't link against anything that was not GPL compatible.
Daniel Russel wrote: > What we would be doing would doing would not be in a grey area.
I was referring to the gray area regarding dynamic linking (once upon a time there was some legal debate over whether dynamic linking constituted "use" of a GPL package in the same way as static linking - the argument going that the actual link against GPL code was not done by the distributor but by the user themselves when they run the program; but it seems to have been settled that dynamic and static linking are legally the same thing here, which IMHO is the only sensible conclusion).
> They key > thing is that anything that is LGPL can be automatically "upgraded" to > GPL just by linking against a GPL (see the GPL compatibility matrix in > the GPL FAQ). So we can release most of IMP under LGPL but anyone can > make the choice to make their program GPL just by using a GPL module.
The GPL FAQ states that indeed, you can convert an LGPL binary to GPL without violating the terms of the original LGPL license. But it doesn't mean that you can link an LGPL library against GPL - you have to change the license to GPL in this case. So if IMP.em linked against GPL code, either a 3rd party library or a GPL IMP module, that means we would have to also convert its license to GPL (the only way around that would be ifdef out the usage of that GPL module, then we could continue to use LGPL for versions not linked against the GPL code). That is really academic though, because IMP is not LGPL licensed, so we don't have that "upgrade option". It may become so (and that is certainly my position) but it is by no means certain. Andrej at least wishes to maintain control over IMP, including the ability to change the license if we so desire. Linking against GPL code would prohibit that. So unless there is really no other way, we should avoid GPL code for now.
Ben
> > > > I was referring to the gray area regarding dynamic linking (once upon a > time there was some legal debate over whether dynamic linking > constituted "use" of a GPL package in the same way as static linking -
Sure, we all agree that dynamic linking is linking...
> The GPL FAQ states that indeed, you can convert an LGPL binary to GPL > without violating the terms of the original LGPL license. But it doesn't > mean that you can link an LGPL library against GPL - you have to change > the license to GPL in this case. > Sure. But changing the license on some files is free and trivial. You just say "The license is X" in the distribution docs.
> So if IMP.em linked against GPL code, > either a 3rd party library or a GPL IMP module, that means we would have > to also convert its license to GPL
Almost: If someone distributes an application which links against IMP.em and GPL code then they have to relicense IMP.em under GPL and we have given them permission to do so (by using LGPL).
> (the only way around that would be > ifdef out the usage of that GPL module, then we could continue to use > LGPL for versions not linked against the GPL code).
The copyright statement is english text, not C++ code, so ifdefs are irrelevant :-) There is no necessary reason for the license to appear in the source at all (very few headers in /usr/include put the license in the actual header).
> Andrej at least wishes to maintain > control over IMP, including the ability to change the license if we so > desire. Linking against GPL code would prohibit that.
Linking against GPL code now has no effect on what we do in the future. We can always relicense it later. All GPL says is that anyone who we give an application which is GPL too must be able to get a copy of the source code and that they can't change the license to anything more restrictive. We can do whatever we want with it.
> So unless there is > really no other way, we should avoid GPL code for now.
Sure, but nor should we reimplement things just because they happen to be GPL.
> The GPL FAQ states that indeed, you can convert an LGPL binary to GPL > without violating the terms of the original LGPL license. But it doesn't > mean that you can link an LGPL library against GPL - you have to change > the license to GPL in this case
Further, since all the IMP.em source files would be available separately under LGPL (from an untainted copy of IMP from salilab.org), changing a particular copy of them (those distributed which are associated with any particular application) to GPL is a practically meaningless operation and not really worth worrying about.
participants (2)
-
Ben Webb
-
Daniel Russel