DomainLang

Make small languages for real business work

DomainLang is developing a practical method and reusable tools for languages that help people express rules, events and information clearly.

DomainLang

Follow the idea from method to example

Reuse the working language tools

The proposed CoreLang base would reuse working DSLSH and THE editor components and, where execution helps, the existing CREXX tools. The combined DomainLang path has not yet been built.

Begin with one rebooking rule

The first example will test the method, the CoreLang common base, editor feedback and the optional CREXX execution path together.

Terms used on this site

Plain-English definitions for the language-design and tooling terms needed by the first DomainLang pages.

How it works

A small loop for creating a useful language

Begin with a business question, agree its meaning, try the smallest suitable language and use what happens to improve it.

  1. Name the need and people

    Identify the unclear decision or description and who must write, review or act on it.

  2. Collect examples

    Gather cases that should work, cases that should fail and awkward exceptions.

  3. Agree the meaning

    Define the important concepts, relationships, events and time rules before choosing syntax.

  4. Choose the smallest language

    Use the proposed CoreLang base when it fits, or choose text, a table, a diagram or another form.

  5. Try it and learn

    Check examples, show useful errors, observe authors and revise the language and method.

Read the connections
  • Name the need and peopleCollect examples: make the question concrete.
  • Collect examplesAgree the meaning: expose missing distinctions.
  • Agree the meaningChoose the smallest language: express only what is needed.
  • Choose the smallest languageTry it and learn: put the language in people's hands.
  • Try it and learnName the need and people: revise the question and scope.
Execution is optional. A controlled document, table or diagram may solve the problem without a new parser or runtime.

Start with a rule people need to understand

Imagine a service that cancels an appointment. Its rule says that the person must be offered another date within five working days. Ordinary prose may leave questions: who makes the offer, when the clock starts, what happens when the person cannot attend, and which version of the rule applied?

A small business language can give those distinctions stable names and let a tool check that each rule is complete. DomainLang is developing a method for deciding when that extra structure is useful and how to create it without losing the language of the people who do the work.

A developing method, a proposed common base and working components

The method starts with users, examples and business meaning before choosing syntax. It then covers validation, useful error messages, editing, exchange with other tools and, when needed, execution.

CoreLang has two roles. It is the first worked business-language example, and it is the proposed common syntax and toolchain base that suitable business-related languages can reuse or extend. A language that does not fit that base should be free to take another path.

The toolchain starts from real components. DSLSH connects editors to parsers. THE CREXX Edition demonstrates that connection in a working editor and a limited browser proof of concept. The CREXX tools provide an existing assembly, linking and virtual-machine path for examples that need to run.

Keep the first result small

The first example will cover one rebooking rule. It must show the original business need, the meaning that must be preserved, the proposed language, useful validation messages and the result of trying it in the editor. If execution helps, the example will generate RXAS and use the existing CREXX tools. The work will be successful only if it makes the rule easier to write, review and change.

Related work

What the other projects contribute

  • Architecture Portal explains where language design fits within a wider architecture.
  • CoreLang is both the first worked example and the proposed common base for suitable business-related languages.