No support for comments? Hard pass
I wish we would all start switching over to JSON for configuration files. It’s so much easier to parse, and you can’t screw it up with too many spaces or not enough.
iggy@lemmy.world 3 weeks ago
Voroxpete@sh.itjust.works 3 weeks ago
Yeah, this is my biggest annoyance with JSON. As a data structure it’s very elegant, but it only really makes sense to people who know how to code, and without the ability to add comments you have to rely heavily on external documentation to make it readable to most users.
cravl@slrpnk.net 3 weeks ago
And like yeah, both the wonderful (and foss!)
.json5
and Microsoft’s semi-proprietary(?).jsonc
exist, but most projects just use their language’s default JSON parser that doesn’t recognize them. What I would personally love to see is.json5
support baked into the default JSON parsing libraries of Python, Go, etc. (Enabled by a flag, likely.) It’s a superset of regular JSON and fully ES2019 compatible, so there shouldn’t be any issues.
lightnegative@lemmy.world 3 weeks ago
I used to think that until I figured out yaml and now yaml isn’t so bad.
It helps that text editors know what yaml is now so insert spaces when you hit tab etc
tuhriel@infosec.pub 3 weeks ago
My biggest gripe with yaml (especially in docker-compose files) is that l, for me at least, it is absolutely not clear when I need to add dahes (-) in front of multiple entries and when it’s just linebreaks.
And there are no easy accessible docker-compose validators…moonpiedumplings@programming.dev 3 weeks ago
Try the yaml language server by red hat, it comes with a docker compose validator.
But in general, off the top of my head, dashes = list. No dashes is a dictionary.
So this is a list:
thing: - 1 - 2
And this is a dictionary:
dict: key1: value1 key2: value2
And then when they can be combined into a list of dictionaries.
listofdicts: - key1dict1: value1dict1 - key1dict2: value1dict2 key2dict2: value2dict2
And then abother thing to note is that yaml wilL convert things into a string. So if you have ports
8080:80
, this will be converted into a string, which is a clue that this is a string in a list, rather than a dictionary.tuhriel@infosec.pub 3 weeks ago
That actually makes sense…thank you!
Voroxpete@sh.itjust.works 3 weeks ago
Instead you can screw it up by having too many commas or not enough. Hardly that much of an improvement.
FooBarrington@lemmy.world 3 weeks ago
It’s IMO also so much clearer regarding data types. You can’t accidentally write a boolean when you want a string.
FrederikNJS@lemmy.zip 3 weeks ago
Why not just write your yaml files in JSON syntax?
JSON is a valid subset of YAML
timbuck2themoon@sh.itjust.works 3 weeks ago
No thanks. Yaml isn’t perfect but by God json is best used to return and parse data, not input it.
tiramichu@sh.itjust.works 3 weeks ago
My biggest peeve with JSON when I’m forced to use it as a configuration file format is that it doesn’t have any syntactical support for comments.
So I can’t even add any notes to the file.
lightnegative@lemmy.world 3 weeks ago
Yep this for me too. Thankfully VSCode allows comments in its settings.json / launch.json files but most programs use strict JSON which doesn’t allow comments
vinnymac@lemmy.world 3 weeks ago
Yea, this is a deal breaker imo. My code tends to be 10 to 1 comments to lines of code ratio. Configuration even more so.
jsonc exists for this use case, but few tools actually use it, yaml is far more popular