Marketplace
The SPLENT Marketplace is how features and product lines are discovered,
composed and consumed across the ecosystem. It is a public catalog at
marketplace.splent.io (deployment in
progress), the same data behind feature:search and
feature:info in the CLI, and a UVL configurator that
turns a feature selection into the exact splent commands that build a
product.
The philosophy
The whole marketplace stands on one rule. The index is a regenerable cache, never a second source of truth.
- Everything is derived. What the marketplace knows about a feature
comes from the feature’s own auto-generated
[tool.splent.contract]inpyproject.toml, read at its latest released tag. What it knows about product lines comes from their UVL variability models. Nothing is typed into the marketplace by hand. - Publishing a feature is releasing it.
feature:releasebumps the version, regenerates the contract, tags the repo and uploads to GitHub and PyPI. The tag IS the publication. There is no upload form, no account, and no publish API for features. - Publishing a variability model is the one exception, and it goes
through the marketplace.
spl:publishsends the.uvlto the marketplace, which relays it to UVLHub on its key and reports back the DOI. The marketplace holds one key for everybody, so you authenticate to the marketplace withsplent loginand never touch UVLHub yourself. - If the index is stale, wrong or lost, rebuild it. A single command,
marketplace:index, regenerates the entireindex.jsonfrom the sources of truth. Nothing is ever edited in place. - No data server. The published index is a static
index.jsonbuilt by CI insplent-io/splent_indexand served from GitHub Pages. The web catalog, the configurator and the CLI all read that same file. There is no database and no API backend to operate, scale or breach.
The ecosystem at a glance
Features go out through git and PyPI, and come back in through the index.
feature code ──▶ [tool.splent.contract] ──▶ feature:release (git tag + PyPI)
(pyproject.toml, auto-generated) │
▼
UVL models ───────────────────────────▶ marketplace:index (CI, splent_index)
(parsed structure + DOI pointer) │
▼
index.json (static, cached)
│ │
▼ ▼
CLI (feature: web catalog +
search/info) configurator
│ │
└──────┬──────┘
▼
splent commands ──▶ your product
(feature:install / feature:add,
product:resolve, product:derive)
Variability models go out and come back by different routes, and that asymmetry is the point.
WRITING splent_spl_<name>/ your working copy
│
│ spl:publish (needs splent login)
▼
MARKETPLACE ──── on its one UVLHub key ────▶ UVLHub
│
READING <product>/pyproject.toml │
[tool.splent.spl_model] ─ DOI ─▶ spl:fetch ─────────┘
│
▼
.splent_cache/spls/
(offline from here on)
spl:publish goes through the marketplace, which is
the only holder of a UVLHub key. spl:fetch reads
straight from UVLHub by DOI and needs no account at all. The DOI travels
with the product, so a clone resolves the model with nothing but its own
repository and UVLHub.
In this section
- Browsing the catalog. The web catalog, with search, filters, feature sheets and product lines
- The configurator. Pick a line, select features with live UVL validation, copy the commands
- Installing features. Consuming the marketplace from the CLI
- Publishing your feature. How third parties release, get listed and publish their UVL models
- Architecture. The index schema, the CI pipeline and the dependency model, for contributors
For the command reference, see the Marketplace commands section of the CLI docs.