|
|
Subscribe / Log in / New account

GCC drops its copyright-assignment requirement

GCC drops its copyright-assignment requirement

Posted Jun 1, 2021 22:19 UTC (Tue) by pm215 (subscriber, #98099)
In reply to: GCC drops its copyright-assignment requirement by Lonjil
Parent article: GCC drops its copyright-assignment requirement

There is a significant difference -- if project A licenses its code under GPLv3-or-later, and then chooses to distribute the whole project under GPLv4, then a different project B which is GPLv3-only can still choose to copy source code from A (as long as it avoids any parts of the codebase that are 4+ and not 3+ -- and most of the code will still be 3+, typically including bugfixes to existing sourcefiles, since the usual approach is to try to avoid mixing multiple licenses in one file to avoid confusion). However, if project A has a single copyright owner who chooses to relicense the whole thing to 4+, project B can no longer take any source code from A starting from the first 4+ version.

This is a non-theoretical issue for the v2-vs-v3 split -- because binutils relicensed wholesale to v3-or-later, QEMU (which is v2-only) could no longer take bugfix or new-feature updates to disassembler code that it had copied from binutils, so it has some pretty out-of-date versions of some of the disassemblers.


to post comments

GCC drops its copyright-assignment requirement

Posted Jun 1, 2021 22:30 UTC (Tue) by ldearquer (guest, #137451) [Link] (22 responses)

Can GPLv3+ be distributed as GPLv4+? Or only as GPLv4? (or 5,6..., but without the "any later" option)

If it is the first, I don't see any difference, as "distributing under" and "re-licensing" are pretty much synonims

GCC drops its copyright-assignment requirement

Posted Jun 1, 2021 23:45 UTC (Tue) by rgmoore (✭ supporter ✭, #75) [Link] (19 responses)

Only the copyright holder can formally change the licensing terms. As long as the software is licensed under GPL3+, nobody else can change it. What they can do is to add code under a license that still allows the code under the two different licenses to be distributed. In that case, the combined project will only be distributable under the combination of the licenses.

As an example, suppose someone contributes code under GPL3 only to a project that's currently licensed GPL3+. That is compatible, but the GPL3 only code couldn't be combined with code under a later version of the GPL, so the combined code base would be effectively GPL3 only. Similarly, a GPL3+ project could be combined with GPL4+, but the GPL4+ code wouldn't be compatible with GPL3 only code, so the project would effectively become GPL4+. The most common example of combining licenses is actually combining code under a permissive license with code under a copyleft license like the GPL. In that case, the combined codebase can only be distributed under the copyleft terms. In all of these cases, the code can only be distributed under the combined licensing terms because the license explicitly allows it to be combined with code under a different license; if it didn't, the combined code couldn't be distributed at all.

Of course a project is under no obligation to accept a contribution under licensing terms they don't agree with, so they wouldn't take the code unless they wanted the licensing result. If a project somehow accidentally accepted code under an undesirable license, they would have to remove it to avoid the undesired licensing effects. If the amount of code was substantial, replacing the code under the wrong license would be a major project.

GCC drops its copyright-assignment requirement

Posted Jun 2, 2021 11:15 UTC (Wed) by ldearquer (guest, #137451) [Link] (18 responses)

Agree, I can see how code under different licenses can be combined, as long as licenses are compatible. And how the copyright holder is the one to set the license.

But this one seems to me a different topic than mere license compatibility. I think the term is "multi-licensing"

Let me bring the typical wording of an "or later" clause:
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version.

So, 1) You need to comply with copyright law, which (probably in your jurisdiction) forbids you to make copies etc etc
But 2) If you want, you can do copies, modify, etc, as long as you comply with a set of rules I am giving you (license)
3) Normally this is a fixed set of rules (e.g. GPLv2, MIT), but in this case, I let you choose which set of rules to apply, and ignore the rest. I can give you 3 set of rules A,B,C, pick the one you want. So you can adhere to GPLv3 and totally ignore GLPv2

Not talking about re-licensing/distributing under a different license (yet) :)

So I could choose to apply the set of rules GPLv3. Not because I am doing any change (yet), only because the copyright owner told me that I can choose. Comply with GPLv3, and you are OK.

Now, have a look at GPLv3, 5.c)

<<
c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
>>

So if I distribute it under GPLv3 only, I am complying with GPLv3. Which is one of the options given by copyright owner.

Now you can see this as changing the copyright owner terms -he meant the work to be GPLv3+! But my point is that referring to "GPLv3+" as a license, is a mistake on itself. It is a set of licenses, which you can choose among. And when choosing, you leave the other options behind.

GPL is not revocable, so whatever has been published as GPLv3+ will remain as such. There is no way a downstream recipient is changing what has already been published.

But if a recipient makes a fork, he/she can choose to relicense every file (even if it is not modified) with one of the options given by the copyright owner. Precisely because copyright owner allowed to do so.

GCC drops its copyright-assignment requirement

Posted Jun 2, 2021 16:09 UTC (Wed) by Wol (subscriber, #4433) [Link] (16 responses)

> Now, have a look at GPLv3, 5.c)

> <<
> c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
> >>

Now are you misguided? Or trolling? Seriously!

Classic trolling because we're talking about copying, and you ARE NOT!

Section 5 is all about conveying MODIFIED versions.

In which case, you are a copyright owner and you CAN relicence "the work as a whole". That still does NOT give you permission to relicence other people's code. It just means that *your* code is GPLv3, and that can change the licence of the "work as a whole" - note that it "does not invalidate such permission" if you have received the original source under a different licence.

Cheers,
Wol

GCC drops its copyright-assignment requirement

Posted Jun 2, 2021 20:39 UTC (Wed) by ldearquer (guest, #137451) [Link] (15 responses)

> Section 5 is all about conveying MODIFIED versions.

...which is what a fork ends up being quite often, anyway.

But you are missing my point. What I was trying to discuss, or ask, is if you can re-license some code, be it verbatim copy if you want, in the case that the copyright owner allows you to do so.

Forget about GPLs and "or later" clauses.

If you are given some work, can the copyright owner give permission to you, as the recipient, to change the license, and distribute it under that other license? Could he/she say, "here, you got this work under license A, but if you plant 5 trees you can relicense it to license B"; is this valid under copyright law?

> Now are you misguided? Or trolling? Seriously!

Probably terribly misguided, but definitely not trolling

GCC drops its copyright-assignment requirement

Posted Jun 2, 2021 21:06 UTC (Wed) by Wol (subscriber, #4433) [Link] (5 responses)

The copyright owner CAN give you such permission. If the licence is GPL, though, they haven't.

I think there is *ONE* Open Source licence which allows you to relicence the code. Apache 2.

If I've got this right, the terms of Apache 2 are not properly compatible with GPL 2. Because they wanted Apache 2 to be compatible, the licence itself explicitly gives permission to mix it with GPL code, which because of the terms of the GPL means it has to be relicenced to GPL.

Cheers,
Wol

GCC drops its copyright-assignment requirement

Posted Jun 2, 2021 21:11 UTC (Wed) by Wol (subscriber, #4433) [Link] (3 responses)

To directly answer your question - which my previous reply didn't - sorry, the copyright owner can give you a licence to do anything they can do, which includes releasing under any licence of your choice.

The only thing to watch out is that European law has the concept of "creator's rights". These inalienably belong to the creator - they cannot be sold, given away, renounced, or anything. But this is also tied in with laws like "passing off" - if you didn't create the work then any attempt to claim you did is deception, fraud, lying, call it what you like ...

Cheers,
Wol

GCC drops its copyright-assignment requirement

Posted Jun 3, 2021 18:50 UTC (Thu) by ldearquer (guest, #137451) [Link] (1 responses)

Thanks for the reply. This was my view about copyright, but my actual knowledge about it is indeed minimal...

These all came in reply to madscientist:

> Worrying about the FSF relicensing GCC is not the problem; I don't think any serious person thinks that the FSF will publish a GPLvN which undermines free software. The problem is actually the opposite: once they start accepting code that is not copyright FSF, now you can NO LONGER change the license to GPLv4+ if you wanted to without getting permissions from all copyright holders. And even if you assume good faith by all contributors, once the first GCC contributor dies or disappears you're screwed unless you want to throw out all their code and rewrite it from scratch. This is not theoretical, it has actually happened in some projects.

My say on this is, even without copyright assignment, the FSF can relicense GCC to GPLv4+. This may be, formally, not a very straight forward process, but can be done.

I think you (and others) are right when saying this is not automatically done, because you are given the option to choose between GPLv3 or any later version. But "any later version" is not a license on itself, and you have to actually choose a real license.

But the FSF has this special power of creating a new license. So if GPLv4 was created, and it contained a provision such as (imprecise wording follows, but you get the point):

"If you received this work under a 'GPLv3 or later' clause, you may redistribute this work under a 'GPLv4 or later clause'"

Note this is not the same as choosing GPLv4+ as a subset of GPLv3+. You'd be choosing to comply with GPLv4 only, which is valid as long as it exists. And GPLv4 is granting you permission to relicense as GPLv4+

So the FSF can grant itself (and anyone really) the permission to relicense as they wish to, as long as it is published in GPLv4. I am not saying this as a bad thing, I think if you want to protect your code against future unforeseen loopholes in your license of choice..., you have to trust somebody

GCC drops its copyright-assignment requirement

Posted Jun 3, 2021 22:12 UTC (Thu) by Wol (subscriber, #4433) [Link]

> My say on this is, even without copyright assignment, the FSF can relicense GCC to GPLv4+. This may be, formally, not a very straight forward process, but can be done.

Actually, it's very simple ...

> I think you (and others) are right when saying this is not automatically done, because you are given the option to choose between GPLv3 or any later version. But "any later version" is not a license on itself, and you have to actually choose a real license.

Notice that NONE of the different GPLs themselves contain the wording "any later version". The accompanying blurb suggests you use that wording - but that goes into the GRANT of licence, the COPYING file.

> But the FSF has this special power of creating a new license. So if GPLv4 was created, and it contained a provision such as (imprecise wording follows, but you get the point):

> "If you received this work under a 'GPLv3 or later' clause, you may redistribute this work under a 'GPLv4 or later clause'"

The GPL1, GPL2, LGPL2.1, and GPL3 don't contain this wording, so I would be extremely surprised if GPL4 contained it. And it would be extremely divisive, because it would forbid GPLvX-only, like Linux is GPL2-only.

But ANYBODY could easily convert "GPL3+" to "GPL4+". You're reducing the list of available licences to a subset of the original, and all you need to do that is to make a copyrightable change to GCC, which gives you the right to change the COPYING file, and you can then change GPL3+ to GPL4+ there. Or you could change it to 3-only, or 4-only, or whatever you like so long as it's a subset of the original.

But if you do that, don't expect upstream to accept your changes unless they agree with it.

And a word of warning - if you try and slip such a change in un-noticed, either (a) your changes will be stripped out of upstream, or even worse (for you), (b) it's quite possible that upstream could go to a Judge and say "you tricked us into accepting it but it's against our licence policies, please will you relicence it to our standard"! If someone pulled that stunt on me, I'd certainly be prepared to try that if I could afford it!

Cheers,
Wol

GCC drops its copyright-assignment requirement

Posted Jun 3, 2021 19:15 UTC (Thu) by ldearquer (guest, #137451) [Link]

> But the FSF has this special power of creating a new license.
Well, I guess anyone has this power...
I meant GPL license. As published by the FSF. By definition :)

GCC drops its copyright-assignment requirement

Posted Jun 3, 2021 10:59 UTC (Thu) by kpfleming (subscriber, #23250) [Link]

Apache 2 does not grant relicensing permission; the original work must carry the Apache 2 license when it is distributed, as must any modified versions. It does allow for fairly wide license combination (as do most licenses classified as 'permissive' or 'non-reciprocal').

GCC drops its copyright-assignment requirement

Posted Jun 5, 2021 10:18 UTC (Sat) by nim-nim (subscriber, #34454) [Link] (8 responses)

> If you are given some work, can the copyright owner give permission to you, as the recipient, to change the license, and distribute it under that other license? Could he/she say, "here, you got this work under license A, but if you plant 5 trees you can relicense it to license B"; is this valid under copyright law?

In copyright law a license only applies to direct A to B relations, there is no such thing as A to B to C chain, the license is a property of the A to B (or B to C) transaction not a property of the software being licensed.

To create an A to B to C chain A needs to authorize (license) B to emit a new license to C, and there is no legal requirement or default setting that B to C has to be identical to A to B.

When you “buy” a license to use closed software the seller is selling you one use license among a stock he received from copyright owners, selling you this license diminishes his stock he does not get to sell the same license to someone else. That’s why in that case the original license moves from buyer to seller unchanged.

Copyleft is different, B is retaining the software and his own license to use and modify the software, you are not getting the license A gave to B, you are getting a *new* *different* license A authorized (and required) B to emit in his own name.

GCC drops its copyright-assignment requirement

Posted Jun 5, 2021 10:34 UTC (Sat) by nim-nim (subscriber, #34454) [Link] (7 responses)

So basically, yes, A can:

1. emit a license to use and modify his software to B, with one set of conditions attached to B’s use of the software, and also

2. emit a license to B to emit a license to use and modify the same software to C under a different set of conditions,

3. conditioning B’s license to emit a license to C to the planting of 5 trees

GCC drops its copyright-assignment requirement

Posted Jun 5, 2021 12:30 UTC (Sat) by Wol (subscriber, #4433) [Link] (6 responses)

Which is what you're saying is happening here!

A emits a licence to B that says GPL2+.

B uses GPL4 to give a copy to C.

B emits a NEW licence FROM A that SAYS GPL4.

That's weird! The only licences that A actually handed out are GPL2+, but NONE of the licences handed out on A's behalf are GPL2+ ???

Plus, of course, if B gives an UNmodified copy to C, then C is in possession of the COPYING file that contains proof of A's original grant of GPL2+! So you're saying that C only has a GPL4 licence, despite being in possession of a (valid) document that tells him he has a GPL2+ licence?

As I keep on saying (although I guess I might have got the wording wrong), you need to think about the GRANT of licence, and I'll rename it, the CONDITIONS of licence, separately.

So should the COPYING file be considered the licence itself, and each individual version of the GPL is a set of optional conditions? So when the GPL (any version) tells you to pass the licence on, they are telling you to pass the COPYING file on ...? that would make MUCH more sense. And if, by "licence", we mean the terms set down by the copyright owner, then this is very much the COPYING file and not the GPL text.

Of course, this still doesn't address farnz's concerns that two versions of GPL might require passing on different items, so it is - in practice - impossible for someone receiving under one version to pass on under a different version.

Cheers,
Wol

GCC drops its copyright-assignment requirement

Posted Jun 5, 2021 21:03 UTC (Sat) by nim-nim (subscriber, #34454) [Link]

> That's weird! The only licences that A actually handed out are GPL2+, but NONE of the licences handed out on A's behalf are GPL2+ ???

B is granted software under the GPL2 “or later”. That authorizes B to avail himself of “or any later version” of the GPL, and each of those versions separately authorizes him to emit new licenses.

That means it is B’s choice to avail himself of all or just some versions of the GPL or later range.

If B does not avail himself of at least one version in the range he has no permission to use and distribute the software → B goes to jail.

If B avails himself of some specific GPL versions only, he can only emit those specific versions to others (B is not the copyright holder who can emit any license he wants unconditionally).

IMHO, there is a legal hole in the current GPL, when stating

> Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License

It should state either that the recipient can also avail himself of future GPL versions if you were given this possibility, or at least allow you to pass this possibility if you were given it.

So right now passing GPL “or later” to others requires you to comply with the conditions of all the GPL versions in the “or later” range, and it is dubious if you’re allowed to pass versions not written yet to others.

The root problem is that a license is a set of benefits and obligations. The FSF could not mandate the use of the most recent GPL (first, some people disagreed with the GPLv3, and second, the most recent GPL today, is not the most recent GPL tomorrow, and it would be quite illegal to mandate today obligations not defined yet).

Therefore, it had to make the use of a “later” version an optional benefit (the law allows offering benefits not defined yet).

However, it seems to me all the focus on keeping or later optional prevented ironing out or later propagation. Not a problems with a understanding judge but all judges are not understanding.

Anyway, you want licensing to be regular and symmetric, and repeatable. But licensing does not work that way. Licensing was invented by broken kings to finance their armies and palaces. It was very clear for those kings they did not want to make others kings in their stead, that any permission (license) they gave was very transient and would extinguish itself fast, forcing beneficiaries to beg for new licenses after a while (financing new armies and palaces).

The legal licensing framework is designed to be asymmetric, transient and non repeatable. The GPL has to work very hard against it to achieve its objectives.

GCC drops its copyright-assignment requirement

Posted Jun 5, 2021 21:12 UTC (Sat) by matthias (subscriber, #94967) [Link] (4 responses)

> Which is what you're saying is happening here!
> A emits a licence to B that says GPL2+.
> B uses GPL4 to give a copy to C.
> B emits a NEW licence FROM A that SAYS GPL4.
> That's weird! The only licences that A actually handed out are GPL2+, but NONE of the licences handed out on A's behalf are GPL2+ ???

That actually works, if you see GPL2+ as a set of licenses. Thus A handed out licenses GPL2, GPL3, GPL4, ... all at the same time.

> Plus, of course, if B gives an UNmodified copy to C, then C is in possession of the COPYING file that contains proof of A's original grant of GPL2+! So you're saying that > C only has a GPL4 licence, despite being in possession of a (valid) document that tells him he has a GPL2+ licence?

Let's just assume for a moment that B distributes an unmodified copy of the source together with a modified copy of the COPYING file that reflects that B distributes using GPL4 (and not GPL2+). If B really wants to restrict to GPL4 this would be the only sensible thing to do. And I hope we at least agree that the COPYING file is not part of the program's source code, even if it lives in the same folder. Whether this is legal has to be determined by the lincese terms of GPL4 (which we unfortunately do not know at the moment). So let us have a look at the text of GPL3 instead. And actually this example should work for switching from GPL2+ to GPL3 as well.

I already cited the relevant part elsewhere in the thread:
> You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.

So we should keep intact notices that say that this license (GPL3) applies to the code. I would say B complies with this phrase when distributing with a modified COPYING file that states GPL3.

> So when the GPL (any version) tells you to pass the licence on, they are telling you to pass the COPYING file on ...?

The GPL (version N) nowhere says to pass the license (or all the licenses) the program was received under on. It only says to keep all notices that GPL version N applies to the code. The phrase "this license" in section 4 of GPL3 refers to GPL3, not anything else. If you remove notices referring to other licenses (or other versions of the GPL which are in fact other licenses), this is no violation of the terms of GPL version N. And only those terms matter if you distribute exclusively under the terms of GPL version N.

> Of course, this still doesn't address farnz's concerns that two versions of GPL might require passing on different items, so it is - in practice - impossible for someone receiving under one version to pass on under a different version.

If you just see it as a set of licenses, this is not a problem. If it is not possible to distribute under the intersection of the terms of all versions, you can only distribute under some subset that has no conflict.

And of course this is all very theoretical. If C redistributes under GPL2+ who would sue? B cannot, because B does not have copyright. And A will not, as A intended the source to be distributed under GPL2+.

GCC drops its copyright-assignment requirement

Posted Jun 5, 2021 23:15 UTC (Sat) by Wol (subscriber, #4433) [Link] (3 responses)

> And of course this is all very theoretical. If C redistributes under GPL2+ who would sue? B cannot, because B does not have copyright. And A will not, as A intended the source to be distributed under GPL2+.

And actually, I think this whole problem is because we have all been arguing about "what is this elephant thing" while we've all been blindfoldedly feeling a camelopard ...

What something IS, and what it CALLS ITSELF, are not necessarily the same thing!

In Anglo-Saxon law, THERE IS NO SUCH THING AS A LICENCE. All we have is a contract, which is "a meeting of minds between two (or more) persons".

Now what we think of as a contract is usually a *mutual agreement*, but there is also "unilateral offer" - commonly called a licence or "offer to treat". If I walk into a shop and see "Linux Today" with £6 price sticker, it's a licence that says "if you give the shop keeper six quid, you can walk out the shop with me". (If I offered the shop-keeper a fiver, and he said "yes", then that's now a mutually negotiated agreement :-)

In this case, the licence IS the contents of the COPYING file, it IS "GPL2+" or whatever. In this interpretation, the GPL2 (or 3, or 4) can NOT be a licence, because it is not a contract. It's a "list of terms pursuant to a contract".

So if A licences "the work" (*his* work) to B with a GPL2+ licence, then that means that B can choose to comply with the list of terms that is the GPL2, or the list of terms that is the GPL3, or the GPL4, etc etc. But because the LICENCE A GAVE was GPL2+, that means that when B gives a copy of "the work" to C, then C *must* get GPL2+. Because in order for there to be a meeting of minds, well A gave a GPL2+ licence therefore if C only gets GPL2 that is NOT a meeting of minds therefore there is no contract therefore there is no licence!

It all hinges on the LEGAL meaning of the term "licence", and imho the GPLv2 (or 3, or 4 ...) IS not, and CAN NOT legally be a contract/licence. It is a list of terms persuant to a contract.

Given that the law (and seeing that the GPL any extant version says that any new licence must come from the original licensor) requires a meeting of minds, I fail to see how the actions of B can change that licence. Bear in mind in this interpretation the GPL (any version) is not itself the legal licence, the requirement that you must pass on the licence clearly does not mean you pass on the terms of the version you used. So you have to pass on the version that the copyright holder gave you, which is GPL2+.

(That still doesn't fix the problem that complying with one version of the GPL may not give your downstream what they need to comply with a different version :-)

Cheers,
Wol

GCC drops its copyright-assignment requirement

Posted Jun 6, 2021 5:48 UTC (Sun) by matthias (subscriber, #94967) [Link] (2 responses)

> Given that the law (and seeing that the GPL any extant version says that any new licence must come from the original licensor) requires a meeting of minds, I fail to see how the actions of B can change that licence.

The license from A to C is not changed but newly created when B passes on the software. If B chooses to distribute a GPL2+ source under GPL3 then the terms of GPL3 apply. And these terms state that the original licensor automatically licenses the new copy under GPL3. Section 10 of GPL3 says:

> Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License.

This License again refers to the GPL3, not anything else. The license granted from A to C does not need to be equal to the license granted from A to B. A hypothetical license foo can state that whenever the source is passed on to C, then C gets a license of type bar. The license GPL2+ lets B choose whether the source is passed under GPL2, GPL3, GPL4, or ... If B chooses to distribute under GPL3, then the license terms specify that the newly emitted license from A to C has to be of type GPL3. If B chooses to distribute under GPL2, then this new license will be of type GPL2. And if B chooses to distribute under GPL2+ (which is possible, as long as each GPLn allows to distribute under GPLn), then C will get a shiny new license of type GPLn for any n>=2 from A.

> Bear in mind in this interpretation the GPL (any version) is not itself the legal licence, the requirement that you must pass on the licence clearly does not mean you pass on the terms of the version you used. So you have to pass on the version that the copyright holder gave you, which is GPL2+.

If the GPL would be interpreted in that way, then mixing GPL2+ code with GPL3 code would be illegal. The license from GPL2+ would require to pass on GPL2+ for the combined code, which obviously is not possible for the parts of the code under GPL3. Or do you want to tell me that the phrase "this license" does mean a very different thing in Section 5 of the GPL than in Section 4 and Section 10?

GCC drops its copyright-assignment requirement

Posted Jun 6, 2021 15:34 UTC (Sun) by Wol (subscriber, #4433) [Link] (1 responses)

> If the GPL would be interpreted in that way, then mixing GPL2+ code with GPL3 code would be illegal. The license from GPL2+ would require to pass on GPL2+ for the combined code, which obviously is not possible for the parts of the code under GPL3. Or do you want to tell me that the phrase "this license" does mean a very different thing in Section 5 of the GPL than in Section 4 and Section 10?

Actually, yes I do ... because, from an anglo-saxon viewpoint, the GPLv2, or GPLv3, (or any explicit text for any version), is not legally a licence! The actual, legal, licence (or rather, in English law I believe it is called an "offer to treat") is the contents of the COPYING file - what the copyright holder has offered!

And there's no problem mixing GPL2+ with GPL3 code, because what you are passing on is the copyright holder's original offer - after all, all extant versions of the GPL text say the licence comes from the copyright holder!

And your interpretation is actually a serious hindrance to forking - or even shared development! Because if every time the code is passed on, it crystallizes down to ONE PARTICULAR VERSION of the GPL, it's only got to be passed round a couple of times and you'll be mixing GPL2 code with GPL3 code with LGPL2.1 code ... if any downloading deletes the "plus" nature of the copyright grant, you've basically trashed the ability to do shared development of any "plus" project!

But if you say that the licence is what the copyright holder ORIGINALLY INTENDED (and that's the intuitive understanding, anyway), then all these problems go away. It's just hard to get your head round the fact that a document that calls itself a licence, isn't. It's just a document detailing a set of terms and conditions of a contract. Which after all is true of any contract. The signed piece of paper we call a contract, isn't. It's just the piece of paper which documents the "meeting of minds". It is well established in England that a contract can just be a handshake. But you need that document to make it clear what you shook over.

Cheers,
Wol

GCC drops its copyright-assignment requirement

Posted Jun 6, 2021 15:43 UTC (Sun) by Wol (subscriber, #4433) [Link]

And following up to myself, let's say I've got a project. It's GPL3+. There is ABSOLUTELY NOTHING to stop me putting a copy of the future GPL4 in there. OR THE PAST GPL2. Legally, it's called "mere aggregation".

Only when the copyright holder makes clear the legal link between the project and those documents do you have a licence.

The licence is not the text of the GPL. It is the copyright holder's statement linking it to the project. And note that the FSF's guidance tells the copyright holder they have to do just that, because without that, the plain text of the GPL is just random garbage as far as the project is concerned.

Cheers,
Wol

GCC drops its copyright-assignment requirement

Posted Jun 25, 2021 14:34 UTC (Fri) by immibis (subscriber, #105511) [Link]

AIUI:

Step 1. You receive some code under "GPLv3 or later"
Step 2. You say (to yourself) "I'll take GPLv5.72 please"
Step 3. You put the code in a program that's GPLv5.72.
Step 4. Somebody else takes your program that's GPLv5.72.
Step 5. That person takes parts of your GPLv5.72 program and copies them into a GPLv3 program.

That person has no permission to perform step 5, unless specific parts of your program say so. They received the code under GPLv5.72 and they have no right to use it under some other arbitrary license. Unless you left in the header that says "this file may be used under GPLv3 or later" - because that would give them permission.

They may hunt down the original "GPLv3 or later" copy and use that copy. Or, if they have proof that the *exact* code was released under "GPLv3 or later", they may copy-paste it from your program and nobody will ever know (don't ask me if it's legal). But they certainly can't assume it's "GPLv3 or later" just because it was in a GPLv5.72 program, unless it actually says so.

In step 3, you do have permission to delete the header that says "this file may be used under GPLv3 or later" and replace it with one that says "this file may be used under GPLv5.72" because that is valid according to GPLv5.72, which is the license you have chosen to obey for that file.

GCC drops its copyright-assignment requirement

Posted Jun 2, 2021 8:10 UTC (Wed) by Wol (subscriber, #4433) [Link] (1 responses)

> Can GPLv3+ be distributed as GPLv4+? Or only as GPLv4? (or 5,6..., but without the "any later" option)

NO IT CAN'T.

The *Copyright Holder* has placed it under "GPL3+". ONLY THEY CAN CHANGE IT.

You as distributor can NOT distribute under any "plus" licence because there is no such thing. You can distribute under GPL3, or this new hypothetical GPL4 or whatever, but you have to *choose* a licence that exists.

And the choice that YOU make has no binding on the people that you give it to - if the copyright holder said "GPL3+", the fact that you chose GPL4 does not force that choice onto your recipients.

That said, providing you're mixing compatible licences, this is rarely a problem. Only when you have things like the aforementioned GPL2/GPL3+ mess-up does it matter.

Cheers,
Wol

GCC drops its copyright-assignment requirement

Posted Jun 25, 2021 14:39 UTC (Fri) by immibis (subscriber, #105511) [Link]

GPL3+ is not a licence - as another commenter has pointed out, it's an infinite collection of licenses GPL3, GPL4, GPL5, GPL6, GPL7, ... You are free to resell only one of those licenses, since it's "or later". You can also resell any subset since you can resell one, then another, then another. If it was "and later" you'd have to comply with all of them simultaneously (which is impossible).

GCC drops its copyright-assignment requirement

Posted Jun 1, 2021 23:01 UTC (Tue) by rgmoore (✭ supporter ✭, #75) [Link] (1 responses)

I suspect this will not wind up making much difference in practice. Once new contributions are required to be under the new license, it will quickly become so painful to figure out what license any particular piece of code is under that nobody will bother; they'll just go back to the final release under the old license. I assume this is the underlying reason why GCC is willing to give up copyright assignment; it just isn't as important in practice as people believed it would be. It's more important to lower the barrier to entry for new contributors.

GCC drops its copyright-assignment requirement

Posted Jun 1, 2021 23:28 UTC (Tue) by pm215 (subscriber, #98099) [Link]

It does depend on the details of the license used for new contributions, yes -- if they choose "all new changes are 4+, so most source files end up as a patchwork of 3+ and 4+" then that would be pretty similar in effect to a relicense (you might as well just look at the last 3+ version if you needed 3-only-compatible code). If they preferred to keep each source file on a consistent single license that would be different in effect.

One effect of dropping the FSF copyright assignment is that it's no longer quite so predictable what a future decision will be -- I'm pretty sure the FSF view would always be "full relicense to newest version of the GPL", but the GCC project might make a different decision depending on whatever the circumstances in this hypothetical future are.

GCC drops its copyright-assignment requirement

Posted Jun 2, 2021 1:31 UTC (Wed) by mjg59 (subscriber, #23239) [Link]

I'm not sure that including modifications to existing code under different license terms would be terribly confusing - just update the headers to indicate that the file contains a mixture of GPLv3 and GPLv4 code, and the net effect is that everyone will treat it as GPLv4.

GCC drops its copyright-assignment requirement

Posted Jun 2, 2021 12:58 UTC (Wed) by wtarreau (subscriber, #51152) [Link] (6 responses)

> because binutils relicensed wholesale to v3-or-later, QEMU (which is v2-only) could no longer take bugfix

And actually that's the main problem with all these restrictive licenses: most patch authors really do not care about the license of their patch, provided the patch gets merged. Regardless, it's applied to a file under a subset of opensource licenses, and from this point it automatically excludes other software pieces from being fixed, very often without the original author even being aware of it.

The FSF did something really wrong with GPLv3 in that they didn't offer provisions for being compatible with at least the previous version. This would have left options for other project developers to observe and wait till its release before marking themselves as GPLv2-only, and would have allowed those on GPLv2-only to backport fixes from GPLv3 until GPLv4 appeared, leaving enough transition time to address all this. But instead they managed to make new GPL incompatible with older one and preventing one from applying a fix that was written for a file that was never touched since it was adopted, this is a total non-sense.

To avoid all this mess which blocks users down the chain (funny when you think about the original goal of the GPL), I now tend to license most of my devs under MIT which is way more permissive and allows fixes and backports to flow downstream. For large projects where GPL remains relevant to protect the final user against unpublished changes in the middle of the chain, I find GPLv2+ more protective of the final user's interests than v3+.

GCC drops its copyright-assignment requirement

Posted Jun 2, 2021 13:06 UTC (Wed) by pizza (subscriber, #46) [Link] (5 responses)

> This would have left options for other project developers to observe and wait till its release before marking themselves as GPLv2-only, and would have allowed those on GPLv2-only to backport fixes from GPLv3 until GPLv4 appeared. But instead they managed to make new GPL incompatible with older one and preventing one from applying a fix that was written for a file that was never touched since it was adopted, this is a total non-sense.

Given that the entire raison d'etre behind GPLv3 was to fix weaknesses in GPLv2, what would be the point in a GPLv3 if you could just ignore its changes and use GPLv3 stuff under GPLv2 terms?

GCC drops its copyright-assignment requirement

Posted Jun 2, 2021 13:41 UTC (Wed) by wtarreau (subscriber, #51152) [Link] (4 responses)

It could be turned the other way around: given that the changes in GPLv3 resulted in a non-negligible amount of significant projects to hard-stick to v2 and many others to v2+, what's the point of v3 ?

GCC drops its copyright-assignment requirement

Posted Jun 2, 2021 17:03 UTC (Wed) by rgmoore (✭ supporter ✭, #75) [Link] (3 responses)

The point of the GPL v3 was to add a bunch of new terms to the license that FSF thought weren't adequately dealt with by GPL v2. The biggest ones were an explicit patent license and the anti-Tivoization clause. If those things matter to you, you probably need to use GPL v3 rather than GPL v2.

GCC drops its copyright-assignment requirement

Posted Jun 2, 2021 18:45 UTC (Wed) by Wol (subscriber, #4433) [Link] (2 responses)

Plus some internet bugfixes. The classic fix is the requirement to "make source available for 3 years".

In the old v2 days, that meant you distributed source and binary together on CD or tape, or you forced the user to download everything in a single bundle, if you didn't want to trigger that requirement. Under v2, if you had source and binary as two separate downloads, it triggered the requirement to keep the source available for three years.

Under v3, if you make source and binary available as separate downloads, and the user doesn't bother downloading the source, it's their lookout if you take the site down.

There's another such bugfix that I know of but can't remember ...

Cheers,
Wol

GCC drops its copyright-assignment requirement

Posted Jun 3, 2021 21:00 UTC (Thu) by pbonzini (subscriber, #60935) [Link] (1 responses)

With V3, non-commercial redistributors can relay the information they got on how to get corresponding source, instead of providing the corresponding source themselves. Is this what you were thinking of?

GCC drops its copyright-assignment requirement

Posted Jun 3, 2021 22:16 UTC (Thu) by Wol (subscriber, #4433) [Link]

I don't think so ...

But yes, that is a convenient change.

Cheers,
Wol


Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds