What is an "extension"?

Is this documented anywhere? What’s an “extension manager”?

There is little documentation and you are best just looking at the code of others in my opinion.

Thanks, J C.

So, anyone care to venture a one-sentence explanation of what it is? And what’s this “extension manager” thingy?

Oh, and what is getting extended, in Roon architectural terms: the Core, Control, or Output?

Someone has made the manager which likes to a repository of extensions as far as I know, and it has options to update/install/remove etc from its settings menu.

An extension is a piece of software, typically developed by a 3rd party, that adds functionality to the Roon system. This functionality can for example be a volume control for a device that isn’t Roon Ready. The Roon Core informs the extension that the volume has to be increased and the extension converts this to e.g. a serial command that tells the device to increase the volume.

To allow an extension to talk to the core, Roon provides an Application Programming Interface (API). The API sources can be found here (the node-roon-api* repositories) and the available documentation can be found here.

The Roon Extension Manager is a project I started to make extensions easier to use. It moves extension control to the Roon UI (via Settings→Extensions) instead of controlling them from the command line.

1 Like

Jan, thanks for the info. Particularly the link to the documentation!

If I could restate my understanding: An extension is some code running in some process not part of the Roon architecture (neither Core nor Output nor Control) that manipulates the Roon Core via HTTP RPC to the Roon API. Presumably it could be implemented in any programming language as long as it makes the appropriate calls to the API. Javascript is widely used for existing extensions because Roon has published Javascript bindings to the API. Your extension manager is an extension which manages other extensions, allowing them to stopped/started/etc., but is not a package manager like npm to store and retrieve extension programs from a central library.

That’s an accurate description.

The Extension Manager is mainly a wrapper around npm, npm supports installation via GitHub urls.