THE SPDX WIKI IS NO LONGER ACTIVE. ALL CONTENT HAS BEEN MOVED TO https://github.com/spdx
Technical Team/Proposals/2010-11-16/Or later version licensing
Status: obsolete (the unary +
operator allows you to declare this. See also more recent discussion in Legal Team/or-later-vs-unclear-disambiguation)
Issue
There is not a way to express that the user may choose, at their discretion, to following the terms and conditions of a specified license or any later version of that license. In some ways this is similar to a simple disjunctive licensing declaration. However, the set of licenses changes over time so separate way of expressing this licensing information is required.
Use cases
The set of use cases we need to be able to describe in SPDX is:
- A standard license of a particular version (such as GPL version 2) and every later version of that license
- A non-standard license of a particular version and every later version of that license.
- Unversioned license declaration (such as "GPL").
Proposal
Introduce a license set, LicenseOrLaterVersion
that explicitly represents a specify license all its later versions. It would be left to tools and/or humans to determine the actual licenses that should be included in this set at any specific point in time.
The definition of `License` would not change. The `DeclaredLicense` and `DetectedLicense` properties would be updated to allow their value to be a `License` or `LicenseOrLaterVersion`.
KES: Still not clear why the "+" notation already in the short form licenses is not sufficient. It seems its either a shortform or a once of. Shortform has "+", and non standard licenses are copied verbatim and this is not needed.
Examples
License or later version
<Package> <DeclaredLicense> <LicenseOrLaterVersion> <BaseLicense rdf:resource="license:GPLv2" /> </LicenseOrLaterVersion> </DeclaredLicense> </Package>
Changes
These changes are available in the 'or-later-version-licensing branch of https://github.com/pezra/spdx-spec.git. A full version of the spec with these changes is attached, as is a patch file to implement these changes.