https://github.com/licenselynx/licenselynx
Deterministically map license strings to their canonical identifiers
https://github.com/licenselynx/licenselynx
deterministic java license-compliance license-mapping python typescript
Last synced: 5 months ago
JSON representation
Deterministically map license strings to their canonical identifiers
- Host: GitHub
- URL: https://github.com/licenselynx/licenselynx
- Owner: licenselynx
- License: bsd-3-clause
- Created: 2025-03-12T14:55:07.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-02-11T15:50:50.000Z (5 months ago)
- Last Synced: 2026-02-11T22:18:24.213Z (5 months ago)
- Topics: deterministic, java, license-compliance, license-mapping, python, typescript
- Language: Python
- Homepage: https://licenselynx.org/
- Size: 4.61 MB
- Stars: 14
- Watchers: 4
- Forks: 3
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Copyright: COPYRIGHT.txt
Awesome Lists containing this project
README

[](https://github.com/licenselynx/licenselynx/releases/latest)
[](LICENSE)




[](https://github.com/licenselynx/licenselynx/actions/workflows/python.yaml)
[](https://github.com/licenselynx/licenselynx/actions/workflows/java.yaml)
[](https://github.com/licenselynx/licenselynx/actions/workflows/typescript.yaml)
[](https://github.com/licenselynx/licenselynx/actions/workflows/scripts.yaml)
[](https://github.com/licenselynx/licenselynx/actions/workflows/data.yaml)
# LicenseLynx
## Overview
LicenseLynx is a project focused on deterministically map unknown or ambiguous license names and their canonical license names.
Additionally, we offer libraries for Python, Java, and TypeScript to streamline the process of mapping licenses to their canonical names,
typically represented by SPDX IDs.
## Folder Structure
The folders **Java**, **Python**, and **TypeScript** are providing libraries to use in code.
The folder **scripts** contains several useful scripts to update, transform, and verify data.
In the folder **website** we host a static website to introduce the community to the LicenseLynx project.
## Data structure
In folder **data** all licenses are stored in their own json-files.
The structure of a stored license looks like this:
```json
{
"canonical": {
"id": "BSD-3-Clause",
"src": "spdx"
},
"aliases": {
"spdx": [
"BSD 3-Clause \"New\" or \"Revised\" License"
],
"custom": [
"3-Clause BSD",
"3-Clause BSD License",
"EDL 1.0",
"Modified BSD License",
"new BSD",
"BSD 3-Clause Revised"
],
"osi": [
"BSD-3",
"Revised BSD License"
],
"scancodeLicensedb": [
"bsd-new",
"LicenseRef-scancode-libzip"
]
},
"rejected": [],
"risky": []
}
```
| ID | Description |
|-----------|------------------------------------------------------------------------------------------------------|
| canonical | JSON Object for canonical identifier `id` and the source `src` where this information comes from |
| aliases | Dictionary of sources, where each source is list of aliases of license (e.g. "spdx", "custom", etc.) |
| rejected | List of rejected aliases |
| risky | List of risky aliases |
## Data Quality
With LicenseLynx we aim to have a deterministic mean of license mappings.
For more details, head to our [website](https://licenselynx.org/data-quality) to find out more.
## Contributing
We welcome contributions from the community to improve this project. If you'd like to contribute, please refer to
our [Contribution Guidelines](https://licenselynx.org/contribution) for detailed instructions on how to get started.
## License
This project is licensed under the [BSD 3-Clause "New" or "Revised" License](LICENSE) (SPDX-License-Identifier: BSD-3-Clause).
Copyright (c) Siemens AG 2025 ALL RIGHTS RESERVED