The Dhall Configuration Language

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

SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • tanka

    Flexible, reusable and concise configuration for Kubernetes

    I think it might still have issues figuring out that it needs to apply CRDs first: https://github.com/grafana/tanka/issues/246 Besides that, I found it super-handy for deploying https://github.com/prometheus-operator/prometheus-operator and https://github.com/kubernetes-monitoring/kubernetes-mixin

  • SaaSHub

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

    SaaSHub logo
  • ytt

    YAML templating tool that works on YAML structure instead of text

    https://carvel.dev/ytt/

    ytt lets you embed logic via a python-subset (starlark) and also provides "overlays" as a "replace/insert" mechanism. and all valid ytt files are valid yaml files, so they can be passed-through other yaml parsing stages.

  • dhall-lang

    Maintainable configuration files

  • dhall-kubernetes

    Typecheck, template and modularize your Kubernetes definitions with Dhall

    Dhall is my favorite configuration language that I never get around to using.

    I manage DNS in Terraform, and since every Terraform provider uses different objects definitions, and every object definition is rather verbose, Dhall would be a way to specify my own DRY types and leave the provider-specific details in one place. Adding new DNS entries and moving several domains between providers would be a matter of changing fewer lines.

    Dhall also has Kubernetes bindings:

    https://github.com/dhall-lang/dhall-kubernetes

    Although I'm tempted to just stick to Helm here, even though it's less type-safe.

  • cue

    The home of the CUE language! Validate and define text-based and dynamic configuration

    Comparison with a related language (perhaps biased, since opinion is from creator of that language).

    "Comparisons between CUE, Jsonnet, Dhall, OPA, etc." https://github.com/cue-lang/cue/discussions/669

  • oils

    Oils is our upgrade path from bash to a better language and runtime. It's also for Python and JavaScript users who avoid shell!

    Comparison of similar projects, including Dhall:

    https://github.com/oilshell/oil/wiki/Survey-of-Config-Langua...

  • prometheus-operator

    Prometheus Operator creates/configures/manages Prometheus clusters atop Kubernetes

    I think it might still have issues figuring out that it needs to apply CRDs first: https://github.com/grafana/tanka/issues/246 Besides that, I found it super-handy for deploying https://github.com/prometheus-operator/prometheus-operator and https://github.com/kubernetes-monitoring/kubernetes-mixin

  • kubernetes-mixin

    A set of Grafana dashboards and Prometheus alerts for Kubernetes.

    I think it might still have issues figuring out that it needs to apply CRDs first: https://github.com/grafana/tanka/issues/246 Besides that, I found it super-handy for deploying https://github.com/prometheus-operator/prometheus-operator and https://github.com/kubernetes-monitoring/kubernetes-mixin

  • starlark

    Starlark Language

    Have you seen Starlark? It's not too far from that, but safer in a number of ways: https://github.com/bazelbuild/starlark

  • skycfg

    Skycfg is an extension library for the Starlark language that adds support for constructing Protocol Buffer messages.

    Can you say more about what GCL does better than all of the open source ones?

    Anecdotally, I've heard a lot of GCL horror stories, and many Xooglers have chosen to create things like Jsonnet or Skycfg (https://github.com/stripe/skycfg) instead.

  • dhall-aws-cloudformation

    Typecheck, template and modularize your AWS CloudFormation with Dhall

    I have been writing a fair amount of Dhall using autogenerated CloudFormation bindings ( https://github.com/jcouyang/dhall-aws-cloudformation/ ). It is a fantastic way to reduce boilerplate and factor out recurring blobs. My main frustration is that the type checker is not smart enough (or maybe the type system is undecidable?) - every time you want to use a polymorphic function, you must pass in the type parameters yourself (this is also true for empty lists and `None`). This makes simple FP idioms extremely noisy, to the point where you're better off writing longhand. In a language that's meant to be alleviating YAML/JSON boilerplate.

    It's still a massive improvement, but it could be so much better if the typechecker was smarter.

  • mina

    Mina is a cryptocurrency protocol with a constant size blockchain, improving scaling while maintaining decentralization and security. (by MinaProtocol)

  • dhall-manual

    The Dhall Configuration Language Manual

  • adventofcode

    Advent of Code solutions of 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 and 2024 in Scala (by sim642)

    I usually try Advent of Code (https://adventofcode.com) every year with a new language I'm interested in. So far it's allowed me to get respectable knowledge of:

  • octoDNS

    Tools for managing DNS across multiple providers

    We use https://github.com/octodns/octodns for some of our DNS records. It's flexible, much faster than Terraform for thousands of records, and the maintainer Ross has been responsive on issues and pull requests. Also see Cloudflare's blog for how they use it

  • starlark-go

    Starlark in Go: the Starlark configuration language, implemented in Go

  • sjsonnet

    > jsonnet seemed like a great idea to me, but I've experienced extremely low performance.

    Although each implementation of jsonnet has some quirks, take a look at (scala-based) sjsonnet^1 or go-jsonnet^2 for improved performance. We use go-jsonnet because of some issues we had with the scala version - but it does seem to be the fastest by a large margin.

    There's also a Rust version^3 that claims to be the fastest yet^4, but I haven't experimented with it at all.

    [1]: https://github.com/databricks/sjsonnet

    [2]: https://github.com/google/go-jsonnet/

    [3]: https://github.com/CertainLach/jrsonnet

    [4]: https://gist.github.com/CertainLach/5770d7ad4836066f8e0bd91e...

  • go-jsonnet

    > jsonnet seemed like a great idea to me, but I've experienced extremely low performance.

    Although each implementation of jsonnet has some quirks, take a look at (scala-based) sjsonnet^1 or go-jsonnet^2 for improved performance. We use go-jsonnet because of some issues we had with the scala version - but it does seem to be the fastest by a large margin.

    There's also a Rust version^3 that claims to be the fastest yet^4, but I haven't experimented with it at all.

    [1]: https://github.com/databricks/sjsonnet

    [2]: https://github.com/google/go-jsonnet/

    [3]: https://github.com/CertainLach/jrsonnet

    [4]: https://gist.github.com/CertainLach/5770d7ad4836066f8e0bd91e...

  • jrsonnet

    Rust implementation of Jsonnet language

    > jsonnet seemed like a great idea to me, but I've experienced extremely low performance.

    Although each implementation of jsonnet has some quirks, take a look at (scala-based) sjsonnet^1 or go-jsonnet^2 for improved performance. We use go-jsonnet because of some issues we had with the scala version - but it does seem to be the fastest by a large margin.

    There's also a Rust version^3 that claims to be the fastest yet^4, but I haven't experimented with it at all.

    [1]: https://github.com/databricks/sjsonnet

    [2]: https://github.com/google/go-jsonnet/

    [3]: https://github.com/CertainLach/jrsonnet

    [4]: https://gist.github.com/CertainLach/5770d7ad4836066f8e0bd91e...

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

  • DSLs Are a Waste of Time

    2 projects | news.ycombinator.com | 4 Sep 2023
  • Why is Kubernetes adoption so hard?

    1 project | news.ycombinator.com | 1 Jun 2023
  • Docker-compose.yml as a universal infrastructure interface

    4 projects | news.ycombinator.com | 27 Mar 2023
  • Why We Use CUE (and Not Helm)

    5 projects | dev.to | 9 Oct 2022
  • Dhall configuration language as another way to write manifests for Kubernetes

    2 projects | /r/kubernetes | 4 Apr 2022

Did you konow that Go is
the 4th most popular programming language
based on number of metions?