About Rubble and users:
You make some good points, some of which I had not thought about...
For users the experience is
supposed to be: Just extract Rubble to "<df>/rubble", launch an interface, select your addons, and go!
I suppose I should make it more clear that the documentation is strictly "by a modder for modders" and should be ignored by most users, but that probably won't help anything.
One thing I could do is use my raw parser to decompose a mod and convert it as much as possible into something that would play nice with the Rubble system, the problem is that such a thing would have to be an external tool, trying to build such capabilities into Rubble would be doomed to failure. The main issue is that Rubble STRONGLY discourages modifying existing files, for nearly every time you would modify an existing item, Rubble provides a template, so converting raws would require a lot of comparing vanilla and mod raws, one object at a time looking for changes and the deciding how to merge those changes, for some changes it would be very difficult to implement a generic system that would work in all cases. Anyway it would be far too much work for right now, maybe later...
Yep. In the medium to long term I'm keen to hook in Rubble as an alternative back-end.
Rubble-as-service? I could do that...
The problem is that as things stand Rubble requires on ADDON_HOOKS and SHARED_OBJECT (specifically SHARED_MATERIAL_TEMPLATE and SHARED_INORGANIC are the most common). Without those two templates (and their many supports) Rubble is crippled. It would be possible to hook these templates' output, but the problem is "how do you want to communicate to Rubble?"
The easiest way (for me) would be via a limited http server, but other types of servers (including several types of RPC) would be possible. Sadly it would not be possible for me to provide a DLL for low level access, as go (the language I used for Rubble) cannot create DLLs.
Command line would work as well, but you would have to parse output from stdout, which can be a real pain in the rear...
In short, to use Rubble as a secondary backend you would have to provide an interface that would act as a backend for most of the standard templates, which would be quite the job (it would also require me making a low enough level interface, but if the need is there I will do it).
Mostly you would get lists of tags to add/remove/modify to specific raw objects, reaction/workshop names to add to specific entities, etc (and don't forget that you cannot actually do anything until ALL the raws are parsed, because other later templates may undo earlier actions!).
=========================================================
Rubble 5.0 will be up shortly!
5.0? Why not 4.8?
Well I rewrote large chunks of the internals and turned Ruble into a library with several thin interfaces on top. The first interface is the good old CLI, but the second is a brand new web UI!
The web UI is a little ugly (I suck at HTML) but it works fine and is MUCH easier to use than the CLI, and has far more features compared to the old GUI.
Also added is the "addon.meta" file for handling the new addon meta-data. This data includes dependencies, descriptions, and a special flag for libraries. Most of the meta-data is not handled directly by Rubble, but what Rubble doesn't use is used by the web UI
For example there is a page in the web UI that lists all your installed addons beside a one line description, click on the addon name and it takes you to a page with details about the addon, including a full description, a list of it's dependencies, and a list of all it's files (which can be viewed by clicking on the file name).
addon.meta is the core of the new automatic dependency management system Rubble uses (to old way still works, and will not be removed).