Support a plugin system
- Dominant language
- Rust
- Stars
- 2.3k
- Forks
- 230
- Avg merge
- 3d 12h
- Merged PRs (30d)
- 38
Description
Add the ability for other software to augment what bootc can do.
A primary use case is package layering, which is necessarily distro-dependent and so shouldn't live directly in bootc. This would allow bootc to remain the entrypoint and single pane of glass for managing the system, rather than (if e.g. $pkgmanager were the one driving bootc from higher up in the stack) awkwardly being an implementation detail. Awkwardly, because the story would be "you use bootc to manage your node if you don't layer packages, otherwise you must use `$pkgmanager`".
But that said, this would be generally useful for other kinds of layering/mutation (or even reading: e.g. scanning, or e.g. an "upgrade compatibility" checker could be implemented this way).
The main integration points I think are:
- upgrades: plugins need to be able to hook into the upgrade process; e.g. bootc downloads the payload, then hands it off to configured plugins, which hands back a final image to actually deploy
- change detection: plugins need to be able to report whether another mutation is required even if the base didn't change
- status: plugins need to be able to feed into the `bootc status` output, including ideally in its machine-readable output formats
Contributor guide
Assessment
This issue has not been assessed yet.