• brettvitaz@programming.dev
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    9 months ago

    Every time I have reached for TOML I have ended up using JSON. The first reason is that Python standard library can read but not write TOML, which is generally useless for me. The second reason is TOML does not add any benefit over JSON. It’s not that much easier to read and IMO JSON is easier to write by hand because the syntax rules are completely obvious.

    • Eager Eagle@lemmy.world
      link
      fedilink
      English
      arrow-up
      6
      ·
      9 months ago

      TOML is mainly for humans to write, certainly not a good choice if you’re programmatically writing files - comments and formatting would be lost.

      • Flipper@feddit.de
        link
        fedilink
        arrow-up
        1
        ·
        9 months ago

        It all depends on the library you use. Rust has you covered with toml_edit. It is what is used for all the cargo commands editing the Cargo.toml file.

        • suy@programming.dev
          link
          fedilink
          arrow-up
          6
          ·
          9 months ago

          The very first moment that I had to use JSON as a configuration format, and I was desperate to find a way to make a long string into a JSON field. JSON is great for many things, but it’s not good at all for a configuration format where you need users to make it pretty, and need features like comments or multi-line strings (because you don’t want to fix a merge conflict in a 400 character-wide line).

          • brettvitaz@programming.dev
            link
            fedilink
            English
            arrow-up
            0
            ·
            9 months ago

            For settings files I always have an example file with sensible values filled in and along with descriptive keys that serves as reasonable documentation. If something is truly unknowable, I’ve probably done something wrong.

              • brettvitaz@programming.dev
                link
                fedilink
                English
                arrow-up
                1
                ·
                9 months ago

                In my opinion, the settings file isn’t where this information should be presented. I would put these notes in the release log and readme and example settings file. I have also written this information to logging during startup so a user knows what to do, or I write a migration that does the change automatically if that’s possible.

                This is only my opinion and you can use the comment method described like //“: “Deprecated” if desired.