Scan results are currently focused on packages, but in a typical product codebase there are lots of files that are not (or no longer) associated with packages, and these files may be very important from a license compliance perspective. Some cases include:
- first-party files that could be reported together as belonging to the product copyright holder under the product license expression
- files that have been extracted from third-party archives and used individually, often containing copyright or license statements or both
These miscellaneous files are currently difficult to analyze in the product codebase scan results, especially when there are lots of them, and they are not always being included in attribution and SBOM outputs.
Consider grouping these miscellaneous files into "local" packages (or "custom", "virtual", "logical", "file_set" packages), perhaps combining them by license_expression. It may also make sense to define these using the PURL convention; consider:
Type: "local" (or some other descriptive label that distinguishes them from standard packages)
Namespace: the name of the product codebase
Name: the common license_expression for the group of files
Version: the version of the product codebase
Qualifiers: optional, most likely null
Subpath: optional, most likely null
The primary advantage of creating "local" packages in the scan results are:
- organize the data for review and analysis, where the assigned PURL makes it clear that these "packages" are a special case
- take advantage of the existing ScanCode.io UI
- take advantage of existing code that generates attribution and SBOMs
I prefer the term "local" for the PURL Type value, but this is of course open to discussion.
Scan results are currently focused on packages, but in a typical product codebase there are lots of files that are not (or no longer) associated with packages, and these files may be very important from a license compliance perspective. Some cases include:
These miscellaneous files are currently difficult to analyze in the product codebase scan results, especially when there are lots of them, and they are not always being included in attribution and SBOM outputs.
Consider grouping these miscellaneous files into "local" packages (or "custom", "virtual", "logical", "file_set" packages), perhaps combining them by license_expression. It may also make sense to define these using the PURL convention; consider:
Type: "local" (or some other descriptive label that distinguishes them from standard packages)
Namespace: the name of the product codebase
Name: the common license_expression for the group of files
Version: the version of the product codebase
Qualifiers: optional, most likely null
Subpath: optional, most likely null
The primary advantage of creating "local" packages in the scan results are:
I prefer the term "local" for the PURL Type value, but this is of course open to discussion.