How to check if an GPL licenced repository is under 'or later' or 'only'

Although its is an important difference between or-later and only for a GPL licenced project, these project often don’t state if their license is compatible with later versions of the GPL.
Unfortunately, these repos also lack a license header* in the source files, which would clarify this.

Do someone know a method to check the exact terms of an open source project if there is no licence header?

Licence header are looking like this:
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version

The clause in the GPL I am refering to is the following (for the GPLv3):

14. Revised Versions of this License.

The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.

If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Program.

Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version..

You should ask the author to include headers or SPDX identifiers.
They’re the only one who can answer this.

4 Likes

Well, they do state it by having that clause in the LICENSE file. Reading that file is the method to check the exact terms of an open source project. If you look in that file and that clause is not in there then it is not a part of the license. The headers/identifiers are metadata which make this easier if the author chooses to use them but they are not the license.

You can check if the project is available in some appstore like F-Droid or Flathub, because they always state the exact licence

These clause is always included in the GPL, but its only effective when stated this way by the copyright holder.
The FSF should have make it that its always effective when the copyright holder doesn’t explicitly state it otherwise, that would avoid this problem.

Sorry, you are correct, and that is dumb :face_with_spiral_eyes:

A strict reading of the license text would suggest that if a project doesn’t have those headers and only has the GPL text included in a file, then it’s not even GPL licensed at all either way. Which is probably not the intent of projects doing this. I’d agree your only option here is to inform the maintainer of that omission and have them add a Copyright statement in their README or elsewhere.

(I got too used to the MIT license including a Copyright statement at the top of the file)

1 Like

If they don’t make proper Licence headers then it could also challenge the validity of the licence in some jurisdictions.

Yes, considering the fact that copyright is valid for 70-100 years after the death off the author, its not wise to bound your code to a licence of today and just assuming that this will fit right for the next 100-200 years or even longer.

But most devs doesn’t read licences longer then the MIT, so the future compatibility clause should be the default.

Yes I will probably do this.

Do you think it would be invasive if I directly create a pull request to include the Licence header in the README and every source file?

Even then, it sometimes doesn’t bring clarity.
For example Notesnook, on Flathub say its GPL-or-later and on F-Droid it says GPL-only:
https://flathub.org/en/apps/com.notesnook.Notesnook

And I highly doubt that they really using different variants of the GPL for Linux and Android, there is no reason for this.

Does this mean that such projects aren’t legally open source because their licence is not valid?

This was answered on the Open Source Stack Exchange. It’s not perfectly clear but it seems that if a version number is not mentioned at all, the license defaults to or-later. If the license mentions a version number but does not mention whether it is or-later or only, it is presumed to default to only.

In my opinion this is a major flaw in the GPL since most developers didn’t know they’d have to specify this and now they cannot easily upgrade to future versions, in many cases it cannot be upgraded at all.

1 Like

If you are the copyright holder, you can change it to whatever you want at any time. It becomes more difficult when you have had others contribute code without agreeing to future relicensing. You would then have to get permission from every contributor or strip out the code they provided.

1 Like

That’s the problem, many contributors will be unreachable or stubborn and given the strong copyleft nature of GPL even minor contributions can pose significant re-licensing challenges for so many projects.

I think most big Open Source projects with a strong copyleft licence that doen’t require CLAs for contributing, have no way to change their licence without rewriting large parts of their codebase.

Therefore I favour to donate or contribute to projects that have an or-later option or a more permissive licence.

Hot take: CLAs are better then their reputation

It would be better to avoid licencing problems with a smart licence choice and not with CLAs

1 Like

Yes,
Better use more permissive licences (like MIT, Apache, MPL) for core functionality, protocols and everything that could be important for compatibility and a GPLv3-or-later for the rest.

I have never seen a LICENCE file where there was no version number.

Yes, the or later or only should just be in the tittle and if your copy the licence you get it automatically

I saw it once but it’s rare. Very strange that the FSF accounted for this virtually non-existent scenario rather than the much more foreseeable scenario playing out today.