SPLENT

From feature model to production.

Get started Marketplace Source


What is SPLENT

SPLENT (Software Product Line Engineering Toolkit) is a Software Product Line toolkit for Python. You pick features from a validated variability model, derive a running product with one command, and release it to a server that deploys itself.

A product is a thin Flask shell that declares its features. Each feature is a versioned Python package with its routes, models, migrations, templates, assets and tests, and its own services such as Redis or Nginx when it needs them. The products of a line share the same released features, so a fix to one feature reaches every product that uses it.

New to SPLENT? The SPLENT overview shows its layers and how they fit together, the quickest way to the big picture.


From model to production

A product line becomes a product, then a running server 1 Model UVL on UVLHub features and their constraints, by DOI 2 Configure product:configure pick what the model leaves open 3 Derive product:derive resolve, compose, migrate and start 4 Release product:release tag, package and image on stable Shared by every product Checked against the model and the contracts A server follows stable
A product line is a UVL model. A product is one configuration of it, derived on your machine and released to a server.

These are the commands of the tutorials.

# 1. Choose a product line
splent spl:list

# 2. Create a product and configure it
splent product:create my_first_app
splent product:select my_first_app
splent product:configure

# 3. Derive it
splent product:derive --dev

# 4. Release it
splent product:release 1.0.0

product:configure checks the selection against the UVL model before it writes anything. product:derive checks it again with the feature contracts, then resolves the pinned features, merges their Compose files and settings, applies migrations in the order the model gives and starts the product. product:release publishes the tag, the package and the image, and a server with the autodeploy feature picks the release up. Build, deploy and release covers the way to production.


What is checked before anything runs

Check What it catches
pyproject sanity Duplicate features, inconsistent namespaces, an SPL model that cannot be found
UVL satisfiability Missing mandatory features, unsatisfied constraints, invalid combinations
Contract compatibility Route collisions, blueprint name conflicts, missing dependencies
Feature availability (build only) Unpinned features, versions neither on PyPI nor tagged on the forge

product:derive and product:build run these checks before Docker starts.


The pieces

Piece What it is
SPLENT Framework The runtime. Discovers and composes features inside a Flask application, with configuration layering, template hooks, per-feature migrations and refinement between features
SPLENT CLI The command line you and your CI drive the line from. Creates, configures, derives, tests, releases and deploys
Product lines UVL models published on UVLHub, each version with its DOI, so a clone of any product resolves the line it derives from
Marketplace Where features and product lines are published and found, with a configurator for every line

A product’s state lives in four places, pyproject.toml, the UVL model, splent.manifest.json and the env files. See Sources of truth.


Where to start

You want to Read
Install the environment Getting started
Derive, extend and release a product step by step Tutorials
Understand features, refinement and delivery Foundations
Look up a command Command index
Let Claude Code drive the CLI Claude Code
Find or publish a feature Marketplace

License

The framework, the CLI and the features of the catalog are free software under the GNU Lesser General Public License, version 3 or later (LGPL-3.0-or-later). A product built with them can carry any license, a closed one included, and what the CLI generates for it belongs to the product. Changes to SPLENT itself stay under the LGPL.


Project

SPLENT is developed by DiversoLab at the University of Seville. The code lives in splent_cli, splent_framework and splent_docs.


Back to top

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