Hacker News new | ask | show | jobs
by torstenvl 1218 days ago
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?

2 comments

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.

See that's the problem. There are no modifications. I'm simply removing one piece of GPL software and replacing it with non-GPL software.

In any case, I have serious doubts about the legality of the GPL (as opposed to the LGPL) after Google v. Oracle.

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.

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.

Also see: https://www.gnu.org/licenses/why-not-lgpl.html

You should probably start with the FAQ: https://www.gnu.org/licenses/gpl-faq.en.html#combining

Swapping out one library for another compatible one is a modification of the program.

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.

> Dynamic linkage is something the end-user does.

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.