I don't think DSL's necessarily fail. Puppet's DSL was everywhere at one point in the late 00's and lots of people argue that Terraform's DSL is fairly ubiquitous in the IaC space.<p>The article brings up some fine points about why DSL's are restrictive, but the primary issue with them comes from the name: They're single use.<p>I meet with companies daily who have tried to adopt Terraform's DSL internally and found a few people feel comfortable with it, but the vast majority of the engineering org have zero interest in learning it because to them - what's the point? They can achieve the same goal with <insert language here> by using Pulumi or CDK. People will bring the flawed argument that Terraform's DSL stops you from footgunning yourself but I've seen plenty of awful, messy Terraform that's only maintainable by the person who wrote it.<p>Another consideration is just how much DSLs evolve over time. You eventually end up getting closer and closer to Turing completeness because people really want to solve problems that require it or solve them in a familiar way.<p>I've spoken frequently about my belief that in the long term, DSLs in the IaC space will largely be superseded by programming language based graph building and most of these thoughts come from frustrated users who are moving away from DSLs
From my viewpoint DSLs succeed frequently<p>The infrastructure management space is a special case but let’s approach it with some common sense. If I know bash I can script anything. If I know puppet and bash I can script anything with much more work. Most fundamentally, <i>I still need to know how to use bash!</i> Puppet, chef, vagrant, dockerfiles and all the above subtract value and don’t add. Then there are systems like cloud formation which exist for one reason: lock you into a vendor. If that is how you define DSL then DSLs fail but it is not about DSLs it is “why do people keep making bad infrastructure management tools and why do people have the bad judgement to use bad infrastructure management tools?”
> It’s why I think TypeScript is the language of infrastructure-as-code.<p>What? Since when?<p>Edit: Did a google search for "infrastructure as code typescript" and this persons blog is one of the first results, where they talk about the new cloud development kits which are made to support different languages out of the box....<p><a href="https://i.imgur.com/jozV24f.png" rel="nofollow">https://i.imgur.com/jozV24f.png</a>
Matlab is a DSL that has made its creators a lot of money and which has been adopted widely in engineering and finance. It may eventually be pushed out by Python/Numpy or Julia, but it has been very successful.
A lot of DSLs are quite successful, but they need to be worth it and require a lot of effort into making them more usable than a simple library for general purpose language, or even just a simple JSON configuration file. A lot of DSLs just aren't worth it.
His DSLs fail because he doesn't know how to use DSLs. There must be one for each level of abstraction for each little problem, all built on top of a single host language so that they can be intermingled and COMPOSED.