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] in pyproject.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:release bumps 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:publish sends the .uvl to 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 with splent login and never touch UVLHub yourself.
  • If the index is stale, wrong or lost, rebuild it. A single command, marketplace:index, regenerates the entire index.json from the sources of truth. Nothing is ever edited in place.
  • No data server. The published index is a static index.json built by CI in splent-io/splent_index and 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

For the command reference, see the Marketplace commands section of the CLI docs.


Table of contents


Back to top

splent. Distributed by an LGPL license v3. Contact us: drorganvidez@us.es