7

I am a member of an upstream maintainer team that took over a project two years ago. The project itself is round about 15 years old. We are the third generation of maintainers, and we lack contact with the earlier developers.

The project is licensed under GPLv2. This is stated on Microsoft GitHub, in the license file, and in the header of each code file. However, only the standard GPLv2 text has been copied without modification. I have no further information about the licensing.

If I understand this standard text correctly, it does not clearly specify whether the project is "GPLv2-only" or "GPLv2-or-later". To my knowledge there are no exclusive license texts to this two variants. This distinction would need to be specified elsewhere.

How should one handle this if I cannot determine it with certainty, especially since I cannot contact the previous authors? Are there any precedents for this?

Can I freely interpret the license and simply state that it is "-or-later"? In this case the project would be more flexible to contributions in the future.

Are there any court rulings, guidelines, or recommendations from advocacy groups (e.g., FSF, FSFE, OSSI, etc.) on this matter?

Thank you. Christian

X-Post (in German) on fsfe-de mailing list

1
  • 7
    The safe option here if you can't clarify is to assume GPLv2 only, because you can safely take a GPLv2 or later work and make a GPLv2 only derivative, but not the other way around. Commented Aug 21 at 9:24

3 Answers 3

10

Just to make clear what's implicit in Philip Kendall's answer:

  • If the license statement says "either version 2 of the License, or (at your option) any later version", then it's GPLv2-or-later.
  • If it doesn't include the "or (at your option) any later version" part, then it's GPLv2-only.

It's also possible that different source files in the project carry different license statements, making them differently licensed. This is not unusual in open source projects in general, especially if they include code from multiple earlier projects. To distribute the entire project, you need to comply with the license terms of all the files included in the project. In particular, if your project includes both GPLv2-or-later and GPLv2-only code, that in effect means that you can distribute the entire project only under GPLv2, and not any later version.

Of course, if you can remove all the GPLv2-only code from the project, then you could distribute the remaining files under later versions of the GPL as well. Whether that's a viable option or not depends on the circumstances.

Ps. When working with such a mixed-license codebase, you need to be careful not to e.g. accidentally copy GPLv2-only code into a GPLv2-or-later file while refactoring. If you suspect that this may have already happened, the safest option may be to treat all the files as GPLv2-only and update their license headers accordingly (which is allowed, since "GPLv2 or later" is a superset of "GPLv2 only").


Also, to address comments under Philip's answer, as the sole copyright holder you can always relicense any code you have written yourself from scratch under any license you want. So if all the "GPLv2-only" files in the project are your own code, you can just change those to be "GPLv2-or-later" or whatever else you want.

Whether that's enough to let you make the whole project GPLv2-or-later again depends on circumstances. Specifically, if there's any GPLv2-only file in the codebase (1) that you did not write entirely yourself, (2) whose author(s) have not given you permission to relicense it, and (3) that you cannot just get rid of, then you cannot make that file (or any project that includes it) GPLv2-or-later.

1
  • 2
    Good answer, but it is missing that when no GPL version is specified for a source file at all, then it is valid to treat it as "GPL any version". GPL v3 section 14: "[...] 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." Similar wording in the GPL v2.
    – ecm
    Commented Aug 21 at 15:27
14

I picked a file at somewhat random from the repo: messagebox.py. That includes (my emphasis):

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.

That's absolutely clear what terms that file anyway is licensed under. Unless there's a copy of the permission statment somewhere in the repo which excludes the "any later version" text, I don't think there's any uncertainty here.

7
  • Thank you for the answer. This text is from the original license. Based on your "interpretation" it could be said that every "GPLv2" (without suffix) project is "by default" "*or-later"?
    – buhtz
    Commented Aug 20 at 12:17
  • 5
    No, that text is not from the license, at least not the legally relevant part of it which ends at (surprisingly enough) "END OF TERMS AND CONDITIONS". That text is part of a suggestion from the FSF as to how to apply the GPL to a work. If it is unclear exactly which terms a work is licensed under, that will be up to a court to decide if necessary, you cannot make assumptions. Commented Aug 20 at 12:39
  • 3
    @buhtz In concurrence with the above comment, the text of the GPLv2 does affirmatively state, 'If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation.' -- it is clear from the license text that or-later licensing is dependent on the statement "any later version" as spelled out in GPLv2 sect. 9.
    – apsillers
    Commented Aug 20 at 14:15
  • 1
    @S.S.Anne given that the copyright holder of those files is very likely the poster of this question, that can be easily resolved. Commented Aug 20 at 20:11
  • 3
    @S.S.Anne compare the copyright holder's surname listed in common/flock.py with the username of the poster here. Those files you've pointed to were both added in the past few months. Commented Aug 20 at 21:09
0

Only the copyright holder(s) of the original project can change anything in the license terms. If the original project is GPLv2, so must any derivative. Only if all original authors agree to change to e.g. GPLv2+ or GPLv3 (or GPLv3+), can the license terms be changed.

You'd need to get the rights transferred to you (or the team) if you want to do such a change.

1
  • I can't agree with the first sentence. I agree with the second, but that's because the GPL family of licences explicitly require that derivative works be under identical licences, and (as you say) the permission of all rightsholders would be required in order to waive that.
    – MadHatter
    Commented Sep 5 at 14:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.