DynamicsAndNeuralSystems / pycatch22

python implementation of catch22
https://time-series-features.gitbook.io/catch22/python
GNU General Public License v3.0
75 stars 15 forks source link

Please clarify GPL version #16

Closed musicinmybrain closed 1 year ago

musicinmybrain commented 1 year ago

The files in the repository lack comment headers with license and copyright statements, and there doesn’t appear to be any overall license and copyright statement for the repository. The trove classifier for the Python bindings is License :: OSI Approved :: GNU General Public License v3 (GPLv3), which is ambiguous.

Could you please clarify whether the contents of this repository are intended to be GPL-3.0-or-later or GPL-3.0-only?

Related: https://github.com/DynamicsAndNeuralSystems/catch22/issues/32

benfulcher commented 1 year ago

There is a clear LICENSE file, and we selected GPLv3 from amongst the set of standard license options at the time.

I am not an expert, but we selected (what seemed to be a standard license) at the time of publishing the code. I don't fully understand why a new choice is required now…

I wonder whether @chlubba can look into it, and perhaps understand the subtleties of whether the choice we made at the time corresponds to 3.0-or-later of 3.0-only in the classification referred to above.

musicinmybrain commented 1 year ago

There is nothing wrong with GPLv3, but the conventional and GNU-recommended way to apply GPL-family licenses is via a copyright and license notice in the source files (GNU’s preference, in case individual files are copied out of the software), or at least in a README or COPYING file somewhere. Here are the GNU project’s recommendations on the subject.

The license and copyright statement conventionally specifies which GPL license versions may be applied, and many but not all projects use the “either version 3 of the License, or (at your option) any later version” language to allow subsequent GPL versions. When the project only says “GPLv3,” the conservative assumption is that no later versions are permitted, but experience shows that this doesn’t always match upstream authors’ intent.

Since there is no GPL version later than 3.0 now or in the immediate future, the distinction between GPLv2 and GPLv2+ is currently much more important than the distinction between GPLv3 and GPLv3+ when it comes to license compatibility. However, as a Linux distribution packager (my case), or as a library user working in an environment with strict requirements on documenting dependencies (which seems increasingly common), it’s important to be able to precisely document license terms—thus the request for clarification, or for the addition of a standard GNU-style copyright and license notice somewhere in the project.

For the base catch22 project, @chlubba confirmed today in https://github.com/DynamicsAndNeuralSystems/catch22/issues/32#issuecomment-1753115801 that GPL-3.0-or-later is intended.

benfulcher commented 1 year ago

Thanks for the detailed clarification—that's really helpful to me. Yes, let's use GPL-3.0-or-later