"Why does YAML suck?" is a question. "Why YAML sucks" is an explanation.
Programming
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities !webdev@programming.dev
It's inconsistent and annoying. Expressive, yes. Gets it's job done, yes. Absolute nightmare of a spec, YES.
The fact that JSON is a subset of YAML should tell you everything about how bloated the spec is. And of course there's the "no" funny things.
Personally, my favourite way to write configs was using lua (because it was already part of the project so why not), but JSON does fine.
I don't like it either, but I'm not entirely sure why. Maybe the biggest flaw to me is it uses Python style indentation for structuring as part of data logic. It doesn't feel like a configuration language to me and it does not feel simple too. It's also unlike most programming language structures (maybe besides Python), so it looks weird to read and write. Other than that, I don't know exactly why I don't like this format much. Admittedly, I did not do much in YAML, so because lack of experience take my opinion with a thick grain of salt.
We have JSON and TOML. I quiet like TOML. We have "better" alternatives, that are probably easier to parse. And therefore there is not much need for YAML. Maybe if YAML was the default config format for Python it would get off the ground and be accepted more often.
White space/indentation as a construct of the syntax.
It’s why I have a hard time with python.
People have their likes and dislikes. Nothing wrong with that.
YAML is fine if you use a subset (don't use the advanced features - not like you know those anyway) and use explicit strings (always add "
to strings), otherwise things may be cast when you did not intend values to be cast.
Example:
country: NO
(Norway) will be cast to country: False
, because it'll cast no
(regardless from casing) to false
, and yes
to true
.
country: "NO"
should not be cast.
People are working on making S-Expressions a standard: https://datatracker.ietf.org/doc/draft-rivest-sexp/
Note: This is just a draft, but improvements have been happening since 2023.
I probably won't like the parentheses, but I think I'll take it over yaml/json/whateverelse.
That appears to not support comments. How they made that mistake after JSON is a mystery.
It's a rube goldberg footgun
I think much of the issue with YAML is that it's often paired with bad editors. You need a way to manage the whitespace, collapse sections, etc. Notepad doesn't cut it.
I wish s-expression was a popular alternative. It's readable without the yaml issues.