I like this post. It’s well written and useful, but I don’t wholeheartedly agree with it. In many cases I agree that configuration files should be simple, particularly if you have a broad target audience. Sometimes the complexity using a full programming language is warranted. Sometimes you have a target audience who can spend a lot of time and effort on configuration. Sometimes you want to make a tool like Emacs or Conky or Awesome. Sometimes you want to make systems which are malleable (see https://malleable.systems/).
Interesting point. Yes, there are different end users. For advanced cases, I guess you could use extension hooks or plugins?
Plugins are a way to change the behaviour of the program through code that the author of the program did not write.
Then in a config file you turn on/off these plugins.
This way, config files are still universally applicable… Only advanced users go deeper if they need it, the rest of the userbase is not overwhelmed by a programming language or DSL..
I can get behind ideas like that :)