Martchus / qtutilities

Common Qt related C++ classes and routines used by my applications such as dialogs, widgets and models
GNU General Public License v2.0
39 stars 19 forks source link

RSVP GPL-2-only or GPL-2-or-later? #7

Closed sten0 closed 2 years ago

sten0 commented 2 years ago

Hi @Martchus,

I got an email from Debian ftpmasters saying they'd rejected qtutilities because they believed it was GPL-2-only rather than GPL-2-or-later, eg the "(at your option) any later version" clause. Conventionally including the GPL-2 as a COPYING or LICENSE file has implied "(at your option) any later version", so I'm shocked.

For the record, which do you intend, and would you be willing document this somewhere in each repository?

Thanks, Nicholas

Martchus commented 2 years ago

I haven't thought about it much. I suppose GPL-2-or-later makes most sense so I'd go for that option. How should I document that so that it is clear enough?

I suppose this issue applies to my other repositories as well.

sten0 commented 2 years ago

Hi Martchus,

Thanks for the quick replies. Sorry to bring up not-fun license stuff, but if ftpmasters are being extra difficult then we'll need to get in front of the problem--otherwise each dependency gets a multi-month wait only to possibly be rejected :-(. Yes, I'm in discussion with Debian ftpmasters, because this new ultra-strict policy (if it is a policy, and not mere whimsy) is yet undocumented and has far reaching implications with tonnes of busywork.

Martchus @.***> writes:

I haven't thought about it much. I suppose GPL-2-or-later makes most sense so I'd go for that option. How should I document that so that it is clear enough?

I suppose this issue applies to my other repositories as well.

The GNU recommendation is to add the copyright and license info to every file, so that files can be copied out of your tree and incorporated into another work without losing this info. I'd use sed for this method, in combination with find and xargs. Doing it programically has the advantage of enabling easy updates to the date range.

https://www.gnu.org/licenses/identify-licenses-clearly.en.html

SPDX is a newish machine-readable method for declaring this. Irregardless. For legal purposes it's also highly beneficial to declare who holds the copyright, and in which year[s] it became active, because all copyrights eventually expire (except in the USA, where corporations will allegedly eventually hold them in perpetuity). This is stuff for 50 to 100 years after one's life is over. IIRC in some (many?) jurisdictions anonymous licenses are not recognised as valid, premise being that only the named copyright holder has the power to grant a license.

So in the GNU version:

// Copyright YEAR-RANGE [1]  NAME SURNAME <EMAIL>
// Distributed under the terms of LICENCE [2]

IIRC the © symbol, or ASCII representation (C) held used to hold special value in the States, but is wholly superfluous under the Berne Convention, but the GPL licenses include it in their example boilerplate text.

IIRC SPDX also has tooling that will be faster and easier to use (I've never used it). Somewhat recently even the Linux kernel switched over to using it, and that project is HUGE:

https://spdx.dev/resources/use

Here are some examples of how SPDX can look:

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/fs/Kconfig https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/fs/aio.c https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/fs/dax.c

There are also examples of README.license.txt or LICENSE.README in various other projects.

Well, I think that's about it. For the record I am not a lawyer and this is not legal advice (obligatory liability disclaimer...)

Cheers! Nicholas

sten0 commented 2 years ago

Oh, and a lot of projects just put this info in one place--in README.md. That's also acceptable :-)

Martchus commented 2 years ago

I suppose I'll do the latter as the license isn't that important to me.

Martchus commented 2 years ago

There are also examples of README.license.txt or LICENSE.README in various other projects.

Can you give an example of a project with such files? Of course I can search but I don't want to copy it from the first best project which possibly does it wrong.

Martchus commented 2 years ago

I've been adding a note at the bottom of the README files in all my projects stating the license is "GPL-2-or-later" (similar to the note found in Syncthing's README). Reopen if that's not formal enough. However, I'd like to refrain from adding a header in all my files (which are a mix of C++, XML, CMake and some binary formats so I cannot simply prepend the same kind of "comment" everywhere).