Skip to content

Packaging

For the distribution of the orchestrator-core, from version 5.0.0 onwards we make use of a namespace package. Namespace packages are a way to allow a single package name to be split across multiple, independent distributions. More information on this can be found in the PEP 420.

Why

With the addition of new features to the Orchestrator core, we have reached a point where some new functionality may be useful to only a subset of the users of Workflow Orchestrator. This increases the footprint and complexity of the installed library, without the benefits of having a more comprehensive featureset.

For this reason, we want to support a modular approach to the namespace of modules that are distributed as part of orchestrator.*. This way, we can do independent versioning, dependency management, implementation work, and we avoid one large monolithic codebase that becomes hard to maintain.

How this enables a pluggable Orchestrator

With the namespacing approach to packaging the Workflow Orchestrator, only the necessary features are provided in the module installed by orchestrator-core. This package will then only claim the namespace under the module orchestrator.core.*.

For any optional modules that are developed outside of this core library, they can claim any other submodule like orchestrator.X.*.