Product line
The product line is a UVL model. It names every feature a product of the line may have and the rules that combine them, and it is the top layer: everything below follows from it.
What it holds
features
marketplace_spl
mandatory
auth {org 'splent-io', package 'splent_feature_auth'}
session
alternative
session_filesystem {...}
session_redis {...}
optional
admin {...}
autodeploy {...}
constraints
session_redis => redis
autodeploy => admin
- Features, each pointing at the package that implements it (
organdpackage). - Groups: mandatory, optional, alternative (exactly one) and or (at least one).
- Constraints such as
autodeploy => admin.
It lives in splent_spl_<name>/, as <name>.uvl with a metadata.toml, and every published version has a DOI on UVLHub.
How it relates to the other layers
- Features. Each node is a feature package. A constraint
A => Bmeans A needs B, so B loads and migrates first. - Product. A product is one configuration of the model and pins the model’s version by DOI. Every configuration is checked for satisfiability before it is applied.
- Framework. At boot it orders the product’s features by the model.
- Image. The production image carries the pinned model, so the order holds in production too.
Commands
| Command | What it does |
|---|---|
spl:list |
The lines this workspace knows |
spl:fetch |
Downloads a model from UVLHub into the cache |
spl:add-feature, spl:add-constraints |
Edit a model you work on |
spl:publish |
Publishes a new version through the marketplace |
spl:pin |
Points a product at a published version |