Proposal: staged Grimmory plugin system #2464
Replies: 3 comments
|
The gist of your actual proposal here is "we should emit events on book import (which we already do) and have listeners for that event.
I really think that the other parts should be described more concretely as this phase 0 is basically "I want this feature" which is a duplicate elsewhere. |
Could you define a staged plugin system? How does it differentiate from a regular plugin system
Which do you think?
We are reworking many of the internals to support better performance. Aside from that, not really much.
I don't really understand this question. Could you elaborate what you mean? |
|
My submission here was "polished" by AI (English isn’t my native language), and I might not have fully reviewed the final version lol, so some AI slop may have slipped through :) I’ll get back to you ASAP - I just need to wrap up a few other things first. Thank you for joining the discussion @imnotjames! |
Uh oh!
There was an error while loading. Please reload this page.
What would you like Grimmory to do?
I would like to propose a staged plugin system for Grimmory.
The goal is to give Grimmory core features and future external plugins the same
small extension API. External plugin loading would follow only after the core
contracts and operational constraints are agreed.
Phase 0: PoC complete
I built and manually tested a narrow proof of concept:
dawidgora#2
It validates:
BookImportedevent.The demo
FormatConverterExtensioncontributes "Generate missing formats" andlogs import/action execution. It intentionally does not modify files or perform
real conversion.
Phase 1: internal extension API
If the direction is accepted, I propose stabilizing the internal API first:
Extensions would still be normal built-in Spring beans at this stage.
Phase 2: full plugin system
Only after Phase 1 is validated in core, design and implement support for
administrator-installed external plugins. This phase would need explicit
agreement on:
Dynamic frontend bundles, plugin marketplaces, and hot reload are not assumed
requirements for the first external-plugin release.
I am open to discussing the scope and implementation details, and I am willing
to help implement the agreed stages.
Potential capabilities such as format conversion, import automation, metadata
integrations, and device-specific workflows otherwise need one-off changes
across Grimmory's backend, API, and UI.
A shared extension API would provide reusable integration seams and let core
features and future plugins follow the same model. The staged approach reduces
risk. It proves the architecture internally before committing to classloaders,
plugin lifecycle, or third-party compatibility.
Manual PoC verification succeeded:
I will attach a screenshot of the successful action result.
I would appreciate feedback on:
plugins.
What problem does this solve for you?
I want Grimmory to support integrations and workflows that do not belong in the
core application by default, such as format conversion, import automation,
metadata integrations, and device-specific features.
Without extension points, each feature needs one-off backend, API, and UI
changes. A plugin system would give core features and future plugins a shared,
consistent integration model.
Anything else?
PoC PR:
dawidgora#2
Manual verification succeeded:
Want to help out?
Yes! I'd love to help implement this
Before submitting
All reactions