Proposal: Add `package_url` and `package_provider` to CPS supplemental schema
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Stale
- Domain
- documentation
Research direction
No file or test is named in the issue; start by locating the CPS Supplemental schema and reviewing the linked spdx-to-cps and CMake context. Done means the schema decision is recorded for both optional package properties with their stated semantics and examples.
Written by the indexing model from the issue text.
Description
Summary
Request to add two new CPS Supplemental properties: package_url and package_provider.
These supply provenance and discovery metadata that help consumers trace, reproduce, and report package origins.
This proposal grew out of spdx-to-cps, where we saw a need to represent provenance fields.
As noted in CMake issue #27128:
"Sbom generation would like to list all the information it can, including each dependencies Description, PackageUrl, Website, and License."
This proposal addresses the need for package_url (canonical retrievable source) as well as package_provider (ecosystem identifier).
Motivation / Problem
Currently, CPS packages contain metadata about the package name, version, and requirements, but lack a standardized way to indicate:
- Where the package can be retrieved from (URL, registry, distribution archive, etc.).
- Which provider or ecosystem is responsible for the package (e.g., vcpkg, Conan, system package manager).
This information is important for:
- Reproducibility: tools or humans can trace back to the original distribution.
- Provenance: consumers can validate where a package was sourced.
- Ecosystem integration: enabling bridges between CPS and existing package ecosystems.
Proposed Specification Changes (Supplemental)
-
package_url-
Type:
string -
Applies To:
package -
Required: No
-
Semantics:
A URL pointing to the canonical location of the package.
This may be:- A fetchable VCS or distribution URL, e.g.:
git+https://github.com/madler/[email protected]
https://example.com/foo-1.2.3.tar.gz, - A canonical identifier (e.g. purl spec).
At present, the
spdx-to-cpsscript emitsgit+https://...style URLs. - A fetchable VCS or distribution URL, e.g.:
-
Example:
{ "package": { "name": "zlib", "version": "1.2.11", "package_url": "git+https://github.com/madler/[email protected]" } }
Distinction from
website:package_urlidentifies a canonical retrievable source for the package (e.g., VCS URL, distribution archive, or purl), whilewebsiteis informational and intended to point to a project or package homepage for human use. -
-
package_provider-
Type:
string -
Applies To:
package -
Required: No
-
Semantics:
The ecosystem or distribution source that supplied this package.
Intended values may includevcpkg,conan,system,spack, etc.
Tools can use this to customize resolution strategies or provenance reports. -
Example:
{ "package": { "name": "zlib", "version": "1.2.11", "package_provider": "vcpkg" } }
-
Compatibility
- Additive change, backward compatible.
- Existing consumers that do not recognize these properties may safely ignore them.
- If accepted into the Supplemental Schema, tools MAY support them.
- Dominant language
- Python
- Stars
- 191
- Forks
- 14
- PR merge metrics
- No merged PRs in 30d
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from cps-org/cps
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 35/100
-
Difficulty 5/5 Over a week Newbie friendliness 40/100
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
Similar issues
-
md/asciidoc/csv: an explicit `encoding="utf-8"` keeps a leading BOM, the auto-detect path drops itOpen
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
docling-project/docling#4846 ·
Maintainers usually reply within 1 day
-
area/sessions comp/dashboard comp/desktop comp/gateway comp/tui duplicate P2 sweeper:risk-session-state type/bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
NousResearch/hermes-agent#138914 · 1 comment ·
Maintainers usually reply within 1 day
-
bot-triaged module: activation checkpointing module: inductor oncall: pt2 triaged
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
[oblt-aw][autodoc] Update PR Actions Detective E2E prerequisites and fix dashboard-format table typoOpendocumentation
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
elastic/oblt-aw#2382 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day