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 27: Line 27:
 
disjunctive groupings.</p><p>
 
disjunctive groupings.</p><p>
  
The definition of `License` would not change. Both
+
The definition of `License` would not change. The `DeclaredLicense` and `DetectedLicense` properties would be
`ConjunctiveLicenseSet` and `DisjunctiveLicenseSet` would have a
+
required property `licenses`. 
+
 
+
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`, or `DisjunctiveLicenseSet`.
Line 39: Line 35:
 
<h4>Single license</h4>
 
<h4>Single license</h4>
  
<pre><code>
+
<pre><code><br />    &lt;Package&gt;<br />      &lt;DeclaredLicense&gt;<br />        &lt;rdf:Description rdf:about="license:GPL" /&gt;<br />      &lt;/DeclaredLicense&gt;<br />    &lt;/Package&gt;<br /></code></pre>
    &lt;Package&gt;
+
      &lt;DeclaredLicense&gt;
+
        &lt;rdf:Description rdf:about="license:GPL" /&gt;
+
      &lt;/DeclaredLicense&gt;
+
    &lt;/Package&gt;
+
</code></pre>
+
  
 
<h4>Disjunctive licenses</h4>
 
<h4>Disjunctive licenses</h4>
  
<pre><code>
+
<pre><code><br />    &lt;Package&gt;<br />      &lt;DeclaredLicense&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;/DeclaredLicense&gt;<br />    &lt;/Package&gt;<br /></code></pre>
    &lt;Package&gt;
+
      &lt;DeclaredLicense&gt;
+
        &lt;ConjunctiveLicenseSet&gt;
+
          &lt;licenses rdf:parseType="Collection"&gt;
+
            &lt;rdf:Description rdf:about="license:GPL" /&gt;
+
            &lt;rdf:Description rdf:about="license:BSD" /&gt;
+
          &lt;/licenses&gt;
+
        &lt;/ConjunctiveLicenseSet&gt;
+
      &lt;/DeclaredLicense&gt;
+
    &lt;/Package&gt;
+
</code></pre>
+
  
 
<h4>Complex disjunctive licenses</h4>     
 
<h4>Complex disjunctive licenses</h4>     
  
<pre><code>
+
<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>
    &lt;Package&gt;
+
      &lt;DeclaredLicense&gt;
+
        &lt;DisjuntiveLicenseSet&gt;
+
          &lt;licenses rdf:parseType="Collection"&gt;
+
            &lt;ConjunctiveLicenseSet&gt;
+
              &lt;licenses rdf:parseType="Collection"&gt;
+
                &lt;rdf:Description rdf:about="license:GPL" /&gt;
+
                &lt;rdf:Description rdf:about="license:BSD" /&gt;
+
              &lt;/licenses&gt;
+
            &lt;/ConjunctiveLicenseSet&gt;
+
            &lt;ConjunctiveLicenseSet&gt;
+
              &lt;licenses rdf:parseType="Collection"&gt;
+
                &lt;rdf:Description rdf:about="license:GPL" /&gt;
+
                &lt;rdf:Description rdf:about="license:Apache" /&gt;
+
              &lt;/licenses&gt;
+
            &lt;/ConjunctiveLicenseSet&gt;
+
          &lt;/licenses&gt;
+
        &lt;/DisjuntiveLicenseSet&gt;
+
      &lt;/DeclaredLicense&gt;
+
    &lt;/Package&gt;
+
 
+
</code></pre>
+

Revision as of 20:42, 21 October 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>