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
(Convert to MediaWiki syntax)
 
Line 1: Line 1:
<h2>Status</h2>
+
Status: draft
  
<strong>Draft</strong>
+
==Issue==
  
<h2>Issue</h2>
+
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>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>
+
==Use cases==
  
<h3>Use cases</h3>
+
The set of use cases we need to be able to describe in SPDX is:
  
<p>The set of use cases we need to be able to describe in SPDX is:</p>
+
# a single license
 +
# choice of one from multiple single licenses
 +
# multiple licenses (conjunctive)
 +
# choice of one from multiple conjunctive license sets
  
<ol>
+
==Proposal==
<li><p>a single license</p></li>
+
<li><p>choice of one from multiple single licenses</p></li>
+
<li><p>multiple licenses (conjunctive)</p></li>
+
<li><p>choice of one from multiple conjunctive license sets</p></li>
+
</ol>
+
+
<h2>Proposal</h2>
+
  
<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>
+
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>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>
+
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`.
  
<h3>Examples</h3>
+
===Examples===
  
<h4>Single license</h4>
+
====Single license====
  
<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>
+
    <Package>
 +
      <DeclaredLicense>
 +
        <rdf:Description rdf:about="license:GPL" />
 +
      </DeclaredLicense>
 +
    </Package>
  
<h4>Disjunctive licenses</h4>
+
====Disjunctive licenses====
  
<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>
+
    <Package>
 +
      <DeclaredLicense>
 +
        <ConjunctiveLicenseSet>
 +
          <licenses rdf:parseType="Collection">
 +
            <rdf:Description rdf:about="license:GPL" />
 +
            <rdf:Description rdf:about="license:BSD" />
 +
          </licenses>
 +
        </ConjunctiveLicenseSet>
 +
      </DeclaredLicense>
 +
    </Package>
  
<h4>Complex disjunctive licenses</h4>   
+
====Complex disjunctive licenses====
  
<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>
+
    <Package>
 +
      <DeclaredLicense>
 +
        <DisjuntiveLicenseSet>
 +
          <licenses rdf:parseType="Collection">
 +
            <ConjunctiveLicenseSet>
 +
              <licenses rdf:parseType="Collection">
 +
                <rdf:Description rdf:about="license:GPL" />
 +
                <rdf:Description rdf:about="license:BSD" />
 +
              </licenses>
 +
            </ConjunctiveLicenseSet>
 +
            <ConjunctiveLicenseSet>
 +
              <licenses rdf:parseType="Collection">
 +
                <rdf:Description rdf:about="license:GPL" />
 +
                <rdf:Description rdf:about="license:Apache" />
 +
              </licenses>
 +
            </ConjunctiveLicenseSet>
 +
          </licenses>
 +
        </DisjuntiveLicenseSet>
 +
      </DeclaredLicense>
 +
    </Package>
  
 +
== Changes ==
  
<h3>Changes</h3>
+
These changes are available in the [https://github.com/pezra/spdx-spec/tree/compositeslicensing 'composite-licensing'] branch of https://github.com/pezra/spdx-spec.git. A full version of the spec with these changes is attached, as is a patch file to implement these changes.
  
<p>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.</p>
+
[[Category:Technical]]

Latest revision as of 11:23, 7 March 2013

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

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

Disjunctive licenses

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

Complex disjunctive licenses

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

Changes

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