THE SPDX WIKI IS NO LONGER ACTIVE. ALL CONTENT HAS BEEN MOVED TO https://github.com/spdx

Difference between revisions of "Technical Team/SPDX Meta Tags"

From SPDX Wiki
Jump to: navigation, search
m (clean up comment that shouldn't be visible.)
(What to do if your license is not on the list?: - updates from Collab.)
Line 70: Line 70:
 
==== What to do if your license is not on the list? ====
 
==== What to do if your license is not on the list? ====
  
You should not make up a license identifier (could they use a License ref as in the spec?). Instead you should contact the [http://spdx.org/spdx-license-list/request-new-license SPDX work group] to get your license added to the License List.
+
You could make up a license identifier following the format SPDXLicenseID:LicenseRef-[idString] where idString is is a unique string containing letters, numbers, “.”, “-” or “+”.  Then elsewhere in comments, associate LicenseRef-[idString] with the text.
 +
 
 +
Alternatively, you could contact the [http://spdx.org/spdx-license-list/request-new-license SPDX work group] to get your license added to the License List.
  
 
= Examples =
 
= Examples =

Revision as of 20:54, 28 March 2014

SPDX Meta Tagging

This is currently a DRAFT and work in progress.

Last Updated: 3 October 2013

Introduction

The need to identify the license for open source software is critical for both reporting purposes and license compliance. However, determining the license can be difficult due to a lack of information or ambiguous information. Even when licensing information is present, a lack of consistent notation for providing license information can make automating the task of license detection very difficult, thus requiring vast amounts of human effort.

Meta Tagging is a proposal by the SPDX Work-group to use short license identifiers from the SPDX License List to indicate license info at the file level. The advantages of doing this are numerous but include:

  • It is precise, there is no ambiguity due to variations in license header text.
  • It is language neutral.
  • It is easy to machine process.
  • It is concise
  • Leads to code that is easier to read.
  • The license travels with the file (as sometimes not entire projects are used or license files are removed).
  • It is simple and can be used without much cost in interpreted environments like java Script, etc.,.
  • It is a standard and can be universal. There is no need for all the variation.
  • An SPDX license identifier is immutable.
  • It provides simple guidance for developer's who want to make sure the license for their code is respected.


History

Although discussed by SPDX for some time, with proposals by Windriver, the U-boot project was the first open source project to adopt (that we know about). This was the commit message by Wolfgang Denk the project maintainer:

   Like many other projects, U-Boot has a tradition of including big
   blocks of License headers in all files.  This not only blows up the
   source code with mostly redundant information, but also makes it very
   difficult to generate License Clearing Reports.  An additional problem
   is that even the same licenses are referred to by a number of
   slightly varying text blocks (full, abbreviated, different
   indentation, line wrapping and/or white space, with obsolete address
   information, ...) which makes automatic processing a nightmare.
   
   To make this easier, such license headers in the source files will be
   replaced with a single line reference to Unique Lincense Identifiers
   as defined by the Linux Foundation's SPDX project [1].  For example,
   in a source file the full "GPL v2.0 or later" header text will be
   replaced by a single line:
   
           SPDX-License-Identifier:        GPL-2.0+

Meta Tags

The following Meta Tags are available for use.

SPDX-License-Identifier

This tag declares the license the file is under and should be placed at or near the top of the file. To the extent that the file contains existing copyright and license information it is our general recommendation that the tag be used to supplement not replace that information especially for files with a long history of changes, multiple copyright holders, or complex licensing. Of course, this is the ultimate decision of the copyright holders of the file.

Tag Format

The tag should appear on its own line in the source file.

Tag: SPDX-License-Identifier: <SPDX Short License Name>

Example: SPDX-License-Identifier: MIT

Representing Multiple Licenses

For a license set, when there is a choice between licenses ("disjunctive license"), they should be separated with "or" and enclosed in parentheses. Similarly when multiple licenses need to be applied ("conjunctive license"), they should be separated with "and" and enclosed in parentheses.

Example: SPDX-License-Identifier: (GPL-2.0 or MIT)

What to do if your license is not on the list?

You could make up a license identifier following the format SPDXLicenseID:LicenseRef-[idString] where idString is is a unique string containing letters, numbers, “.”, “-” or “+”. Then elsewhere in comments, associate LicenseRef-[idString] with the text.

Alternatively, you could contact the SPDX work group to get your license added to the License List.

Examples

These are examples of communities which are using a Meta Tag.

Uboot

U-boot is [1]using SPDX-License-Identifiers in place of a license header in source.

Proposing New Meta Tags

To propose a new Meta Tag, send your proposal to the SPDX Technical Workgroup using their mailing list.