Welcome to SPLENT docs!
Welcome to the official documentation for SPLENT (Software Product Line Engineering Toolkit), an integrated ecosystem designed to support the complete lifecycle of feature-based software products. SPLENT enables organizations and developers to structure, compose, distribute, and evolve Software Product Lines (SPLs) in Python through a modular and reproducible architecture.
Get started now View it on GitHub
The SPLENT core
SPLENT is built around three core ideas: modularity, feature lifecycle management, and traceable automation. Each feature behaves as an independent module with its own code, templates, configuration, migrations, documentation, and assets. These features can be versioned, tested, distributed, reused, updated, or deprecated, following a clear lifecycle aligned with modern software engineering practices.
Decentralized features
Features in SPLENT are distributed through both GitHub and PyPI, allowing teams to publish stable releases, manage experimental branches, fork and adapt existing features, and integrate them into products with full transparency. This makes it possible to maintain large families of related applications with minimal duplication, while ensuring centralized evolution and decentralized extension.
SPLENT components
SPLENT includes multiple components, each addressing a specific part of the SPL workflow:
-
SPLENT Framework – the core framework that defines how features are structured, discovered, composed, and orchestrated at runtime. It provides the conventions for feature modules, configuration layering, template overrides, dependency management, and the execution model for feature-specific code such as migrations or background tasks.
-
SPLENT CLI – the command-line interface that automates product creation, feature composition, dependency resolution, environment setup, container orchestration, and continuous integration tasks. The CLI manages build pipelines, generates product scaffolding, validates configurations, and ensures derivations are reproducible.
-
SPLENT Cache - The ecosystem also provides a unified caching layer that stores all versions of all features organized by namespaces. This streamlines feature derivation, cloning, and editing, ensuring consistent and reproducible product builds across all environments.
Vision for the future
By combining versioned feature modules, formal composition rules, and automated product generation, SPLENT offers a unified approach for developing, deploying, and evolving software ecosystems. The toolkit is being developed by DiversoLab (University of Seville) to promote modular architectures, reduce long-term maintenance costs, and support reproducible digital services across different domains.
Changelog
Detailed updates for each release are documented in the release notes.