An open API service indexing awesome lists of open source software.

https://github.com/cutenode/conformance

☑️ Module to check SPDX license expression conformance and surface meta information about license expressions
https://github.com/cutenode/conformance

conformance depth fsf insight licenses osi spdx

Last synced: 4 days ago
JSON representation

☑️ Module to check SPDX license expression conformance and surface meta information about license expressions

Awesome Lists containing this project

README

        

# Conformance

A module that helps you get insight into licenses included in the SPDX license list.

## Usage

If you just want to see if a specific license ID or license string is conformant:

```js
const conformance = require('conformance')

conformance('MIT')
conformance('ISC OR GPL-2.0-with-GCC-exception')
```

## What

This module will spit out an object at you with a suite of information about an SPDX license expression you pass in. In general, it will look something like this:

```json
{
"uniqueLicenseIds": [
"MIT"
],
"spdxLicenseLinks": [
"https://spdx.org/licenses/MIT.html#licenseText"
],
"spdx": {
"osi": true,
"fsf": true,
"fsfAndOsi": true,
"deprecated": false
}
}
```

## API

Current usage looks like this:

```js
const conformance = require('conformance')

conformance(, [options])
```

Where:

- ` is a required string.
- Can be any valid [SPDX license expression](https://spdx.org/spdx-specification-21-web-version#h.jxpfx0ykyb60), which will be parsed by [spdx-expression-parse](https://www.npmjs.com/package/spdx-expression-parse).
- `[options]` is an optional object that contains the following properties:
- `throwOnError`: a `Boolean` that indicates whether or not you want to throw on errors.

## Why

This is something I've wanted to see for a long time. I've personally seen how high of a barrier licensing can be for larger teams. By increasing insight into license structure across applications, we can hopefully lower the barrier for further adoption across industries ❤️

## Limitations

- License expression depth is currently limited to three licenses. For example, `MIT AND (CC0-1.0 OR ISC)` is the current maximum depth. This will return 3 licenses, as you'd expect. This isn't a hard limit, it's just the depth that's been written in the context of licenses on npm. To date, I've not seen a license expression that goes further than this. If this ends up being rewritten, it should just be a recursive function that continues to check regardless of depth.