Context
Related to #48137 and #140158, but narrower: this is not about accepting non-OSI packages, but about recognizing OSI-approved licensing evidence in REUSE/SPDX-compliant repositories.
Problem
The current check appears oriented toward a single root LICENSE file. That works for simple packages, but is imprecise for repositories where source code, docs, CI files, generated files, and vendored files may have different license expressions.
In such repositories, a full-text root LICENSE file can be misleading: it may suggest that the whole repository is under one license. REUSE/SPDX expresses this more precisely through SPDX headers, REUSE.toml / .reuse/dep5 metadata, and canonical texts under LICENSES/. A root LICENSE file may therefore deliberately be only a pointer to the machine-readable licensing information.
Reference case and possible tooling
I have published an early-development reference package:
https://github.com/bslMS/ReuseLicensing.jl
The package currently provides SPDX license-expression parsing and policy evaluation. It is itself REUSE-compliant and uses a pointer-style root LICENSE file with canonical license texts under LICENSES/.
The next development step is file-level and repository-level policy evaluation, likely consuming reuse lint --json and/or REUSE-generated SPDX/SBOM data.
A RegistryCI-facing API could be as simple as:
has_general_registry_approved_source_license(path)::Bool
or for diagnostics:
evaluate_package(path; policy = GeneralRegistryPolicy())
The intended policy would be narrow: verify that package-relevant Julia source files have an OSI-approved SPDX license path, while reporting non-source domains such as documentation, metadata, CI files, or media separately.
Questions
- Would General be open to treating REUSE/SPDX evidence as an alternative to the traditional single root LICENSE heuristic?
- Should such a check be repository-wide, or restricted to package-relevant source domains such as
src/, ext/, generated Julia files, and files included in the package tarball?
- Would a pointer-style root LICENSE file be acceptable if the authoritative license information is REUSE-compliant and machine-verifiable?
- Would
ReuseLicensing.jl itself be a useful reference case, or should I adapt its layout before attempting registration?
I would be happy to shape ReuseLicensing.jl so that it exposes a small, stable API for CLI suitable for RegistryCI, if there is interest in this direction.
Disclosure: I used AI assistance to improve the clarity and structure of this issue text.
Context
Related to #48137 and #140158, but narrower: this is not about accepting non-OSI packages, but about recognizing OSI-approved licensing evidence in REUSE/SPDX-compliant repositories.
Problem
The current check appears oriented toward a single root
LICENSEfile. That works for simple packages, but is imprecise for repositories where source code, docs, CI files, generated files, and vendored files may have different license expressions.In such repositories, a full-text root
LICENSEfile can be misleading: it may suggest that the whole repository is under one license. REUSE/SPDX expresses this more precisely through SPDX headers,REUSE.toml/.reuse/dep5metadata, and canonical texts underLICENSES/. A rootLICENSEfile may therefore deliberately be only a pointer to the machine-readable licensing information.Reference case and possible tooling
I have published an early-development reference package:
https://github.com/bslMS/ReuseLicensing.jl
The package currently provides SPDX license-expression parsing and policy evaluation. It is itself REUSE-compliant and uses a pointer-style root LICENSE file with canonical license texts under LICENSES/.
The next development step is file-level and repository-level policy evaluation, likely consuming
reuse lint --jsonand/or REUSE-generated SPDX/SBOM data.A RegistryCI-facing API could be as simple as:
or for diagnostics:
The intended policy would be narrow: verify that package-relevant Julia source files have an OSI-approved SPDX license path, while reporting non-source domains such as documentation, metadata, CI files, or media separately.
Questions
src/,ext/, generated Julia files, and files included in the package tarball?ReuseLicensing.jlitself be a useful reference case, or should I adapt its layout before attempting registration?I would be happy to shape
ReuseLicensing.jlso that it exposes a small, stable API for CLI suitable for RegistryCI, if there is interest in this direction.Disclosure: I used AI assistance to improve the clarity and structure of this issue text.