I really don't buy Pulumi's primary selling point: That using a "familiar (general-purpose programming) language" for cloud configuration makes us more productive.
I'm not a huge fan of Hashicorp's HCL---I'd prefer something more flexible and powerful like Jsonnet or Dhall---but I'm a believer in DSLs in general and that the right DSL is the best solution here. Cloud configuration is really a very different problem domain from general-purpose programming and it seems to me pretty self-evident that a well-designed DSL can make us more productive in this space and produce more readable configurations than a general-purpose programming language.
I've used pulumi for work in a relatively large scale set of deployments, and have been using it since an early beta - but for Azure.
There are significant issues with it - terrible stability and reliability between version upgrades, its constant desire to tear down entire sets of resources and regenerate them when no change has occurred etc.
I assume these issues stem from the fact that pulumi's azure providers are generated directly from the terraform providers and practically nobody ever uses those.
The only reason I'm mentioning it is that I only ever see pulumi described in glowing reports of success whereas for us it's beginning to seem like a mistake ever using it in the first place.
you can't just fork and maintain the community or recognition though which is way more important for DevOps, or packaging tools in general. It's more valuable for us all to use the same/similar tools. The world doesn't need 50 digital Ocean adapters.
I'm not a huge fan of Hashicorp's HCL---I'd prefer something more flexible and powerful like Jsonnet or Dhall---but I'm a believer in DSLs in general and that the right DSL is the best solution here. Cloud configuration is really a very different problem domain from general-purpose programming and it seems to me pretty self-evident that a well-designed DSL can make us more productive in this space and produce more readable configurations than a general-purpose programming language.