metomi / rose

:rose: Rose is a toolkit for writing, editing and running application configurations.
https://metomi.github.io/rose/
GNU General Public License v3.0
55 stars 53 forks source link

metadata extensions #2777

Open oliver-sanders opened 6 months ago

oliver-sanders commented 6 months ago

Rose configuration files can generate "artefacts" i.e. envvars, namelists and files.

Some projects (obvs talking about LFric) might want to generate more specific artefacts than Rose provides support for, e.g. domain-specific config files, or augment Rose metadata with more information to assist loaders. Currently the approach is to load in the Rose configuration (using metomi.rose.config or an equivalent implementation), then manipulate it within their own code. Ideally we would make it easier for such projects to inject their logic into the Rose application rather than having to hack it around the fringes.

Such extensions may require:

Main sticking points to the status-quo:

Rose applications are fundamentally extendable so this should be perfectly possible, however, we would require a method for external plugins to access these capabilities i.e. some sort of plugin framework.

Note, the Rose GPL license would have implications on any imported extensions which may or may not be a roadblock.

Suggest a longer talk with the LFric folks before breaking ground.