-
Notifications
You must be signed in to change notification settings - Fork 220
Description
This is a summary issue for discussion of multiple approaches to defining PURL types for software that is not covered/distributed by a package manager system like npm or PyPI or by a Linux distro like Debian or Red Hat. From discussions to-date there seem to be two major areas of interest:
FOSS where the software is public
In this case the challenge is to define structures that emulate a package manager. The most commonly discussed example is C/C++ projects that do not use a package manager like Chocolatey or Conan because those package manager effectively require that you also use their build systems. There is currently a 'generic' PURL type as a backstop but it depends on qualifiers" like 'download_url' or 'vcs_url to provide specific information.
There is a new purl-registry project that proposes "a public, shared, open registry of Package-URLs for packages that do not live in a structured ecosystem and therefore may not have a PURL." This project is in a very early pilot phase, but it does offer some examples of YAML files for kitware, linux, openssl and zlib. See the OVERVIEW for an explanation of the proposed approach. The project goals are:
- Design and propose a PURL type for C/C++ packages using PURL, as part of the PURL specification.
- Create an open reference catalog of C/C++ packages, keyed by the cpp PURL type, focusing on common packages.
- Enable content-based discovery and identification of C/C++ packages, supported by the PURL catalog.
- Extend the ABOUT file data format as the “missing” metadata manifest for C/C++ packages.
- Create an open mapping between CVEs and C/C++ PURLs to enable known vulnerability lookups using C/C++ PURLs in the vulnerability database.
Proprietary software where the software is not public
In this case the challenges are to define structures that emulate a package manager and doing so in a way that enable proprietary software suppliers or internal IT organizations to create a PURL registry without making their product packages public. The primary proposal for this use case is:
The proposed approach introduce aa new PURL type: 'scid' as an acronym for Software Component Identification, pronounced /skɪd/.
This PURL type is intended to cover:
- Commercial and proprietary software (e.g., Acme Database Server)
- Standalone open source projects (e.g., the Linux Kernel)
- Internally developed applications that do not belong to a recognized package ecosystem
- Binary-only or installable software where no manifest-based or registry-driven packaging exists
The purl-registry project (above) provides a different potential solution for "Standalone open source projects", but it is not intended to cover the other use cases.