Let's develop a platform for extension distribution [Repository open]

I have put the first implementation of the layering on GitHub, the current status is the following:

roon-extension-manager
This is the front-end towards the lower layers. The functionality behind the auto-update time hasn’t been implemented yet, I’m working on it right now. There is no state information of the managed extensions in this layer.

node-api-extension-installer
This layer wraps npm commands in a Node API. I could not find an existing API for this that handles packages outside the npm repository, Roon extensions currently have to be accessed via a git url. Installed packages and available updates are all queried via standard npm commands.

node-api-extension-runner
This is a child node implementation for starting and stopping extensions. It is rather limited in its functionality, it e.g. doesn’t store the state of extensions, preventing an auto restart of running extensions after a reboot.


@spockfish, It would be great if you can workout your idea to implement a ‘runner’ layer based on systemd, I can then also test this on my NUC that is running Arch Linux. I hope you can find time for this, you are very busy with the development of your image and are making great progress!

As a next step maybe we can combine the different pieces of the puzzle and improve the user experience by including the Roon Web Controller in the repository of the Extension Manager and then include the manager in the RoPieee image. That would allow a user to choose between the different user interface extensions and also turn all this into a real community effort!

@Mike_Plugge, @spockfish what do you think about this? Does it sound like a plan?

2 Likes