I dunno why, but I have a thing against TOML. I could be reading a blog post and marvelling at the intellect of the author, but if it cuts to a code snippet of TOML I smack my teeth and question how I ended up on such an amateur site.
My opinion is not rational neither is it grounded in any technical reasoning or logic. I’d even consider myself syntactically promiscuous when it comes to pretty much any other markup language. For some reason YAML and TOML make me feel like I need to pick sides and I’m definitely a YAMLite.
I’m curious to know whether anyone else is this abnormally partisan towards YAML and TOML?
Well, I can’t stand YAML, because I had to spend half a year extending a far too complex Ansible codebase. It felt like they made a Turing-complete language out of what’s supposed to be declarative. And it feels like a good chunk of that was enabled by YAML offering an enormous amount of features itself.
So, yeah, I mostly just prefer TOML, because it’s less easily turned into a Turing-complete language.
Daddy issues?
From my point of view, most things related to software config is hierachical, meaning that a tree like structure is the most intuitive in understanding them. YAML is tree based, while TOML is section based. I find YAML much easier to keep track of. And I have great experience with Python, so the indentation is pretty straight forward for me.
But I’m not picking sides and defying the other. It’s purely personal mind set related. Actually I do find some workflow very suited for TOML, like build systems, where each task is in its own section, shouting clear cut domain and dependency boundaries.
TOML is tree-based too. It’s just more verbose than YAML for explicivity.
Fuck indent based notation in general.
Fuck it all
Python has entered the chat.
Ugh. I learnt Java and C# as my primary language back in the day. Imagine my disgust when I took a look at python to teach my kids. Just so wrong
It grows on you over time, but it takes a long time.
I’m always confused by this. Do you not indent blocks in your Java/C# code?
Blocks are started and ended with curly braces. It’s really obvious where a for loop or if statement starts and ends. You don’t have to be careful about how indented a particular line is. Horrible.
What do you mean careful? I’m not a python dev, but everything is indented just the same. I’m missing why anyone would not choose good indentation that matches the python requirements.
I suspect you’re either reacting to the “Tom” (which is what the T in TOML stands for), making it sound like some “one guy’s” project that never really took off…
…or the fact that it reminds you of the Windows INI file format. (TBH,
git
’s config file also uses something that reminds me of Windows INI, and it took me a while to get over it)Why not hate both? 🙈😬
And love json?
I know it’s kinda cheap, but for me nothing is the answer (that includes hcl). I’ll use what I find, but I can’t say that I love anything.
If something uses toml, I will use toml. I’ve also used json-schema in the past.
Depending on what I do I find yaml and kustomize okay, etc… Using something like client-go has its advantages as well.
If I am building something from scratch then I would reach for a simple ini. I feel like everything else overcomplicates things and that’s usually a symptom for something else.
Json with comments is literally perfect. Formattable, machine parsable, minimisable, easy and fairly concise. Honestly I can’t think of anything better. (Comments in json are essential IMO, without it it’s actually not that great, and I’d go with yaml instead)
Why not just let ChatGPT handle it don’t give a damn :)
ChatGPT is a great clippy replacement for spellchecking and grammar.
I just installed JupyterLab and ventured into the world of data visualization in Python, letting ChatGPT do the dirty work.
I love that it not only corrects the grammar and spelling it can fix your indentation errors in toml and yaml (or python) as well and give you an individual lesson on what you did wrong and why (if you want that.)