web dev//UI//schema-driven UI//DSL

A domain-specific language (DSL) is a language designed for a narrow problem domain rather than for general-purpose programming. SQL is a DSL for relational data, CSS one for styling, Terraform HCL one for infrastructure.


A domain-specific language (DSL) is a language designed for a narrow problem domain rather than for general-purpose programming. SQL is a DSL for relational data, CSS one for styling, Terraform HCL one for infrastructure.

An internal DSL is embedded in a host language (React JSX, Ruby ActiveRecord queries, Drizzle ORM's query builder); an external DSL has its own standalone syntax and parser (SQL, regex, GraphQL).

When a schema-driven UI config becomes expressive enough (conditionals, computed fields, validation expressions), it is a DSL.

The tradeoff is power against complexity. A DSL restricts what can be expressed, and that is the point: constraints make it harder to do the wrong thing.

A DSL that keeps growing features eventually becomes a bad general-purpose language, as Salesforce SOQL and Jira JQL did when they grew conditionals.