
The 5 Stages of YAML - tosh
https://brokenco.de/2018/08/15/five-stages-of-yaml.html
======
ben509
I got somewhere between stage 2 and 3 and had to try reading the YAML spec and
figuring out the YAML libraries.

It's a mess... it has enough "features" it's a security hole, and you wind up
porting a parser / serializer to every platform you want to use it on.

------
jolmg
> 5\. The declarative YAML format now supports conditional, iteration, and
> inheritance syntax; it is now turing complete.

* _glance at Ansible_

~~~
trelliscoded
Overheard: “this thing has more translation steps than C??”

------
ris
There is _nothing_ simple about yaml. Only things that _seem_ simple from a
first glance.

------
aijoe
Isn't this just a matter of, "Recognize when you're using config for something
dynamic and refactor because config is no longer the best tool for that job"?
And you can continue using yaml (or whatever config format you're using)
wherever config remains the right tool for the job.

------
dpc_pw
This isn't a critique of YAML itself (which , only of people using YAML for
things, where they should have started with Lua/Python/Scheme.

Someone already mentioned Ansible. I find it particularly terrible. And bunch
of other half-assed DSLs, terrible templating languages and such.

------
sytelus
5th point could have read: There was no way to put breakpoints in this
declarative stuff and debug things so now we just use JavaScript.

------
paulddraper
For something in between 4 and 5 for JSON, see
[https://jsonnet.org/](https://jsonnet.org/)

~~~
beaconstudios
at that point you might as well just require() a js file instead of skirting
around the issue of code vs config.

~~~
paulddraper
It is Turning complete, but also pure (side-effect free).

~~~
beaconstudios
You don't need a whole new language to have that though, just don't put side
effects in your config.js

------
blt
...and yet people give me a hard time for using python dict/array literals for
config.

~~~
jasonpeacock
Checkout TOML for a standard config that does just that.

------
PopeDotNinja
I'm currently stuck in stage 4.

 _shakes first at Kubernetes wrapper wrapper wrapper wrapper_

