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 17: Line 17:
 
  3. multiple licenses (conjunctive)
 
  3. multiple licenses (conjunctive)
 
  4. choice of one from multiple conjunctive license sets
 
  4. choice of one from multiple conjunctive license sets
 +
5. choice of one license or any later versions of that license
 
   
 
   
 
</p><h2>Proposal</h2>
 
</p><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`.
+
Specifically, a `ConjunctiveLicenseSet`, a `DisjunctiveLicenseSet` and
Members of these types of sets would be of type `License`,
+
a `LicenseOrLaterVersion`.  Members of these types of sets would be of
`ConjunctiveLicenseSet` or `DisjunctiveLicenseSet`. This would allow
+
type `License`, `ConjunctiveLicenseSet` or `DisjunctiveLicenseSet`.
composing licensing information in arbitrary conjunctive and
+
This would allow composing licensing information in arbitrary
disjunctive groupings.</p><p>
+
conjunctive and disjunctive groupings.</p><p>
  
 
The definition of `License` would not change. The `DeclaredLicense` and `DetectedLicense` properties would be
 
The definition of `License` would not change. The `DeclaredLicense` and `DetectedLicense` properties would be
 
updated to allow their value to be a `License`,
 
updated to allow their value to be a `License`,
`ConjunctiveLicenseSet`, or `DisjunctiveLicenseSet`.
+
`ConjunctiveLicenseSet`, `DisjunctiveLicenseSet` or `LicenseOrLaterVersion`.
  
 
</p><h3>Examples</h3>
 
</p><h3>Examples</h3>
Line 44: Line 45:
  
 
<pre><code><br />    &lt;Package&gt;<br />      &lt;DeclaredLicense&gt;<br />        &lt;DisjuntiveLicenseSet&gt;<br />          &lt;licenses rdf:parseType="Collection"&gt;<br />            &lt;ConjunctiveLicenseSet&gt;<br />              &lt;licenses rdf:parseType="Collection"&gt;<br />                &lt;rdf:Description rdf:about="license:GPL" /&gt;<br />                &lt;rdf:Description rdf:about="license:BSD" /&gt;<br />              &lt;/licenses&gt;<br />            &lt;/ConjunctiveLicenseSet&gt;<br />            &lt;ConjunctiveLicenseSet&gt;<br />              &lt;licenses rdf:parseType="Collection"&gt;<br />                &lt;rdf:Description rdf:about="license:GPL" /&gt;<br />                &lt;rdf:Description rdf:about="license:Apache" /&gt;<br />              &lt;/licenses&gt;<br />            &lt;/ConjunctiveLicenseSet&gt;<br />          &lt;/licenses&gt;<br />        &lt;/DisjuntiveLicenseSet&gt;<br />      &lt;/DeclaredLicense&gt;<br />    &lt;/Package&gt;<br /><br /></code></pre>
 
<pre><code><br />    &lt;Package&gt;<br />      &lt;DeclaredLicense&gt;<br />        &lt;DisjuntiveLicenseSet&gt;<br />          &lt;licenses rdf:parseType="Collection"&gt;<br />            &lt;ConjunctiveLicenseSet&gt;<br />              &lt;licenses rdf:parseType="Collection"&gt;<br />                &lt;rdf:Description rdf:about="license:GPL" /&gt;<br />                &lt;rdf:Description rdf:about="license:BSD" /&gt;<br />              &lt;/licenses&gt;<br />            &lt;/ConjunctiveLicenseSet&gt;<br />            &lt;ConjunctiveLicenseSet&gt;<br />              &lt;licenses rdf:parseType="Collection"&gt;<br />                &lt;rdf:Description rdf:about="license:GPL" /&gt;<br />                &lt;rdf:Description rdf:about="license:Apache" /&gt;<br />              &lt;/licenses&gt;<br />            &lt;/ConjunctiveLicenseSet&gt;<br />          &lt;/licenses&gt;<br />        &lt;/DisjuntiveLicenseSet&gt;<br />      &lt;/DeclaredLicense&gt;<br />    &lt;/Package&gt;<br /><br /></code></pre>
 +
 +
<h4>License or later version</h4>
 +
 +
<pre><code><br />    &lt;Package&gt;<br />      &lt;DeclaredLicense&gt;<br />        &lt;LicenseOrLaterVersion&gt;<br /> &lt;BaseLicense rdf:about="license:GPLv2" /&gt;<br />        &lt;/LicenseOrLaterVersion&gt;<br />      &lt;/DeclaredLicense&gt;<br />    &lt;/Package&gt;<br /></code></pre>

Revision as of 22:34, 15 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
5. choice of one license or any later versions of that license

Proposal

Introduce a license set concept to cover all these use cases. Specifically, a `ConjunctiveLicenseSet`, a `DisjunctiveLicenseSet` and a `LicenseOrLaterVersion`. 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`, `DisjunctiveLicenseSet` or `LicenseOrLaterVersion`.

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>

License or later version

<code><br />    <Package><br />      <DeclaredLicense><br />        <LicenseOrLaterVersion><br /> <BaseLicense rdf:about="license:GPLv2" /><br />        </LicenseOrLaterVersion><br />      </DeclaredLicense><br />    </Package><br /></code>