Updated: Comment #0
We have two main config storage services, config.storage (for the active store) and config.storage.staging (for the staging/import).
Inwe have added a UI to allow quick importing and exporting of a single config file. This has highlighted a major problem of our assumptions about the active config: that it has the same format as staging.
All of our default config is written in YAML, and that is not going to change. However, our active config storage is swappable, and doesn't need to be YAML. Therefore, when showing an "export" of active config, we actually want to use the staging config service, so that what we present is importable.
This furthermore leads to the idea that our staging/import config should not be a service at all, and should be a hardcoded class. If we want to change it, we'll also have to change every bit of default config.
Make the encode/decode methods of active config protected, so that they are never called directly.
Replace the staging config service with a hardcoded class (FileStorage).
User interface changes