theamk a day ago

That's a lot of words to describe a very simple syntax: name=value pairs, with line continuation using whitespace.

Basically RFC822 email headers, or Debian Control File Format [0] but with "=" instead of ":", and without dedicated comment character.

The biggest problem with this format is that a lot of things are left for the app, so each app will have its own way to implement lists, bools, line wrap support.. Even something like "value override" is left to program implementation. Don't expect YAML/JSON/XML-style automated validators/linters, each program will need its own bespoke parser/generator.

[0] https://www.debian.org/doc/debian-policy/ch-controlfields.ht...

  • atoav a day ago

    Not to discredit the author, there are some smart thoughts in there... but I can't help but feel like: yeah of course this is very elegant — but the complexity is not gone, it is elsewhere. And they are not showing that elsewhere.

    Namely the parsing code.

mightyham a day ago

I really like the conciseness of this syntax. The language seems very well thought through.

That being said, I've been working with NixOS recently and it's made me reconsider what is useful for a configuration language. In many reasonably large software projects, where configs become very complex, config reuse (in other words templating or meta-configuration) becomes an increasingly helpful feature. Nix configs are great because it's not just a config, but a full blown purely functional language for manipulating the config. It's intuitive and powerful once you get the hang of it, and I sometimes find myself wishing I could use it when I have to work with yaml, json, etc.

nickm12 a day ago

Everyone is entitled to scratch their own itch, but this seems like the most useless configuration language I've ever seen.

Take the "fixed point" example, where you have a boolean setting which one file says should should be "yes" and the other says it should be "no" and the language semantics composes that into a list with both values. For what boolean setting does this make sense?

The article says "Overrides are not a problem because you keep both values. And you can decide what to do with them: keep only the first, keep only the last or use some smart logic to combine both of them. You’re the boss."

If you need custom logic in your application determine the setting to use, how is this language helping you?

trelliscoded 18 hours ago

The equal sign is a required character for anything base64 encoded, which includes some things you’d expect to be in a config file, like ssh public keys and x509 certs.

worthless-trash a day ago

Every configuration language that is not code ends up being wrong in multiple ways. We will never learn.

hoseja a day ago

You'd think people would be more disinclined to xkcd://927 but for some reason this keeps happening.