A very common scenario to create a custom backend is to add support for a new OpenWRT package.
Contributors may then want to include this package in the main code, but we cannot add all of these to the master branch for several reasons: negatively affecting performance in the OpenWISP web UI (schemas are loaded with HTTP requests and rendered with javascript, the more complex a schema is the more time it will be needed to download it and render the UI for it), increasing complexity.
We should start thinking about a way to dynamically and declaratively extend a backend so that a new package can be supported, or something along these lines.
A very common scenario to create a custom backend is to add support for a new OpenWRT package.
Contributors may then want to include this package in the main code, but we cannot add all of these to the master branch for several reasons: negatively affecting performance in the OpenWISP web UI (schemas are loaded with HTTP requests and rendered with javascript, the more complex a schema is the more time it will be needed to download it and render the UI for it), increasing complexity.
We should start thinking about a way to dynamically and declaratively extend a backend so that a new package can be supported, or something along these lines.