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 (org and package).
  • 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 => B means 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

Go deeper


Back to top

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