The (A)GPL licenses were designed for user freedom, not developer freedom. That indeed means that some companies might not want to use it, because they dont want to give their users access to the code. But for the people who prefer this license, that's not an unintended consequence, but the whole point.
Agreed. Google’s allergy to the AGPL should make people sit up and take notice. This is a license with teeth, so well written that even Google can’t find a way to subvert it. If you want to write software and give it away without any risk that Google will make a billion dollars off of your hard work without contributing anything back, the AGPL is the way to go.
I am unconvinced that either one is sufficiently free for end-users. It's been a bit since I've done a close reading, but doesn't GPL consider any linkage to create a derivative work? Dynamic linkage is something the end-user does.
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 GPL doesn’t restrict the end user in that way. The GPL specifically allows the end user to use the software however they like. This includes combining it with software that uses an incompatible license.
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.
That is a modification, but since you are redistributing it the GPL doesn’t limit you in any way. It specifically allows you to make any use of the software that you like.
How is it a modification? Replacing a dynamic library with another doesn't fit the definition under copyright law or under the GPL.
> 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.
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.
> 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.
There is no reason to start with the FAQ. The FAQ is irrelevant. The FAQ is not part of the GPL and has no legal force whatsoever.
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.
I don’t know why you bring up 17 U.S.C. § 117(a)(1); it is completely irrelevant to your question. It is an important thing to understand, but it doesn’t have any effect on the answer to the question you asked. I can’t even fathom why you would think that it does. Maybe it is some kind of motivated reasoning?
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.
This is a legal question. The statute, which is a legal authority, is absolutely relevant. The FAQ, which is not a legal authority and not part of the license and not even published by any relevant party, is absolutely irrelevant.
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.