Skip to content

Instantly share code, notes, and snippets.

@zvr
Created August 23, 2022 15:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zvr/49066115f5ef25531464818d66b92c7c to your computer and use it in GitHub Desktop.
Save zvr/49066115f5ef25531464818d66b92c7c to your computer and use it in GitHub Desktop.
SPDX Change Proposal for additions to license texts

Change Proposal: Record additions to licenses

Owner

Issue statement

Provide a concise statement of the problem or issue that you want to solve, new use case you wish to cover, etc. Optionally include any issues that you would consider to be out of scope for your proposal.
Briefly describe why existing capabilities of SPDX don’t effectively address this problem or issue.

In many cases in real-world projects, the actual license that a piece of software is under is a "standard" license with the "addition" of some text -- which may or may not be legally significant. This additional text may modify the rights granted or obligations imposed by the license, or may even be simply informational.

The SPDX Project has traditionally called such additions that are adding rights or removing obligations "Exceptions" and maintains a list. These can be used in SPDX License Expressions with the WITH operator.

The current specification does not allow for recording these additional texts standalone, but only as parts of a license. The latest guideline is to "use a single LicenseRef- to represent the entire license terms, including the exception."

Proposed solution

Provide a proposed resolution to solve this problem or issue.

The proposed solution is to amend the specification, so that any additional text to a given license can be recorded like regular license text and be referenced by using the new prefix syntax AdditionRef-.

Such additions will be able to be used in SPDX License Expressions in the right-hand side of the WITH operator.

Example

AdditionID: AdditionRef-1
ExtractedText: <text>Please consider the political implications of your work.</text>

Benefit to SPDX and its ecosystem

Describe the audience in the SPDX ecosystem this proposal serves. Include a statement as to how this fits into the overall mission/vision of SPDX.

The proposed change allows recording and expressing more accurate licensing information, which closely aligns with the SPDX project mission and vision.

Scope of impact

Indicate which existing parts of the SPDX project are impacted.

The Specification will be updated to introduce the new syntax.

Obviously, an updated syntax in the specification will impact the SPDX language libraries as well, since they will have to be updated to support the new syntax.

The Ontology in its current state will not be affected, since it does not include information on the content of a LicenseException, the same way that it does not distinguish between licenses in the SPDX License List and licenses defined with LicenseRef.

Additional information

Include any additional information that is relevant or may be helpful to understand the context and/or use case for this change proposal. Also include here links to any related, existing issue or discussions.

Previous discussions

The topic has been discussed in the past a number of times, almost as soon as the Exceptions were introduced in the SPDX License List.

The most recent discussion was in issue 153 of spdx-spec repo

Alternatives considered

Not introducing new prefix

The current specification allows any license to be named and referenced with the prefix LicenseRef-. If the definition were extended for this to refer to any legal text, even partial, there will be no need for introducing a new syntax convention.

However, this would result in an impossibility to distinguish between Licenses and Exceptions, therefore a construct like LicenseRef-1 WITH LicenseRef-2 might be valid (if it were similar to Apache-2.0 WITH LLVM-exception) or not (if it were similar to Apache-2.0 WITH BSD-3-Clause).

Name of the prefix

Similar to the existing LicenseRef- for Licenses, when considering Exceptions the obvious choice would be ExceptionRef-.

However, as described in the issue statement section above, the additional texts are not always exceptions in the legal sense, since there can be cases where they add obigations or even remove rights, not to mention the common case of simple informative text. Rather than using the term "exception", using the neutral term "addition" does not introduce any significance to the type of changes this additional text has on the license text.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment