Fundamental DSL Design Principles

Fundamental KISS principles for domain specific language design:

  1. There must be an economic imperative for the development of a DSL
  2. The DSL must be meaningful to users of the DSL
  3. The DSL must be appropriate for the intended processing
  4. The DSL definition must always be available when processing a model
  5. The DSL should be cognitively efficient for the users of the DSL
  6. The DSL should have multiple notations where necessary
  7. DSLs should be kept small through modularization and integration
  8. DSLs should offer mechanisms for modularizing and integrating models
  9. The DSL should be supported by appropriate tooling for DSL users

— Peter Bell, Jorn Bettin, Tony Clark, Keith Duddy, Scott Finnie, Matthew Fowler, Steven Kelly, Jack Kennedy, Laurence Tratt, Markus Voelter, Jos Warmer

Additional Guidelines for DSL Design

This page reflects the result of the KISS workshop on 16 June 2009 at the Code Generation conference (Cambridge, UK).

What you can do to progress KISS

  1. Sign-up to register your support of the KISS initiative
  2. Provide examples that illustrate the fundamental principles
  3. Provide case studies that show the value of the DSL design guidelines
  4. Provide well-reasoned counter examples if you believe a fundamental principle or design guideline is not applicable
  5. Suggest further principles and guidelines together with relevant supporting evidence
  6. Develop DSL interoperability solutions based on KISS principles and guidelines

Contact jorn dot bettin at sofismo dot ch or tony dot clark at tvu dot ac dot uk

KISS members can also discuss the fundamental principles at in the discussion section at the bottom of this page.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License