Which clause of the GPL/LGPL makes you say that, or is there prior judgement that resulted in making such a demand?
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.
1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.
Sounds like all you have to do is prove your build on your dev machine works with newer versions. Up to the user to update the library on the target machine!
> With LGPLv3 it is explicitly stated that the user also needs to be able to run the re-linked binary, and that sufficient installation information must be provided.
0) leaves room for interpretation: when it says "to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work", should we read this as "the very same Version, modified to accommodate some needs while keeping API compatibility in mind" or a much-broader "any later Version, maybe even upstream, that may have received drastic API changes" ?
1) has boundaries: you are supposed to be able to "operate properly with a modified version of the Library __that is interface-compatible__ with the Linked Version". This notion of interface-compatibility seems here to prevent an attacker from saying to a commercial developer: "Here's Qt 42.0, now you will update your code for free for me so that it runs on it". Doesn't it?
More broadly, do you know of any lawsuit where these points were used to successfully prove non-GPL compliance and require more work from a commercial user?
EDIT I'm asking this (and my initial question) because it seems such a clause w/should have absolutely deterred commercial developers from using GPL libraries at all. Not starting a flamewar, I know MIT/BSD/Apache libs are generally more reassuring and popular in commercial software, but GPL code keeps being used by commercial software under the basic "We'll mention usage of the GPL lib in the docs, and will either leave the lib untouched or publish our modifications" promise. This condition as you interpret it seems much more chilling, I'm surprised to hear about it and would like to understand how severely it's enforced.
With LGPL libraries I find a lot of developers aren't aware of the relinking requirement, but it does get enforced. That's why you won't find LGPL libraries being used in the iOS App Store and why you need to buy a commercial license for Qt for mobile.
Of course none of this applies to server apps since they aren't distributed to users. You can use all the GPL code you want.
Thanks for contradicting. I almost swore nonsense, but I'm so unsure about everything when it comes to licensing that I thought I'd read about it first, and you're right. I'm flabbergasted; never understood this, and never met anyone confident enough about their understanding of GPL to contradict my (wrong) understanding.
But then, does this mean anyone can ask for the source of closed-source software that use GPL code, like the ones below? (I just dug two random examples).
- AutoDesk software. Uses GPL components at http://www.autodesk.com/company/legal-notices-trademarks/ope... -- EDIT: alright these are all _L_GPL libs, which means just distributing the (potentially modified) lib sources is okay as long as you don't link statically. Right?
- HipChat Enterprise. Server-side, but distributed, to be run by enterprises on their own servers. Uses GPL components at http://sources.hipchat.com/ -- EDIT: in this case, all the GPL components seem to be basic GNU utilities, used by calling binaries rather than being coupled to the commercial software by a linking / shared object mechanism. Right?