companion icon indicating copy to clipboard operation
companion copied to clipboard

Modules as downloadable plugins

Open Julusian opened this issue 4 years ago • 2 comments

Something for v3

Describe the feature Currently the only way to distribute newer versions of a module to users is for the companion team to release a new version of everything. This has not been happening as often as I would like, as shown by the many users on old versions asking for already implemented device functionality.

It would be much nicer for modules to be distributed via a modules 'store'/registry. This would essentially mean that from within companion users could search for and install or upgrade device integrations. It would allow for much quicker development of modules to being deployed to users, and reduce some of the pressure and need to do frequent releases of the core code.

  • I expect that there will still want to be the same review process that modules go through before they are available on the store.
  • ~~This will require a more formal and documented api for the modules, perhaps with some method of versioning (base classes & typescript definitions should live as an npm package).~~
  • ~~This will require some updates to every module~~
  • ~~Some thought will be needed on how to make native dependencies work properly.~~
  • A default set of common modules will want to be included in the default install
  • A way of downloading in a browser and installing from a file would be required (for offline machines, or private modules)
  • ~~This would negate the need for #837, as that would be contained within each module repo and done as part of the publish script~~
  • ~~Being able to hot reload modules for updates would really make this great to work with~~
  • ~~Some thought is needed on how to develop modules and load them into the system (I have some ideas)~~

Ideally I would like for the streamdeck to be done in the same way (via a different module type/api) to allow for other hardware devices to be used, and to support newly released hardware much quicker, but that could be a separate task to this.

Is this platform dependent (windows, mac, ..)? No

Usecases Add a couple of usecases for why this should be implemented and when/why to use it.

Julusian avatar Feb 24 '20 14:02 Julusian

I fully support this idea. Especially the ability for users to add/remove modules!

MeestorX avatar Mar 24 '20 18:03 MeestorX

Groundwork for this has been done in https://github.com/bitfocus/companion/tree/develop In Companion 3.0 it will be possible to both add in modules to an existing companion installation and develop modules against the release builds of companion. However, it does require converting modules to a new module-api

More documentation will follow when we get closer to it being released. ~~There will not be a push to update modules to the new api until we are very close to release, and it wont be required to be used until a later release of companion~~

In a future release we can look at how to distribute modules, to address the other points in this list

Julusian avatar May 09 '22 15:05 Julusian