Aaand… it’s Turing-complete!
If your DSL has loops tyen it should be a Python library
Looking at you, Gradle
Gradle uses Groovy or Kotlin for its DSL, though…
Your DSL isn’t embedded on a Turing complete language. That was your mistake.
YAML has entered the chat.
Well, for all Turing complete languages around, you picked that one?
Using Blank Space or Malboge would be the wrong answer too.
One word: Terraform
You either put it in the DSL or people start writing generators for your DSL.
It’s the configuration complexity clock.
You hardcode values in an established, full-featured programming language.
That gets annoying, so you push some into config files.
That’s not powerful enough, so you let the config files include conditionals.
Soon your config files are more like scripts, but it’s so easy to keep adding features…
And suddenly you’re back to hardcoding, but in a newer, jankier programming language.
So this is exactly talking about Nix, Guix, chezmoi?
Don’t know about chezmoi, but Nix and Guix use a proper programming language that is also suited as a configuration file format, no?
So they’re at noon and might just stay there
guix yeah, since they picked a pre-existing one. nix the language is arguably an overgrown dsl which explaits why it’s… real weird.
That’s excellent. I think the initial momentum towards a DSL is basically equivalent to https://en.wikipedia.org/wiki/Inner-platform_effect
i prefer referring to greenspun’s tenth





