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"
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` | + | 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`. | + | 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`, | + | `ConjunctiveLicenseSet`, `DisjunctiveLicenseSet` or `LicenseOrLaterVersion`. |
</p><h3>Examples</h3> | </p><h3>Examples</h3> | ||
Line 44: | Line 45: | ||
<pre><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></pre> | <pre><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></pre> | ||
+ | |||
+ | <h4>License or later version</h4> | ||
+ | |||
+ | <pre><code><br /> <Package><br /> <DeclaredLicense><br /> <LicenseOrLaterVersion><br /> <BaseLicense rdf:about="license:GPLv2" /><br /> </LicenseOrLaterVersion><br /> </DeclaredLicense><br /> </Package><br /></code></pre> |
Revision as of 22:34, 15 November 2010
Contents
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>