THE SPDX WIKI IS NO LONGER ACTIVE. ALL CONTENT HAS BEEN MOVED TO https://github.com/spdx

Difference between revisions of "Technical Team/Proposals/2010-10-21/Composite licensing"

From SPDX Wiki
Jump to: navigation, search
Line 5: Line 5:
 
<h2>Issue</h2>
 
<h2>Issue</h2>
  
<p>There are some licensing scenarios which are not expressable in SPDX.
+
<p>There are some licensing scenarios which are not expressable in SPDX. For example, there is currently no way to express that a file can be used under the licenses A and B or A and C.</p>
For example, there is currently no way to express that a file can be
+
used under the licenses A and B or A and C.</p>
+
  
 
<h3>Use cases</h3>
 
<h3>Use cases</h3>
Line 22: Line 20:
 
<h2>Proposal</h2>
 
<h2>Proposal</h2>
  
<p>Introduce a license set concept to cover all these use cases.
+
<p>Introduce a license set concept to cover all these use cases. Specifically, a `ConjunctiveLicenseSet` and a `DisjunctiveLicenseSet`.  Members of these types of sets would be of type `License`, `ConjunctiveLicenseSet` or `DisjunctiveLicenseSet`. This would allow composing licensing information in arbitrary conjunctive and disjunctive groupings.</p>
Specifically, a `ConjunctiveLicenseSet` and a `DisjunctiveLicenseSet`.  Members of these types of sets would be of
+
type `License`, `ConjunctiveLicenseSet` or `DisjunctiveLicenseSet`.
+
This would allow composing licensing information in arbitrary
+
conjunctive and disjunctive groupings.</p>
+
  
<p>The definition of `License` would not change. The `DeclaredLicense` and `DetectedLicense` properties would be
+
<p>The definition of `License` would not change. The `DeclaredLicense` and `DetectedLicense` properties would be updated to allow their value to be a `License`, `ConjunctiveLicenseSet`, or `DisjunctiveLicenseSet`.</p>
updated to allow their value to be a `License`,
+
`ConjunctiveLicenseSet`, or `DisjunctiveLicenseSet`.</p>
+
  
 
<h3>Examples</h3>
 
<h3>Examples</h3>

Revision as of 17:56, 29 November 2010

Status

Draft

Issue

There are some licensing scenarios which are not expressable in SPDX. For example, there is currently no way to express that a file can be used under the licenses A and B or A and C.

Use cases

The set of use cases we need to be able to describe in SPDX is:

  1. a single license

  2. choice of one from multiple single licenses

  3. multiple licenses (conjunctive)

  4. choice of one from multiple conjunctive license sets

Proposal

Introduce a license set concept to cover all these use cases. Specifically, a `ConjunctiveLicenseSet` and a `DisjunctiveLicenseSet`. Members of these types of sets would be of type `License`, `ConjunctiveLicenseSet` or `DisjunctiveLicenseSet`. This would allow composing licensing information in arbitrary conjunctive and disjunctive groupings.

The definition of `License` would not change. The `DeclaredLicense` and `DetectedLicense` properties would be updated to allow their value to be a `License`, `ConjunctiveLicenseSet`, or `DisjunctiveLicenseSet`.

Examples

Single license

<code><br />    <Package><br />      <DeclaredLicense><br />        <rdf:Description rdf:about="license:GPL" /><br />      </DeclaredLicense><br />    </Package><br /></code>

Disjunctive licenses

<code><br />    <Package><br />      <DeclaredLicense><br />        <ConjunctiveLicenseSet><br />          <licenses rdf:parseType="Collection"><br />            <rdf:Description rdf:about="license:GPL" /><br />            <rdf:Description rdf:about="license:BSD" /><br />          </licenses><br />        </ConjunctiveLicenseSet><br />      </DeclaredLicense><br />    </Package><br /></code>

Complex disjunctive licenses

<code><br />    <Package><br />      <DeclaredLicense><br />        <DisjuntiveLicenseSet><br />          <licenses rdf:parseType="Collection"><br />            <ConjunctiveLicenseSet><br />              <licenses rdf:parseType="Collection"><br />                <rdf:Description rdf:about="license:GPL" /><br />                <rdf:Description rdf:about="license:BSD" /><br />              </licenses><br />            </ConjunctiveLicenseSet><br />            <ConjunctiveLicenseSet><br />              <licenses rdf:parseType="Collection"><br />                <rdf:Description rdf:about="license:GPL" /><br />                <rdf:Description rdf:about="license:Apache" /><br />              </licenses><br />            </ConjunctiveLicenseSet><br />          </licenses><br />        </DisjuntiveLicenseSet><br />      </DeclaredLicense><br />    </Package><br /><br /></code>


Changes

These changes are available in the <a href="https://github.com/pezra/spdx-spec/tree/compositeslicensing">'composite-licensing'</a> branch of <a href="https://github.com/pezra/spdx-spec.git">https://github.com/pezra/spdx-spec.git</a>. A full version of the spec with these changes is attached, as is a patch file to implement these changes.