I finally found a use case that makes sense for DSL. In truth it’s not really a DSL but a T-DSL. The T stands for transformative. A perfect example of a Transformative-DSL would be something like spec. Where TSON and XML are simple containers for the DSL.As an example of a DSL anti-pattern; consider the puppet DSL. The DSL itself is constructed in Ruby and the configuration that drives the actions are also constructed in Ruby. This method of configuration tightly binds the configuration itself to the underlying DSL implementation. The configuration is no longer transformative across like patterns. It depends on Ruby itself being cross-platform. Thus making Ruby dependency the overall architecture.