Note, this concept is about the implementation of creating configuration via a file, whereas the format of the files is concepted here:Config By X - File format discussions
Purpose
Goals
Developers like working with files and have a lot of familiarity with tools and workflows there. It would be a benefit if configuration could be worked on the same as resources, templates and code.
In the ConfigByX document we explore the benefits of a "Volatile Configuration" over bootstraps that persist configuration to the repo. ConfigByFile is how non-java developers can take advantage of this. It also has the benefit of a clean hierarchical format.
Analysis
Why might some developers prefer to work on resources and templates as files (in an IDE or text editor) rather then in adminCentral?
AdminCentral | In files | |
---|---|---|
Easy to find Everything in context Anyone can access and change running instance | Multiple files at a time |
Requirements
- Have a clean, human readable syntax (Not JCR “system view”) Maybe xml like "JCR document view", json, ...
- The format has to come with a schema so we can e.g. offer autosuggest in editors
- Configuration changes are considered without restart of the system
Implementation
- Note: We'll have to implement BeanBuilders for the chosen format
- Node2Bean might be reused to some extend
- ...
7 Comments
Magnolia International
Config by code - not good for non-java dev ? Script it. DSL it.
Christopher Zimmermann
Can you please elaborate? What does "DSL it." mean?
OK - Domain Specific Language - so create an api in a scripting language to assist developers know what is available?
Magnolia International
Make a DSL out of it
Magnolia International
Kinda, yeah. CBC implies a builder-ish, fluent-ish API. It should be doable to turn that into either a DSL, or at the very least, use Groovy to make it less java-ish (while keeping the tooling goodness)
Magnolia International
IMO:
Cheng Hu
Also may be desirable and/or ideal:
Cheng Hu
Another thing that may be important to consider for Config by File is the tooling that will define a user's editing experience with the file format. For example: