-
Notifications
You must be signed in to change notification settings - Fork 49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Please license remaining GPL-2.0-only files as 2-or-later (or LGPL?) #36
Comments
Debian bug ref https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 |
Yes, I can change the strbuf license. But as pointed out in the Debian bug, these are not the only GPL-2.0 files. There are some more:
1, 2 are only needed for legacy hardware. 3.-5. are important, though. 3. and 4. were once copied from the udev sources. 5. was copied from the Linux kernel. We can't easily relicense any of these files. If this means we can't use libreadline, then we must probably just drop it. |
There are also GPL-2.0 licensed files in kpartx. But that doesn't link to libreadline. |
I've posted a patch "replace libreadline by libedit" to dm-devel. |
Perhaps the people who contributed to those files are willing to grant another license. |
Right, I grepped for SPDX-License-Identifier given this is used in (apparently just some) files. Thanks! |
It should be possible to get in touch with Kay Sievers to change 3-5; I'll check what I can do. |
I have feedback from Kay Sievers, and he's fine with changing the license of any code attributed to him.
|
@zeha, I'd like to understand the concern better. IIUC, it is questionable whether the act of linking alone makes multipathd a "derived work" of libreadline, which would be the legal argument to request releasing multipathd under a GPL-3.0 compatible license. The readline/history functionality only matters when multipathd is used as interactive command line client. This is a small and rather unimportant part of multipath-tools' functionality. In fact, I believe it wouldn't be hard to move the client functionality into a separate binary which wouldn't link to libmultipath any more and thus could be released under GPL 3.0, avoiding the GPL incompatibility concern. Can you elaborate? |
AFAIK, that is not the bar for derived work. It would need to be so unimportant that it is below the level for which copyright is granted (even the choice of case of variables is AFAIK copyrightable). And that would need to be at the time when it was potentially derived. Later rewriting on top of a replacement is not a defense for an earlier derivation. It is difficult to argue the details of derived work. In this case so much easier to fix the license because you already have permission. I suspect you do not like the GPL, that is OK, don't use it then. If you want to get around the intention of the GPL I will certainly not help you. |
Please don't make assumptions. The sheer fact that we're discussing these issues shows that we care. |
That's the PoV of the FSF, right? I don't think it's universally accepted.
At the time multipath-tools started using libreadline, the latter was under GPL v2.0 or later, and there was no license conflict. The conflict arose only because the FSF chose to create a successor license that was incompatible with its predecessor, and because readline chose to switch to this new license. Our mistake — as multipath-tools maintainers — was not to realize this.
We agree on this point. It's also known to have different meanings in different jurisdictions. I am just saying that your very broad interpretation isn't everyone's, even if it might actually have been the intention of the GPL's author. I tend to prefer a more common-sense interpretation. multipath-tools has ~75000 lines of C code, of which 10 (including comments and
This is not true. We have permission from Kay thanks to Hannes' inquiry, and I'm assuming that the current active contributors would also grant permission. But we'd need permissions from quite a few more people to be clean.
If you look at the original issue, you can see that the problem was that I chose GPL-2.0-only as license for some of my contributions. Which was a mistake, I should have used GPL-2.0-or-later; but I was unaware of the libreadline problem. Also, you certainly realize that even if we wanted (we don't), we can't stop using the GPL. Almost the entire code base of multipath-tools is under some variant of the (L)GPL. As Hannes already, said, we are actively working on cleaning up this situation. |
My €0.02: It's certainly not sufficient to contact just the people mentioned in the copyright note on top of the files. The "intellectual property" arises from writing the code, not from being mentioned in the header. I have analyzed the git history of the files in question and created lists of contributors. While not perfect, I believe that this would have a realistic chance to be regarded as "due diligence" — if all these contributors did express their consent. Unfortunately, the list contains at least one person that I don't know how to contact, and kernel people (including Linus) who have publicly stated that they won't change the license of their code to GPL 3.0. |
FTR, patches posted so far:
As soon as these are reviewed, I'll create a PR here including them. I didn't create the 2nd patch because I "do not like the GPL", but because it's the only short-term way to avoid the licensing conflict for the current upstream code. Obtaining permissions from all contributors, if possible at all, will take significantly longer. |
Sorry for my wording. I assume you all, including Martin, do care. I was advising Martin elsewhere how to fix this, because he asked. And I only wanted to make it clear that I won't be helping him properly make not-a-derived-work claim, as I feel doing that is not in its spirit and doing it repeatedly could weaken the GPL, as the words of licenses stay the same while meanings change with how they are applied in practice.
No, I think this is usually how USA courts apply copyright. The "creative" or "original" act required is quite laughably small. AFAIK the FSF never was copyright maximalist, the GPL was their response to copyright expansion. (Though I don't like the FSF for other reasons.)
These are not normal words, but ones with a specific definition. The term "derivative work" (edited: derived is the wrong word) has a specific definition in USA copyright law (see 17 U.S.C. § 101) and although the term is not explicitly mentioned a similar meaning is included in the Berne Convention.
I think it can be fixed without changing the past, even without changing old releases. You can get a license without that being said in the source code. It is possible for someone to retroactively grant a license to someone else for uses that already happened and those in the future just by saying that. The license does not need to be shipped in the source tar to be valid.
I think that is a good way. Things to look out for are: Git move and copy detection and following that history for dealing with that. Notes about files copied from somewhere and doing the same at the source. Notes about additional authors, e.g. git trailers Co-Authored-By and Signed-off-by (if not the same as Author). There are some big code bases that changed licenses that published tales about how they did it, but I can't find any links to what I remember right now.
If you don't find a way, there are still some things one can do, like check with next of kin, etc, but for some things I'd like to check with a lawyer. Ping me privately if you need to go there.
Linus only said this about the kernel as a whole. Many parts of the kernel come with compatible or additional licenses. Granting an additional license to some kernel file was done many times. And if they just dislike licensing under GPL-3.0, granting a compatible one e.g. MIT also works. |
Linking multipathd with libreadline may cause a license conflict, because libreadline is licensed under GPL-3.0-or-later, and libmultipath contains several files under GPL-2.0. See: opensvc/multipath-tools#36 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Replace the readline functionality with libedit, which comes under a BSD license. The readline library can still be enabled (e.g. for binaries not intended to be distributed) by running "make READLINE=libreadline". Signed-off-by: Martin Wilck <[email protected]>
Linking multipathd with libreadline may cause a license conflict, because libreadline is licensed under GPL-3.0-or-later, and libmultipath contains several files under GPL-2.0. See: opensvc/multipath-tools#36 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Replace the readline functionality with libedit, which comes under a BSD license. The readline library can still be enabled (e.g. for binaries not intended to be distributed) by running "make READLINE=libreadline". Signed-off-by: Martin Wilck <[email protected]>
Linking multipathd with libreadline may cause a license conflict, because libreadline is licensed under GPL-3.0-or-later, and libmultipath contains several files under GPL-2.0. See: opensvc/multipath-tools#36 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Replace the readline functionality with libedit, which comes under a BSD license. The readline library can still be enabled (e.g. for binaries not intended to be distributed) by running "make READLINE=libreadline". Signed-off-by: Martin Wilck <[email protected]>
Linking multipathd with libreadline may cause a license conflict, because libreadline is licensed under GPL-3.0-or-later, and libmultipath contains several files under GPL-2.0. See: opensvc/multipath-tools#36 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Replace the readline functionality with libedit, which comes under a BSD license. The readline library can still be enabled (e.g. for binaries not intended to be distributed) by running "make READLINE=libreadline". Signed-off-by: Martin Wilck <[email protected]>
Just to throw in more confusion: I've created a patch which replaces libreadline with a simple fgets(). |
Yes, in Debian linking against a library is considered creating a derivative work of it as far as I know. You will at least not get your package into Debian because ftpmasters check on GPL-3 vs. GPL-2 really thoroughly. I do not think that the proposition that GPLv2 and GPLv3 are incompatible and cannot legally apply to different parts of one work is controversial. When the readline license change happened, many packages just switched to the new version without checking the license compatibility first. There is no regular license check on existing packages, so this bubbles up only on people noticing this by chance for existing (pre license change) packages. |
This (partly) fixes the license incompatibility reported in opensvc#36 As I'm the only author (except for a trivial spelling fix), I see no issue with changing the license. Signed-off-by: Martin Wilck <[email protected]>
Linking multipathd with libreadline may cause a license conflict, because libreadline is licensed under GPL-3.0-or-later, and libmultipath contains several files under GPL-2.0. See: opensvc#36 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Replace the readline functionality with libedit, which comes under a BSD license. The readline library can still be enabled (e.g. for binaries not intended to be distributed) by running "make READLINE=libreadline". Signed-off-by: Martin Wilck <[email protected]> Reviewed-by: Benjamin Marzinski <[email protected]>
Something seems to be wrong with dm-devel, my patchset from Aug 19th hasn't arrived there yet, and the listman server seem to be down. |
RH team are working on it. @kergon |
My patch set (revised / v3) can meanwhile be inspected in the openSUSE tip branch, starting with 1cd0b20. |
The mailing list is restored and functioning correctly again as far as I can tell. |
Most list recipients didn't receive last week's messages, but we need the list archive web page to be back so we can tell people where to get them. Mailman failed to read its list config file successfully (we haven't got to the bottom of this yet), but that meant it fell through into logic designed to handle a file format upgrade coded around 2001. The old format file was still present, so it behaved as if it was the first time the new-format code was running and re-converted that file. In effect it wound back the mailing list to its state 18 years ago! |
@kergon, thanks for taking care and keeping us informed. Sounds like a nasty event indeed. The list server has been working almost flawlessly for may years, so there's no reason for us to complain. |
No, that doesn't work, the license is literally worded in a way to avoid allowing that. But the accepted patch looks good, as it does not link to GNU readline by default: b777144 |
Show me those words. We aren't playing tricks to avoid the GPL. We make it formally obvious that the part that depends on libreadline is actually a separate program that has almost nothing in common with multipath or multipathd (except some generic utilitiy code which comes under GPL-2.0-or-later). That has always been the case, it was just hidden by the fact that this code was executed in multipathd. |
One thing we might consider is to replace Technically, systemd's |
Linking multipathd with libreadline may cause a license conflict, because libreadline is licensed under GPL-3.0-or-later, and libmultipath contains several files under GPL-2.0. See: opensvc/multipath-tools#36 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Replace the readline functionality with libedit, which comes under a BSD license. The readline library can still be enabled (e.g. for binaries not intended to be distributed) by running "make READLINE=libreadline". Signed-off-by: Martin Wilck <[email protected]>
Linking multipathd with libreadline may cause a license conflict, because libreadline is licensed under GPL-3.0-or-later, and libmultipath contains several files under GPL-2.0. See: opensvc/multipath-tools#36 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Replace the readline functionality with libedit, which comes under a BSD license. The readline library can still be enabled (e.g. for binaries not intended to be distributed) by running "make READLINE=libreadline". Signed-off-by: Martin Wilck <[email protected]>
Linking multipathd with libreadline may cause a license conflict, because libreadline is licensed under GPL-3.0-or-later, and libmultipath contains several files under GPL-2.0. See: opensvc#36 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Replace the readline functionality with libedit, which comes under a BSD license. The readline library can still be enabled (e.g. for binaries not intended to be distributed) by running "make READLINE=libreadline". Signed-off-by: Martin Wilck <[email protected]> Reviewed-by: Benjamin Marzinski <[email protected]>
Linking multipathd with libreadline may cause a license conflict, because libreadline is licensed under GPL-3.0-or-later, and libmultipath contains several files under GPL-2.0. See: opensvc#36 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Replace the readline functionality with libedit, which comes under a BSD license. The readline library can still be enabled (e.g. for binaries not intended to be distributed) by running "make READLINE=libreadline". Signed-off-by: Martin Wilck <[email protected]> Reviewed-by: Benjamin Marzinski <[email protected]>
Linking multipathd with libreadline may cause a license conflict, because libreadline is licensed under GPL-3.0-or-later, and libmultipath contains several files under GPL-2.0. See: opensvc#36 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Replace the readline functionality with libedit, which comes under a BSD license. The readline library can still be enabled (e.g. for binaries not intended to be distributed) by running "make READLINE=libreadline". Signed-off-by: Martin Wilck <[email protected]> Reviewed-by: Benjamin Marzinski <[email protected]>
Linking multipathd with libreadline may cause a license conflict, because libreadline is licensed under GPL-3.0-or-later, and libmultipath contains several files under GPL-2.0. See: opensvc#36 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Replace the readline functionality with libedit, which comes under a BSD license. The readline library can still be enabled (e.g. for binaries not intended to be distributed) by running "make READLINE=libreadline". Signed-off-by: Martin Wilck <[email protected]> Reviewed-by: Benjamin Marzinski <[email protected]>
Linking multipathd with libreadline may cause a license conflict, because libreadline is licensed under GPL-3.0-or-later, and libmultipath contains several files under GPL-2.0. See: opensvc#36 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Replace the readline functionality with libedit, which comes under a BSD license. The readline library can still be enabled (e.g. for binaries not intended to be distributed) by running "make READLINE=libreadline". Signed-off-by: Martin Wilck <[email protected]> Reviewed-by: Benjamin Marzinski <[email protected]>
Linking multipathd with libreadline may cause a license conflict, because libreadline is licensed under GPL-3.0-or-later, and libmultipath contains several files under GPL-2.0. See: opensvc#36 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Replace the readline functionality with libedit, which comes under a BSD license. The readline library can still be enabled (e.g. for binaries not intended to be distributed) by running "make READLINE=libreadline". Signed-off-by: Martin Wilck <[email protected]> Reviewed-by: Benjamin Marzinski <[email protected]>
Linking multipathd with libreadline may cause a license conflict, because libreadline is licensed under GPL-3.0-or-later, and libmultipath contains several files under GPL-2.0. See: opensvc#36 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Replace the readline functionality with libedit, which comes under a BSD license. The readline library can still be enabled (e.g. for binaries not intended to be distributed) by running "make READLINE=libreadline". Signed-off-by: Martin Wilck <[email protected]> Reviewed-by: Benjamin Marzinski <[email protected]>
Linking multipathd with libreadline may cause a license conflict, because libreadline is licensed under GPL-3.0-or-later, and libmultipath contains several files under GPL-2.0. See: opensvc#36 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Replace the readline functionality with libedit, which comes under a BSD license. The readline library can still be enabled (e.g. for binaries not intended to be distributed) by running "make READLINE=libreadline". Signed-off-by: Martin Wilck <[email protected]> Reviewed-by: Benjamin Marzinski <[email protected]>
Linking multipathd with libreadline may cause a license conflict, because libreadline is licensed under GPL-3.0-or-later, and libmultipath contains several files under GPL-2.0. See: opensvc#36 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Replace the readline functionality with libedit, which comes under a BSD license. The readline library can still be enabled (e.g. for binaries not intended to be distributed) by running "make READLINE=libreadline". Signed-off-by: Martin Wilck <[email protected]> Reviewed-by: Benjamin Marzinski <[email protected]>
Linking multipathd with libreadline may cause a license conflict, because libreadline is licensed under GPL-3.0-or-later, and libmultipath contains several files under GPL-2.0. See: opensvc#36 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979095 https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility Replace the readline functionality with libedit, which comes under a BSD license. The readline library can still be enabled (e.g. for binaries not intended to be distributed) by running "make READLINE=libreadline". Signed-off-by: Martin Wilck <[email protected]> Reviewed-by: Benjamin Marzinski <[email protected]>
GPL 2 doesn't contain the word link or shared. It is worded that way to also potentially trigger the license when you make it execute another process. GPL 3 does mention it and it leads to an helpful clarification in the context of what is corresponding source despite the system library exception: "by intimate data communication or control flow between those subprograms and other parts of the work". Which makes it clear, just avoiding directly linking is not a sufficient mechanism to not need a license. However those word do not imply the opposite as it does not say that without intimate communication its excluded. Linking triggers the license by among others copying and modifying the header files and object code of the library. Using the same file format from two processes could also trigger the license in the same way. Note: I'm merely saying your reason for saying that this satisfies the licenses is wrong. I don't know if your concrete patch makes it so it now satisfies the licenses (and you only gave the wrong explanation). I have not reviewed the code of the patch you mentioned, and don't have enough time to review if it would make linking to GNU readline ok. But we are in contact elsewhere with someone we could review it, so I link it here: https://listman.redhat.com/archives/dm-devel/2022-August/051969.html The cover letter does not quite contain the required information to know if it does. When you said "links to libmpathutil only" maybe you also mean that there is not even indirect interaction between the now split parts and no common interface (like a file format or protocol both support). I.e. you could install one split part and use it and then delete the whole machine and reinstall with only the other part and you would not get any additional functionality when both are present instead of only one. But all that does is still only an indicator or better smell test which has false positives and negatives (though useful for downstream distributors to spot license problems) and anyway only works for newly and independently written code. The actual test is different. |
This GH issue was about linking between GPL-2.0-only and GPL-3.0 code (see OP's description). With my patch, this linking doesn't happen any more and thus the OP's concern of a licensing conflict in multipath-tools has been fixed. I didn't claim that "this satisfies the licenses". I said that none of multipathc's code, or in any library that it links to, is under a license that it's incompatible with GPL-3.0, and that linking this code with libreadline is therefore allowed. This is my understanding still. IIUC, you argue that we couldn't release multipathc under GPL 3.0 (even though we wrote the code) because it "communicates" with code under GPL 2.0 (which we also wrote). Sorry, I can't help myself, I think that this is outrageous and unhelpful.
No, I meant what I was saying. There is a protocol that both support and use to communicate, the multipath daemon's command protocol. It's a very simple protocol, and it's used by ever program that uses
If this was the case, we could ditch one component entirely, no? And no, it's not the case. multipathc provides the "interactive shell" functionality, which multipathd doesn't have. multipathc alone is useless, like systemctl without systemd (in theory it could talk to a different daemon implementing the same protocol, but no such daemon exists). |
Thank you for the explanation about the protocol. But that means the situation is complicated. I'll be soon on vacation for more than a month. I'm sorry I can't properly answer you now, but I hope the person we discussed this with elsewhere can answer your questions and I'm certainly interested in what they answer. |
Hi,
it appears the strbuf code is licensed under GPL-2.0-only (libmultipath/strbuf.c, libmultipath/strbuf.h, tests/strbuf.c).
From a quick grep, those files seem to be the last (relevant) GPL-2.0-only files.
Given multipathd is intended to be linked against readline (which is GPL3+), I would expect that the strbuf files are supposed to be under a compatible license. Maybe they are all authored by SUSE LLC and @mwilck can quickly improve this situation?
Thanks, Chris
The text was updated successfully, but these errors were encountered: