Skip to content

Roadmap

Asterios Raptis edited this page Mar 27, 2026 · 1 revision

Roadmap

Features that have been discussed but not yet implemented. Contributions welcome.

v0.6.0 - Semantic Versioning

#20 - Semantic Versioning with Labels and Version Ranges

Plugin dependencies currently use plain names (depends_on = ["export"]). This should support version constraints:

depends_on = [("export", ">=1.0.0")]

Version strings with labels like 1.0.0-beta, 2.0.0-rc.1 should be correctly compared. This affects both depends_on and api_version compatibility checks.

Scope: New version comparison module, changed depends_on structure, updated dependency resolution.

#26 - Transitive Dependencies and Cross-Plugin Extension Access

When Plugin C depends on Plugin B, and B depends on A, C should be able to access A's extensions. The topological sort already handles load order, but there is no API to query extensions from a specific dependency.

Scope: Design how pm.get_extensions() interacts with dependency chains. Possibly plugin.get_dependency("export") accessor.

Future - Extension Metadata

#18 - Extension Metadata on Hook Implementations

Standardized metadata on hook implementations (priority, description, version). Pluggy does not natively support custom attributes on @hookimpl, so this would need a wrapper or registry:

@hookimpl(priority=10, description="EPUB export")
def export_execute(self, book, fmt): ...

Scope: Custom decorator wrapping pluggy's @hookimpl, metadata registry on PluginManager.

Future - Security

#19 - Plugin Source/Safety Analysis

Static analysis of plugin code before loading. Check for dangerous imports (os.system, subprocess, eval). Essential for a plugin marketplace where untrusted plugins are installed.

Scope: AST analysis module, configurable allow/deny lists, integration into discovery pipeline.

Completed

# Feature Version
1 Configurable route prefix v0.3.0
2 BasePlugin.get_frontend_manifest() v0.3.0
3 mount_routes prefix passthrough v0.3.0
4 deactivate unregisters from pluggy v0.3.0
5 list_available_plugins() v0.3.0
6 pre_activate callback v0.3.0
7 reload_config() v0.3.0
8 register_plugin(instance) v0.3.0
9 get_load_errors() v0.3.0
10 api_version compatibility check v0.3.0
11 Config schema validation v0.3.0
12 Plugin health checks v0.3.0
13 Extension points pattern v0.4.0
14 Hot-reload v0.4.0
15 Path traversal prevention v0.4.0
16 get_extensions() v0.4.0
21 Example app Bibliogon
22 Lifecycle documentation v0.5.0
23 Robust deactivate with docs v0.5.0
24 Plugin introspection API v0.5.0
25 Graceful degradation v0.5.0

Not Planned

# Feature Reason
17 Async lifecycle No current need, adds complexity. Reconsider when an app requires it.

Clone this wiki locally