Re: Is "+" a valid character of a LicenseRef idstring?

Gary O'Neall

Good point.

What makes this particular syntax more confusing is that pre-2.0 the + was
considered part of the license identifier. It was promoted to an operator
in the 2.0 spec which does create some backwards compatibility issues (as
well as some confusion).


-----Original Message-----
From: Wheeler, David A [mailto:dwheeler@...]
Sent: Monday, November 2, 2015 12:12 PM
To: Philippe Ombredanne; Gary O'Neall
Cc: spdx-tech@...; SPDX-legal
Subject: RE: Is "+" a valid character of a LicenseRef idstring?

Philippe Ombredanne:
This + is a suffix and not a freestanding character, right?
Then again we would be better off to get rid of the plus entirely!
You may be confusing a SPDX "license identifier" and a SPDX "license
expression". It's a subtle point.

The purpose of a "license identifier" is to identify a specific text of
a specific license text, using a short name. In SPDX 2.0 there is no
"+" in a standard license identifier. In particular, "GPL-2.0" is a
license identifier, and "GPL-2.0+" is *NOT*. If all you want to do is
identify a particular license text, use a license identifier. No "+"
exists at the end of a license identifier.

However, a "license identifier" is often inadequate for describing the
licensing requirements imposed on users and later developers. Many
packages have different subcomponents with different licenses. Many
packages include the text of some license (such as the GPL version
2.0), but there are often two possible cases:
- You must use this particular version of the license.
- You may use this or any later version of the license.

Thus, SPDX 2.0 defines a "license expression" for describing how
license texts apply to software packages,. A license expression is
built out of license identifiers but adds ways to describe how the
license texts are used. A "+" appended after the name of a license
identifier means "or any later version may also be used". E.G., the
license expressions "(GPL-2.0+ WITH Classpath-Exception-2.0)" and "(MIT
AND BSD-3-CLAUSE)" express how the license text requirements are
imposed on recipients (users and developers). License expressions use
the long-standing convention is that if software is licensed using
"this or any later version" you add a "+" to the name of the license.
You can argue that the "+" should be the default, but standards
typically work best if they build on pre-existing conventions, and that
was certainly the case here.

--- David A. Wheeler

Join { to automatically receive all group messages.