I'm starting a new multi-language project completely without cruft. I have to choose a format for config files. These will be:
- Written by humans (developers, not end users)
- Read by machines
- Maintained by humans
- Worked with by text editors (not a tool)
I have many different uses, like:
- List of modules to run
- Module execution order
- Parameters for algorithms
- General configuration (job name, project version, etc)
Some candidates I've thought of:
- XML
- Hard to get right in a text editor
- INI
- Can only do section-key-value
- Makefile
- yikes!
- JSON
- Have to escape
"
but syntax is widely known
- Have to escape
- YAML
- People have to learn the syntax and error messages aren't really good but its nice to have references
What would you use and why? Is there a panacea or are some better suited than others?