Don't make unnecessary DSLs
Many programming languages have some sort of metaprogramming system that lets you create domain specific languages. Rails is a huge DSL built on top of Ruby, Phoenix is similar for Elixir, and Lisp programmers have been creating domain specific functions for a long time. When applied to generic problems like HTTP frameworks DSL make a lot of sense. They wrap up boilerplate code using language that’s closer to the problem domain. App specific business logic is less interwoven with generic request code so is easier to maintain.
When you create a DSL you’re adding another layer of abstraction someone maintaining the code has to understand. If that person is unfamiliar with the problem domain then they have to understand both the problem and the metaprogramming to figure out what’s going on. This is usually harder than reading normal code in the language.
In the early days of Ruby and Rails people made DSLs for absolutely everything. Most of these were unnecessary and just saved a few characters of typing. Code is read far more often than it is written so this is a bad trade off. For many of these libraries the authors moved on to other things and the libraries went unmaintained. Code that depended on them require rewrites which wouldn’t have been necessary if the standard Ruby code had been typed out in the first place!
Are you using any DSLs for convenience only? How much work would it be to remove the dependency if it became unmaintained?