Configuration schema on steroids.
Config::Model is:
To generate a configuration editor and validator for a project, Config::Model needs:
With the elements above, Config::Model generates interactive configuration editors (with integrated help and data validation) and support several kinds of user interface, e.g. graphical, interactive command line. See the list of available user interfaces
See installation instructions. Perl developers can also build Config::Model from git
Using this project, a typical configuration editor will be made of 3 parts :
The important part is the configuration model used by the validation engine. This model can be created or modified with a graphical editor (cme meta edit provided by Config::Model::Itself).
You're probably thinking of tools like webmin. Yes, these tools exist and work fine, but they have their set of drawbacks.
Usually, the validation of configuration data is done with a script which performs semantic validation and often ends up being quite complex (e.g. 2500 lines for Debian's xserver-xorg.config script which handles xorg.conf file).
In most cases, the configuration model is expressed in instructions (whatever programming language is used) and interspersed with a lot of processing to handle the actual configuration data.
Config::Model projects provide a way to get a validation engine where the configuration model is completely separated from the actual processing instructions.
A configuration model can be created and modified with the graphical interface provided by "cme meta edit" distributed with Config::Model::Itself. The model is saved in a declarative form (currently, a Perl data structure). Such a model is easier to maintain than a lot of code.
The model specifies:
So, in the end:
Config::Model interface can be:
All these interfaces are generated from the configuration model.
And configuration model can be created or modified with a graphical user interface ("cme meta edit")
Since the syntax of configuration files vary wildly form one program to another, most people who want to use this framework will have to provide a dedicated parser/writer.
Nevertheless, this project provides a writer/parser for some common format: ini style file and perl file.
See