This document provides a conceptual framework for building domain-specific languages (DSLs). It discusses key characteristics of DSLs such as their focused domain, small size, and fast evolution compared to general purpose languages. The document outlines design dimensions for DSLs, including expressivity, completeness, coverage, supported paradigms, semantics, modularity, and separation of concerns. It provides examples of DSLs for components, refrigerators, extended C, and pension plans to illustrate concepts. The document argues that DSLs should provide linguistic abstractions that directly represent the semantics of a domain to avoid requiring semantic analysis during processing.