Pulumi, an infra company founded on TypeScript, is now shipping HCL.

Every argument Pulumi opened with has been repackaged as a feature.

This pivot gave me whiplash reading it today. Imagine moving out of one authoritative state prison into another.

I build chant, an infra compiler. You write TypeScript and it compiles to CloudFormation or Kubernetes YAML and nothing runs.

TypeScript as Data was Pulumi’s to have

Luke Hoban co-created TypeScript and then brought it to infrastructure.

TypeScript as Data is an obvious answer to HCL. Pulumi picked runnable TypeScript.

chant leaves a platform native artifact in your hands, and it keeps working the day chant goes away.

Coupling synthesis to execution and authoritative state means the only way to reproduce your artifact is to run the toolchain again.

TypeScript as data was on the table in 2018, in front of the person best placed on earth to pick it up.

The cure is the disease

I wrote before that vendors indict Terraform state as a database crammed into a flat file, then sell you a real one as the cure.

This week it happened again.

The industry that exists to fix Terraform has a new member, one that spent eight years saying the problem was the language.

The revolving door

Pulumi is offering to rehome HCL and your authoritative state.

The path out of HCL then takes you back into Pulumi’s own state. A revolving door with no exit.

The real way out is back to platform native

chant’s carve-out takes a slice of a Terraform estate out to typed source and emits CloudFormation, or a Kubernetes manifest, or .gitlab-ci.yml. Nothing chant-specific rides along in it.

You stop re-homing your infra in authoritative state. You move it back home, into the platform native tooling. It goes one slice at a time.

You can leave Terraform and state behind in the same move.


Read more