The YAML Document from Hell

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

CodeRabbit: AI Code Reviews for Developers
Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.
coderabbit.ai
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  1. edn

    Extensible Data Notation

    Sure!

    Spec: https://github.com/edn-format/edn

    Example (linter config): https://github.com/clj-kondo/clj-kondo/blob/634294183a0aa2ca...

  2. CodeRabbit

    CodeRabbit: AI Code Reviews for Developers. Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.

    CodeRabbit logo
  3. yq

    Command-line YAML, XML, TOML processor - jq wrapper for YAML/XML/TOML documents (by kislyuk)

  4. ytt

    YAML templating tool that works on YAML structure instead of text

    > Templating yaml is a terrible, terrible idea

    I've had a good time using ytt: https://carvel.dev/ytt/. It implements language-aware templating, which is IMO the only reasonable way to do it.

  5. jsonnet

    Jsonnet - The data templating language

    I wonder why generated JSON is not used more widely, something like jsonnet[0], although I've never used it.

    Most systems come with Python 3 installed, which supports working with JSON[1] without installing any dependencies. So, I'm wondering if we could use Python to generate JSON data that is then consumed by other tools. This would fix the lack of comments and trailing commas in JSON, you get functions and other abstractions from Python, and you don't need to install any third-party tools (vs. something like jsonnet).

    [0]: https://jsonnet.org/

    [1]: https://docs.python.org/3/library/json.html

  6. json5

    JSON5 — JSON for Humans

    People often forget about the environment, and I feel like a lot of the simpler services and applications could be configured through it easily.

    For anything that requires more complex structures, JSON5 (https://json5.org/) has been gaining traction. It's basically JSON that allows a couple of more things, including comments and unquoted keys, if you're into that.

  7. hydra

    Hydra is a framework for elegantly configuring complex applications (by facebookresearch)

    For managing configs of ML experiments (where each experiment can override a base config, and "variant" configs can further override the experiment config, etc), Hydra + Yaml + OmegaConf is really nice.

    https://hydra.cc/

    I admit I don't fully understand all the advanced options in Hydra, but the basic usage is already very useful. A nice guide is here:

    https://florianwilhelm.info/2022/01/configuration_via_yaml_a...

  8. judo

    Simple orchestration & configuration management

    Ansible and YAML were my primary (de)motivators to create Judo (https://github.com/rollcat/judo). This combo is extremely frustrating: for every line in a (hypothetical) shell script that would do one thing, I needed 3-5 (sometimes many more) lines of YAML. Most people on the team who were just getting started with Ansible, would often do half of their work just shelling out. I would usually push to do things "the Ansible way", but even I had to acknowledge the mental overhead of translating back & forth. I think what finally pushed me over the edge was when we started venturing into compose & k8s, and had to mix & juggle YAML+Jinja in two entirely different contexts, each with its own quirks, bugs, gotchas and brain damage.

    I figured I just need a layer of glue to run shell scripts across a bunch of remote hosts (hence Judo), and otherwise resort to other tooling (like Terraform, AWS CLI, k8s CLI, etc) for problems that don't map to SSH.

  9. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  10. clj-kondo

    Static analyzer and linter for Clojure code that sparks joy

    Sure!

    Spec: https://github.com/edn-format/edn

    Example (linter config): https://github.com/clj-kondo/clj-kondo/blob/634294183a0aa2ca...

  11. strictyaml

    Type-safe YAML parser and validator.

    That safe subset exists and is implemented in a number of languages. It is called strict-yaml: https://hitchdev.com/strictyaml/

  12. toml

    Tom's Obvious, Minimal Language

    > I still think it's the best format out there.

    What do you think of https://toml.io ?

  13. hjson

    Hjson, a user interface for JSON

    ```

    YAML and JSON succeeded because they had a clean and predictable, no-nonsense mapping between encoding and object-model after decoding. Probably we should all switch to an almost-yaml format that does away with the peculiarities, and the FANG companies would have the momentum to make that happen.

    I personally would like for HJSON (https://hjson.github.io) to see more adoption, but that train has passed...

  14. dune

    A composable build system for OCaml.

  15. sxpyr

    Parse s-expressions, edn, and a variety of lisp dialects.

    4. still better than yaml and json

    0. https://github.com/tgbugs/sxpyr

  16. tanka

    Flexible, reusable and concise configuration for Kubernetes

    At Grafana Labs we're using jsonnet at scale, while being a powerful functional language it is also excellent for rendering JSON/YAML config. We have developed Tanka[0] to work with Kubernetes, for other purposes I can recommend this course[1] (authored by me).

    [0] https://tanka.dev/

    [1] https://jsonnet-libs.github.io/jsonnet-training-course/

  17. nestedtextto

    CLI to convert between NestedText and JSON, YAML, or TOML, with explicit type casting

    I'm a huge fan of NestedText, especially as there is no escaping needed ever.

    If you ever want to use it as a pre-format to generate either TOML, JSON, or YAML, I used the official reference implementation to make a CLI converter between them and NestedText.

    When generating one of these formats, you can use yamlpath queries to concisely but explicitly apply supported types to data elements.

    - My CLI converter: https://github.com/AndydeCleyre/nestedtextto

    - yamlpath info: https://github.com/wwkimball/yamlpath/wiki/Search-Expression...

  18. yamlpath

    YAML/JSON/EYAML/Compatible get/set/merge/validate/scan/convert/diff processors using powerful, intuitive, command-line friendly syntax.

    I'm a huge fan of NestedText, especially as there is no escaping needed ever.

    If you ever want to use it as a pre-format to generate either TOML, JSON, or YAML, I used the official reference implementation to make a CLI converter between them and NestedText.

    When generating one of these formats, you can use yamlpath queries to concisely but explicitly apply supported types to data elements.

    - My CLI converter: https://github.com/AndydeCleyre/nestedtextto

    - yamlpath info: https://github.com/wwkimball/yamlpath/wiki/Search-Expression...

  19. sexplib

    Automated S-expression conversion

  20. sexp

    S-expression swiss knife

  21. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • The yaml document from hell

    8 projects | /r/programming | 12 Jan 2023
  • Show HN: JSON For You – Visualize JSON in graph or table views

    13 projects | news.ycombinator.com | 24 Sep 2024
  • TomWright/dasel: Select, put and delete data from JSON, TOML, YAML, XML and CSV

    13 projects | news.ycombinator.com | 18 Aug 2024
  • Show HN: Flatito, grep for YAML and JSON files

    4 projects | news.ycombinator.com | 25 Mar 2024
  • Jaq – A jq clone focused on correctness, speed, and simplicity

    28 projects | news.ycombinator.com | 29 Nov 2023

Did you know that Python is
the 2nd most popular programming language
based on number of references?