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)
 
(9 intermediate revisions by one other user not shown)
Line 1: Line 1:
<h2>Status</h2><p>
+
Status: draft
  
<strong>Draft</strong></p>
+
==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.
+
==Use cases==
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><p>
+
  
 
The set of use cases we need to be able to describe in SPDX is:
 
The set of use cases we need to be able to describe in SPDX is:
  
1. a single license
+
# a single license
2. choice of one from multiple single licenses
+
# choice of one from multiple single licenses
3. multiple licenses (conjunctive)
+
# multiple licenses (conjunctive)
4. choice of one from multiple conjunctive license sets
+
# choice of one from multiple conjunctive license sets
+
 
</p><h2>Proposal</h2>
+
==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.
  
<p>Introduce a license set concept to cover all these use cases.
+
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`.
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.  Both
+
===Examples===
`ConjunctiveLicenseSet` and `DisjunctiveLicenseSet` would have a
+
required property `licenses`. 
+
  
The `DeclaredLicense` and `DetectedLicense` properties would be
+
====Single license====
updated to allow their value to be a `License`,
+
`ConjunctiveLicenseSet`, or `DisjunctiveLicenseSet`.
+
  
</p><h3>Examples</h3>
+
    <Package>
 +
      <DeclaredLicense>
 +
        <rdf:Description rdf:about="license:GPL" />
 +
      </DeclaredLicense>
 +
    </Package>
  
<h4>Single license</h4>
+
====Disjunctive licenses====
  
<pre><code>
+
    <Package>
    &lt;Package&gt;
+
       <DeclaredLicense>
       &lt;DeclaredLicense&gt;
+
         <ConjunctiveLicenseSet>
         &lt;rdf:Description rdf:about="license:GPL" /&gt;
+
          <licenses rdf:parseType="Collection">
      &lt;/DeclaredLicense&gt;
+
            <rdf:Description rdf:about="license:GPL" />
    &lt;/Package&gt;
+
            <rdf:Description rdf:about="license:BSD" />
</code></pre>
+
          </licenses>
 +
        </ConjunctiveLicenseSet>
 +
      </DeclaredLicense>
 +
    </Package>
  
<h4>Disjunctive licenses</h4>
+
====Complex disjunctive licenses====
  
<pre><code>
+
    <Package>
    &lt;Package&gt;
+
       <DeclaredLicense>
       &lt;DeclaredLicense&gt;
+
         <DisjuntiveLicenseSet>
         &lt;ConjunctiveLicenseSet&gt;
+
           <licenses rdf:parseType="Collection">
           &lt;licenses rdf:parseType="Collection"&gt;
+
             <ConjunctiveLicenseSet>
             &lt;rdf:Description rdf:about="license:GPL" /&gt;
+
              <licenses rdf:parseType="Collection">
            &lt;rdf:Description rdf:about="license:BSD" /&gt;
+
                <rdf:Description rdf:about="license:GPL" />
          &lt;/licenses&gt;
+
                <rdf:Description rdf:about="license:BSD" />
        &lt;/ConjunctiveLicenseSet&gt;
+
              </licenses>
      &lt;/DeclaredLicense&gt;
+
            </ConjunctiveLicenseSet>
    &lt;/Package&gt;
+
            <ConjunctiveLicenseSet>
</code></pre>
+
              <licenses rdf:parseType="Collection">
 +
                <rdf:Description rdf:about="license:GPL" />
 +
                <rdf:Description rdf:about="license:Apache" />
 +
              </licenses>
 +
            </ConjunctiveLicenseSet>
 +
          </licenses>
 +
        </DisjuntiveLicenseSet>
 +
      </DeclaredLicense>
 +
    </Package>
  
<h4>Complex disjunctive licenses</h4>   
+
== Changes ==
  
<pre><code>
+
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.
    &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>
+
[[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.