• @[email protected]
    link
    fedilink
    491 year ago

    Friendly reminder if you prefer dealing with JSON - YAML is a superset of JSON, so any valid JSON is also valid YAML.

    • magic_lobster_party
      link
      fedilink
      501 year ago

      That’s more of a weakness of yaml. There’s so many ways to specify the exact same thing. Not exactly what you need for configuration files maintained by multiple people. It easily becomes an big incoherent mess.

      In JSON the default way is the only way. Nice and coherent.

      • @[email protected]
        link
        fedilink
        27
        edit-2
        1 year ago

        I agree that YAML is painful and it really seems like it’s had a lot of feature creep.

        JSON is painful in its own way too, though. There’s a lot of syntax noise from things like braces, quotation marks, etc, so it’s easy to make a mistake. Regular JSON doesn’t allow trailing commas.

        YAML tried to solve some of that, and did succeed in some ways, but introduced its own issues.

        TOML seems great to me, but maybe it has its own issues. TOML actually has defined data formats for things like dates (both offset and local) and times, which is missing from both JSON and YAML so every app ends up doing it its own way.

        • @[email protected]
          link
          fedilink
          111 year ago

          One big thing of JSON I hate is that sometimes is used for config files or similar and it doesn’t supports comments which sucks.

          • @rambaroo
            link
            7
            edit-2
            1 year ago

            JSONC does support comments but it wouldn’t be interoperable with anything expecting pure JSON. But still useful for local configs.

    • Terrasque
      link
      fedilink
      41 year ago

      Found out the hard way that no, it’s not… there are a few valid json files that most yaml parsers choke on

    • @[email protected]
      link
      fedilink
      61 year ago

      It’s been satisfying watching my configuration.yaml file shrink over the years as more and more things get handled by the UI.

      • @[email protected]
        link
        fedilink
        231 year ago

        Nah this chart needs fixing. Raw html is not neutral. And how is html neutral but xml evil. And who is writing restructured text outside of python?

        • @MotoAsh
          link
          41 year ago

          Also where’s regex? Though that’s so troublesome because it’s a process encoded in a string, not really a structure with debatably obnoxious syntax… hmm

          • @[email protected]
            link
            fedilink
            21 year ago

            Because regex isn’t a language used way to store or view data. It’s just a quick way to find, and potentially replace text.

      • @uid0gid0
        link
        201 year ago

        I honestly think that JSON and YAML should be swapped due to YAML’s strict indentation rules whereas you can just pack an entire JSON object on one line.

        • @[email protected]
          link
          fedilink
          91 year ago

          Also JSON has no comments. Which is great for me because I hate documenting my work, but it’s still annoying.

            • @[email protected]
              link
              fedilink
              English
              11 year ago

              I just learned yesterday you can do this, lol. You can use “//”: ‘’ once at the root level of a package.json file.

              Had to put an override to block a dependency of a dependency from installing (@types/* stubs when the package now has native type defs that conflicted with the no longer maintained stubs).

              I put in a comment as to why its there.

        • magic_lobster_party
          link
          fedilink
          61 year ago

          I think yaml’s need for indentation alone makes it chaotic evil. I’ve seen so many people struggle with the indentation than they really need to it’s not fun. Especially problematic with large configuration files.

          JSON is easy to unpack with tools like jq or whatever.

            • @uid0gid0
              link
              31 year ago

              Just because there are a lot of rules doesn’t make something chaotic in this system. The lawful-chaotic axis is a spectrum of how much of a stickler for the rules you are. YAML’s “one whitespace out of place and your whole config is fucked” attitude puts it squarely into lawful territory. JSON by contrast gives no shits about your file structure as long as your curly braces match.

        • peopleproblems
          link
          31 year ago

          Oh this is a good point - the syntax error on line one has ruined several productive days.

          Of course the tool would happily prettify it for me, but it has to be valid json. Which I think would make it more enjoyable if it said in that message “Good luck, we’re counting on you.”

      • @kuneho
        link
        31 year ago

        I went straight from chaotic evil to lawful good.

    • @marcos
      link
      361 year ago

      Yes, a bit. But that’s not the problem.

      The problem is that the current fashion of devops is done through piles and piles of badly defined YAML. If it used any other configuration language, it would be just as bad.

      • @[email protected]
        link
        fedilink
        151 year ago

        How’s it annoying? It’s easier to edit by hand than json as it allows for comments and there’s no trailing comma errors. I prefer it any day over json.

        • magic_lobster_party
          link
          fedilink
          121 year ago

          There’s a lot of foot guns in YAML. The specification is way more complicated with hidden obscurities. JSON specification is just 5 diagrams. YAML speciation on the other hand is an 86 page pdf, so there’s more room for nasty surprises (which is not a thing you want in configuration files).

          I’ve also seen many people struggle more than they need to with the yaml indentation.

          I think the only upside to yaml is that it allows for comments, but other than that JSON all the way.

          https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell

        • The Giant Korean
          link
          English
          51 year ago

          The fact that it allows comments is really, really handy. I used to be a JSON advocate until I realized this one useful piece of info.

            • The Giant Korean
              link
              English
              11 year ago

              I wonder how you’d even implement that. Like maybe {! At the beginning.

              • GTG3000
                link
                fedilink
                11 year ago

                Most comment-aware JSON parsers I’ve seen just use standard // to delineate comment lines.

        • @[email protected]
          link
          fedilink
          21 year ago

          It’s just another syntax to learn. For someone who already has their head crammed full of a bunch of other syntaxes over the years, I didn’t want to learn a new one. YAML has kind of forced it’s way in anyways though.

    • @[email protected]
      link
      fedilink
      81 year ago

      There are plugins that go back and forth between JSON and YAML so as you might expect it’s similar. Unlike JSON, spacing has semantic meaning, which can be a little annoying, especially when cutting and pasting. It’s nice in that configs aren’t cluttered up with open and close braces. It could be annoying AF if you’re a tabs instead of spaces person but idk because I’m a spaces person.

      I like YAML for config over .config files but it’s not a big deal either way. It just encourages better organization of settings because the hierarchical structure demands it while .config let’s you just drop a setting anywhere in the file. But it’s valid to have the opposite preference for the exact same reasons.

    • unalivejoy
      link
      fedilink
      English
      61 year ago

      I’ll answer your question with a question. Why does YAML support sexagesimal? (that’s base 60)

      ports:
      - 22:22
      

      Becomes

      {
        "ports": [1342]
      }
    • Tuna Casserole
      link
      fedilink
      41 year ago

      not at all. it’s used for configuration and stuff. having a lot of it can be a real bummer depending on the context. like a puppet config or perhaps a super weird docker compose setup. I’ve never heard anyone complain about the markup though. it’s like blaming json for a crap api or something or idk blaming the coffee cup for burnt coffee 🤷

      • @MotoAsh
        link
        81 year ago

        It’s just another structured data format. It’s used for a lot more than config. It’s also how you define commands and etc for Ansible. Like how a Maven project is defined in XML or a NodeJS package has its JSON.

        Sure they’re still “just” data formats on their own, but what they’re used for is genuinely just as important as what it is. I really doubt XML would’ve held on like it has without HTML being the web.

      • @[email protected]
        link
        fedilink
        31 year ago

        For some little config it’s fine, but it’s horrible when used when you have thousands upon thousands of lines of it. Lots of DevOps tools tend to use it like a fully-blown turing-complete programming language, and each has a different DSL of doing variables, loops etc. And that becomes an abomination.

    • @[email protected]
      link
      fedilink
      31 year ago

      I learned the hard way that no is false in yaml. Took us a while to realize why our app failed to start in Norway. Too many ways to do something.