Distribution¶
Distribution describes how ETLantic plugins are packaged, published, discovered, installed, and maintained across the ecosystem.
A healthy plugin ecosystem depends on stable distribution practices. Plugins should be independently releasable while remaining compatible with the ETLantic Plugin SDK and supported standards.
Goals¶
Plugin distribution should:
- Support independent releases.
- Encourage semantic versioning.
- Make installation simple.
- Preserve compatibility metadata.
- Enable automated discovery.
- Support community and commercial plugins.
Philosophy¶
The ETLantic core should remain small.
Functionality grows through independently distributed plugins.
ETLantic Core
│
▼
Python Package Index
│
┌──────┼─────────────────────────┐
▼ ▼ ▼ ▼
Execution Dataframe Storage Resource
Plugins Plugins Plugins Providers
Packaging¶
Plugins should be distributed as standard Python packages.
Recommended naming convention:
- etlantic-airflow
- etlantic-polars
- etlantic-pandas
- etlantic-postgres
- etlantic-s3
- etlantic-keyring
- etlantic-secrets-aws
- etlantic-secrets-azure
- etlantic-secrets-gcp
- etlantic-secrets-vault
Third-party plugins should follow a consistent naming convention where practical.
Installation¶
Typical installation:
Multiple plugins may be installed simultaneously.
Profiles determine which plugins are used.
Discovery¶
Installed plugins are discoverable through domain-specific helpers (no global registry class):
from etlantic.dataframe import discover_dataframe_plugins
from etlantic.orchestration import discover_orchestrator_plugins
from etlantic.spark import discover_spark_plugins, discover_spark_providers
from etlantic.sql import discover_sql_plugins
dataframe_plugins = discover_dataframe_plugins()
sql_plugins = discover_sql_plugins()
spark_plugins = discover_spark_plugins()
spark_providers = discover_spark_providers()
orchestrators = discover_orchestrator_plugins()
CLI: etlantic plugin list. Discovery does not require manual registration in
normal deployments. Secret providers are attached to the runtime / profile.
Compatibility Metadata¶
Every plugin should publish:
- Plugin name
- Plugin version
- Supported ETLantic version(s)
- Supported SDK version
- Supported ODCS version(s)
- Supported DTCS version(s)
- Supported DPCS version(s)
- Capability declarations
Planning uses this metadata when selecting plugins.
Semantic Versioning¶
Plugins should follow Semantic Versioning.
- MAJOR — breaking SDK or behavior changes
- MINOR — backward-compatible features
- PATCH — bug fixes and non-semantic improvements
Release Workflow¶
Recommended workflow:
- Implement
- Test
- Run SDK conformance suite
- Publish package
- Publish release notes
- Update compatibility matrix
Dependency Management¶
Plugins should minimize dependencies and isolate backend-specific libraries.
Optional dependencies should be preferred where practical to avoid unnecessary install size for users who do not need every backend.
Security¶
Plugin authors should:
- Sign releases when possible.
- Keep dependencies updated.
- Avoid embedding credentials.
- Follow secure disclosure practices.
- Publish supported version ranges.
- Ensure secret-provider packages pass redaction, rotation, lease, and sentinel-leak conformance tests.
Best Practices¶
- Keep plugins independently releasable.
- Publish clear compatibility metadata.
- Use semantic versioning.
- Ship documentation with every release.
- Maintain changelogs.
Anti-Patterns¶
Avoid:
- Bundling all plugins into the core package.
- Publishing plugins without compatibility metadata.
- Introducing breaking changes in minor releases.
- Hiding runtime dependencies.
- Depending on internal ETLantic APIs.
Key Principle¶
ETLantic grows through a distributed ecosystem of independently versioned plugins. Stable packaging, discovery, and compatibility metadata allow users to compose the execution environment that best fits their pipelines.
Next Step¶
Continue with the Examples section to see plugins used in complete pipelines.