bluerobotics / bluerobotics/BlueOS
extension-manager: support plugins / add-ons / mods
- Dominant language
- Vue
- Stars
- 453
- Forks
- 151
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 174
Description
Summary of prior internal discussion:
- A plugin/add-on would be just a file or folder that gets put in a particular place
- i.e. include a file with an extension without having to create a whole docker container
- this is valuable for making it easier to get started quickly with things, making small contributions / additions, as well as reducing unnecessary resource usage
- useful for things like
- Cockpit widgets / views / joystick configurations
- documentation (e.g. for #1646)
- themes (e.g. for #1938)
- 3d models (e.g. for #1440)
- shared data (e.g. for #1820 and #1937)
- ArduPilot lua scripts (relevant to #2372)
- Registered to a parent docker image, which can be either `core` or an installed extension
- For extensions, stored in the persistent directory available for the extension (per #1640)
- We could locally keep track of installed sub-extensions using a json file or sqlite database, recording their versions, locations, and compatibility requirements
- Alternatively they could provide their own metadata files
- Can be provided by the original developer or by the community
- Installation would need to provide a differentiation, for "official" vs "community" add-ons
- How does one get one?
- Available on Bazaar via the extensions manager, like a regular extension
- Can be bundled together with an extension
- Some file system examples:
- `~/core/`
- `~/extensions/cockpit/` (empty)
- `~/extensions/cockpit/add-ons/blue-theme/style.css` (Cockpit can use the files in here to override its theme)
- `~/extensions/cockpit/docs/index.md` (documentation)
Explained again:
1. BlueOS Cloud has a registry of docker images (`core` + extensions) with versions
1. For each docker image, have associated add-ons for each version
1. BlueOS Local shows available add-ons for the extensions and allows user to install them, overlaying those on the file system
Extension with add-on example:
1. Install PingViewer extension, with sonar driver inside (Full BlueOS extension, with API and UI)
1. That extension adds files to `~/extensions/cockpit/add-ons/PingViewer/widget.vue`
1. Cockpit can now have a PingViewer widget that accesses data from `/xyz/` API
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.