Software Package Data Exchange


Software Package Data Exchange is a file format used to document information on the software licenses under which a given piece of computer software is distributed. SPDX is authored by the SPDX Working Group, which represents more than twenty different organizations, under the auspices of the Linux Foundation.
SPDX attempts to standardize the way in which organizations publish their metadata on software licenses and components in bills of material.
SPDX describes the exact terms under which a piece of software is licensed. It does not attempt to categorize licenses by type, for instance by describing licenses with similar terms to the BSD License as "BSD-like".
The current version of the standard is 2.1, ratified in November 2016.

License syntax

Each license is identified by a full name, such as "Mozilla Public License 2.0" and a short identifier, here "MPL-2.0".
Licenses can be combined by operators AND and OR, and grouping .
For example, means that one can choose between Apache-2.0 or MIT. On the other hand, means that both licenses apply.
There is also a "+" operator, when applied to a license, means that future versions of the license apply as well. For example, Apache-1.1+ means that Apache-1.1 and Apache-2.0 may apply.
The GNU family of licenses have the choice of choosing a later version of the license built in. Sometimes, it was not clear, whether the SPDX expression GPL-2.0 meant "exactly GPL version 2.0" or "GPL version 2.0 or any later version". Thus, since version 3.0 of the SPDX License List, the GNU family of licenses get new names. GPL-2.0-only means "exactly version 2.0" and GPL-2.0-or-later "GPL version 2.0 or any later version".
In 2020, the European Commission publishes its Joinup Licensing Assistant, which makes possible the selection and comparison of more than 50 licenses, with access to their SPDX identifier and full text.