I see AGPL and I see something to skip.
I see AGPL and I see something to skip.
If I'm an end-user and want to replace a GPL .so with a GPL-incompatible .so (maybe it has better performance or fewer bugs or whatever), and an installed GPL program uses that library, isn't it the case that the GPL forbids me from doing so unless I also have the right to re-license the .so as GPL?
The one restriction that the GPL does make only applies if you _redistribute_ your modifications. If you make modifications to the software or combine it with something else, then you are required by the terms of the GPL to license the result of those modifications under the GPL. But if you’ve modified the program by combining it with something that has license terms incompatible with the GPL then you won’t be able to do that. Since you cannot license the modified software under the GPL, you do not have permission to redistribute it.
In any case, I have serious doubts about the legality of the GPL (as opposed to the LGPL) after Google v. Oracle.
> To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy.
https://www.gnu.org/licenses/gpl-3.0.en.html
For the sake of continuing the hypothetical, let's say I do distribute it. Let's say I make a Linux distro that includes bash and a proprietary derivative of libedit with an API shim (fair use) to make it compatible with GNU readline.
What's interesting and potentially problematic is that the FSF clearly interprets dynamic linking to create a derivative work, but the GPL doesn't actually say that.
This is found in their commentary at the end of https://www.gnu.org/licenses/gpl-3.0.en.html:
> The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License.
Swapping out one library for another compatible one is a modification of the program.
What part of the GPL brings swapping dynamically linked libraries within the definition of "modify"?
Because on first read, not only is such an activity not explicitly included, it is explicitly excluded — since you do not need copyright permission for program X to swap out library Y that it relies upon, see 17 U.S.C. § 117(a)(1) (excluding copies made in memory at runtime from the need for copyright permission), it can never be a modification to do so.
The FAQ is, however, quite relevant. It’s certainly not part of the text of the GPL, but your Question is very Frequently Asked, and thus the answer to it is right there (<https://www.gnu.org/licenses/gpl-faq.html#MoneyGuzzlerInc>).
I'd like to modify GPL-covered programs and link them with the
portability libraries from Money Guzzler Inc. I cannot distribute
the source code for these libraries, so any user who wanted to
change these versions would have to obtain those libraries
separately. Why doesn't the GPL permit this? (#MoneyGuzzlerInc)
There are two reasons for this. First, a general one. If we
permitted company A to make a proprietary file, and company B
to distribute GPL-covered software linked with that file, the
effect would be to make a hole in the GPL big enough to drive
a truck through. This would be carte blanche for withholding
the source code for all sorts of modifications and extensions
to GPL-covered software.
Giving all users access to the source code is one of our main
goals, so this consequence is definitely something we want to
avoid.
More concretely, the versions of the programs linked with the
Money Guzzler libraries would not really be free software as
we understand the term—they would not come with full source
code that enables users to change and recompile the program.Is it the end-user telling the dynamic linker loader to load the .so, or is it the program you distributed to them?
> If I'm an end-user and ... isn't it the case that the GPL forbids me from doing so unless I also ...
No, it doesn't. You can do anything you want if you're the end-user. It's only when you distribute to others (outside your organisation) that the GPL kicks in.