Why it's not JSON:
* includes
* substitutions
Why it's not YAML:
* less confusing syntax (e.g. `cannot do that` doesn't need quotes, but `can't do that` does)
* built-in support for overrides via env variables
Why it's not JSON or YAML:
* Built in durations! No more head scratching to figure out if 5 is seconds or milliseconds. It's just `5s`.
---
JSON is a data transfer format. YAML is a markup language (or it claims to be...).
HOCON is a composable configuration language. You always need to change, override, and deduplicate configuration in sensible way, in dev, in production, machine-by-machine.
Despite a wart or two I think HOCON takes a sensible to this ubiquitous problem.