VyOS makes it easy to build a custom image with any package in it, but it's an acceptable solution for people dedicated enough to create their own builds for every update.
For everyone else, installing third-party applications on VyOS is impractical because installed packages won't survive image updates. Even if people are willing to reinstall packages, the data will remain in the old image, and they'll have to move it over as well.
In some cases, it's also impractical to virtualize VyOS or install a second host for those applications. Think a wireless ISP's last mile installation: it usually has a rather small router and nothing else.
At the same time, many useful applications are not large or resource-intensive. Captive portals, monitoring clients etc. are all small and useful for some people, just not for a large enough number of people to warrant their inclusion in the mainline image.
For those cases, containerized installation can be a good compromise.
To implement that, we'll need at least:
- A separate, persistent directory for third-parth applications. Unlike /config, it should be shared between images rather than copied over.
- A kernel built with LXC support.
- Container management tool (docker, I suppose, since it's most popular).
The container images and their data will be stored in the persistent directory, so that when a user installs a new image, containers start as if nothing happened.
We also need a family of op mode commands for installing those applications, and configuration subtree for autostart.
Integration with the VyOS config is a much harder question, but simply allowing persistent-third party apps may open up a whole range of use cases.