Hacker News new | ask | show | jobs
by wrnr 1477 days ago
But what is Dhall? Ok yes, something that helps you write config files because Kubernetes is a pain. I am not a DevOps person so I can't always empathise with the problems DevOps deals with on a daily basis. That something is written in Haskell for Haskell sake is not something I care about. Not that I dislike Haskell, PostgREST is written in it and that is one of the coolest and most productive things I know about, and it does not ask me to learn Haskell (just a lot of SQL).

How does it compare to something like CUE[1] which uses a lattice algebra to weave config files and code together to manage different configuration environments similar to how some computational-algebra-system use pattern matching and rewrite rules to encode mathematical knowledge.

[1] https://cuelang.org/

1 comments

IMHO cue is generally better for complicated configurations, including Kubernetes. Dhall has some nice features though. In particular the ability to import other files as semantic hashes seems like a great feature.

To manage configuration you also need a system to understand the state of the configured system so that when you delete a configuration you can reconcile that with the system. So then it becomes more practical to use Pulumi with TypeScript. It would be nice if there was a separate state reconciliation system that one could adapt to use with Cue or Dhall or any other frontend.

since you mentioned Kubernetes...

> It would be nice if there was a separate state reconciliation system that one could adapt to use with Cue or Dhall or any other frontend

this exactly was thinking behind https://carvel.dev/kapp for Kubernetes (i'm one of the maintainers). it makes a point to not know how you decided to generate your Kubernetes config -- just takes it as input.

> In particular the ability to import other files as semantic hashes seems like a great feature.

it's an interesting feature but seems like it should be unnecessary given that config can be easily checked into git (your own and its dependencies).

kapp looks good! I wish that had been available (or I had known about it) back when I was using cue. But kapp is k8s only whereas Pulumi has cloud provider backends as well as k8s.

> it's an interesting feature but seems like it should be unnecessary given that config can be easily checked into git (your own and its dependencies).

Backend provider functions need to be imported for example. The semantic hashing system makes imports easier- if just a comment is changed, there is no change. There's a lot of interesting possibilities here to help audit changes.