I want to package a piece of software which only states its licence through a file called LICENSE in its repository. Said file contains the GPL 3.0 verbatim. What isn't clear is whether this means "GPL-3.0-only" or "GPL-3.0-or-later", so I wonder, which of these variants is the "default" one if it is not specified which the software is offered by the terms of? The source files do not specify any licencing information in their headers.
The GPLv3 license itself states on the topic of later versions:
14. Revised Versions of this License.
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.
This section explicitly mentions two cases
- No version number mentioned: You can choose any published version
- The "or any later version" phrase is present: You can choose the referenced version or a later version
The case that a version number is mentioned but without the "or any later version" phrase is not explicitly mentioned in the license text, but the most logical conclusion that follows from the cases that are mentioned is that this should be interpreted as "mentioned version only".
TL;DR: If a piece of software states it is under the GPL 3.0, without the phrase "or any later version", then it is GPL-3.0-only.
"or later" phrases are a method of dual-licensing. All dual-licensing must be explicit. If you receive some software under one license that does not explicitly mention any other licenses, then you can only use and distribute it under that license.
While it is best if the code itself names the license, there are many projects that do just include a LICENSE file. If that's what you have, and the license is GPL 3.0, then the answer is simple: you have not received dual-licensed code, and can only redistribute it under the GPL 3.0.
The source files do not specify any licensing information in their headers.
In that case, there is an argument to be made that the files are not licensed under the GPL at all, so the question as to whether it is "GPL v3 only" or "GPL v3 or any later version" becomes moot.
That probably isn't what the person releasing the code intended, but I would personally be wary of using any code which contains this kind of ambiguity about its license status.