62
Why YAML sucks?
(programming.dev)
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
Follow the wormhole through a path of communities !webdev@programming.dev
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 tocountry: False
, because it'll castno
(regardless from casing) tofalse
, andyes
totrue
.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.
That's a thorny question: Do comments need to be in the base standard, or can that be offloaded to those building on it? It doesn't look like it would be hard to have
(comment "foo bar baz")
in an expression and have a re-parser throw that out.Is the complaint that no two groups of people will use the same comment standard if left to their own devices? It's not like the other data from different sources will always match up. What's one extra, and fairly easy to handle SNAFU?
That said, yes, I think I'd be more comfortable knowing there was an accepted comment format. The aesthetic seems to be Lisp-like, and I notice that the Lisp comment marker, the semicolon, is currently a reserved character, that is, it's illegal to use it unquoted. Maybe they're thinking of adding that at some point.
That is pretty much what the official "solution" is for comments in
package.json
- add"//": "foo bar baz"
keys to dictionaries and NPM will ignore them.In practice it's terrible. You need real comments.