<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Re ections on the Lack of Adoption of Domain Speci c Languages?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Federico Tomassetti</string-name>
          <email>federico@tomassetti.me</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Vadim Zaytsev</string-name>
          <email>vadim@grammarware.net</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Advantages of DSLs</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Universiteit Twente</institution>
          ,
          <addr-line>Enschede</addr-line>
          ,
          <country country="NL">The Netherlands</country>
        </aff>
      </contrib-group>
      <fpage>85</fpage>
      <lpage>94</lpage>
      <abstract>
        <p>Given all the di erent bene ts that domain speci c languages are reported to produce, why are they not a widely adopted practice? The essence of the question has roots in industrial experience of the two authors of this report, but it was put out as a discussion starter at OOPSLE 2020. During the discussion session itself, there were some possible reasons voiced and possibly related concerns expressed. In this report, we try to condense those in a short coherent text. Not claiming any generality and fully acknowledging the anecdotal nature of our evidence, we still think that such a conversation is useful to have within the SLE community.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        While this paper re ects the opinions of the authors, it has been strongly in
uenced by the helpful discussions at OOPSLE over the business and organisational
problems causing domain speci c languages (DSLs) not to be adopted. By the
lack (or perhaps just dearth) of adoption here we mean that whenever software
developers have a problem to solve, among the possible solutions to it,
modelling the problem domain by means of creating a new domain-speci c language
or adopting an existing one, is rarely, if ever, the rst option. Quite often it is
being left out of this list altogether.
{ domain-speci c abstractions [
        <xref ref-type="bibr" rid="ref13 ref17 ref3 ref7">3, 7, 13, 17</xref>
        ] to express commonly needed
concepts even by non-developers, beyond what a library would allow [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ];
{ domain-speci c notations [
        <xref ref-type="bibr" rid="ref15 ref17 ref3 ref7">3, 7, 15, 17</xref>
        ] that help expressing needed
concepts in a readable and maintainable way, and the exibility to change and
adjust those notations as an inherent part of growing the language [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ];
{ separation of concerns stemming from the language focus: in a language
that can only do one thing well, one is forced to write disjoint programs or
models even for strongly coupled entities;
{ tool support for type checking, editing [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], evolution [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] analysis,
veri cation, optimisation, transformation [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], simulation and animation [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ],
derivation of dependent artefacts [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] (even though some sources
explicitly complain that tool support for DSLs is noticeably worse than that for
GPLs [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]);
{ conciseness [
        <xref ref-type="bibr" rid="ref18 ref3">3, 18</xref>
        ] and self-documentation [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], to express the domain
concepts in a concise manner that would make the resulting program or
model intuitively understandable by domain experts;
{ productivity [
        <xref ref-type="bibr" rid="ref14 ref2 ref3">2, 3, 14</xref>
        ] and maintainability [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] boosts, allowing domain
experts to manipulate constructs expressed in a DSL, in a quick and natural
way, drastically reducing maintenance costs;
{ reliability, testability, portability and safety [
        <xref ref-type="bibr" rid="ref14 ref2">2, 14</xref>
        ] allegations based
on making the language t the chosen platform(s) and using its behavioural
patterns in testing and veri cation to make sure it runs smoothly;
{ conservation and reuse of domain knowledge [
        <xref ref-type="bibr" rid="ref13 ref2">2, 13</xref>
        ] without leaky
abstractions [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] (during the OOPSLE discussion the main author of the
latter cited paper even claimed that \understanding the domain is the most
important side e ect of building a DSL");
{ executability, liveness and enabling debugging and experimentation with
a system that models the domain in a highly interactive way [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ];
{ involvement and integration of domain experts beyond experienced
programmers, into the development process [
        <xref ref-type="bibr" rid="ref13 ref17 ref3">3, 13, 17</xref>
        ], and their
collaboration [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ];
{ the lifespan of a DSL is that of months or years [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] while general purpose
languages live through decades notwithstanding their actual worth after such
a deployment period, simply based on inertia of accumulated legacy.
      </p>
      <p>Given the obvious enthusiasm about the potential of domain-speci c
languages within the (OOP)SLE community, it is discomforting to notice how low
the adoption rate of DSLs appears to be, even in contexts which, according to
the experience industries have with DSLs, would be a good t for their
adoption. In the remainder of the paper we try to summarise possible reasons without
overselling DSLs as the silver bullet.
3</p>
    </sec>
    <sec id="sec-2">
      <title>Adoption Problems of DSLs</title>
      <p>During the discussion two main problems emerged, which seem to negatively
a ect DSL adoption:
1. Many software engineering professionals are unaware or oblivious of DSLs.
2. Many SE professionals who are aware of DSLs, perceive them as risky.</p>
      <p>In the remainder of this section we discuss these speci c evident symptoms
of the problem. We will not be discussing the cause for these symptoms, nor
trying to nd other problems to make the list exhaustive.
3.1</p>
      <sec id="sec-2-1">
        <title>Lack of Awareness for DSLs</title>
        <p>As practitioners, we seem to agree that only a tiny minority of software
development professionals are aware of DSLs. An anecdote we can report, is based on
our experience working with a client on the development of a DSL. Before
contacting us, an organisation had invested some e ort internally to raise the level
of abstraction in their software development process. They had the intuition it
was possible to do so, in their context. However, the strategy to reach that goal,
remained unclear until they were faced with the de nition of the term \Domain
Speci c Language" and the implications around it. That term was encountered
by them for the rst time only after investing two years on this internal project.</p>
        <p>
          While many practitioners have a total lack of awareness about DSLs, others
have severe misconceptions about them. Often practitioners associate things
unrelated to DSLs, to the misunderstood term. In other cases they are aware of
only a certain kind of DSL, for example internal or embedded DSLs [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. They
assume those are the only possible type of DSLs and draw conclusions based on
that. \Look closely enough, and HTML and emojis become DSLs too" [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ].
        </p>
        <p>It appears obvious that DSLs cannot be more widely adopted, until more
software development professionals get a better understanding of them, or until
the DSL community adopts a di erent terminology which is less alienating for
developers.
3.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Perceived DSL Risks</title>
        <p>When there is a proper understanding of DSLs within an organisation, and they
are aware of the bene ts DSLs could bring to their speci c situation, there is a
set of perceived risks which could dissuade them from adopting DSLs.</p>
        <p>
          In this section we are not making any statement about the validity of these
risks, but only trying to identify risks as they appear to be perceived by potential
adopters:
1. Lack of competence. Adopting DSLs is seen as risky because most
companies simply do not have internal resources with the skills needed to design,
implement, and maintain advanced DSL-based solutions. Such competence
seems di cult to acquire on the market or to develop internally.
2. Lack of established vendors. It is perceived to be di cult to identify
vendors providing language engineering services. In particular large
organisations see the risk in the absence of large vendors capable of providing
su cient support for software language engineering projects. The majority
of providers of language engineering services are single freelancers or
microconsultancies. Raincode Labs is known to be the largest in the world with
only around 50 compiler experts [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. Working with vendors with single-digit
number of employees poses a risk, because those vendors could not rapidly
scale the support o ered, and they do not o er su cient guarantees for the
long term.
3. Lack of adoption. It looks like a vicious circle, but DSLs are perceived
as risky because they are not a mainstream technology. This poses a threat
regarding future support of technologies related to DSLs. It also makes
management more cautious in adopting a solution which is not common, as
potential failures could be connected to the \unusual" choice of adopting DSLs.
While \no one gets red for buying IBM" [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], if a DSL-project proves
unsuccessful, someone most probably will be. Mainstream general purpose
languages typically enjoy a rich ecosystem with an arsenal of well-maintained
tools and other forms of support, and even their discontinuation is
wellannounced and slow. Identifying and studying domain-speci c ecosystems is
a well-known challenge [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], but it is not uncommon for an ecosystem of a
particular DSL to be con ned to one company.
4. Fear of lock-in. An organisation could perceive the DSL route as risky,
because of the lock-in on the developed languages, their supporting toolsets
and/or the platform on which they rely. For example, a company which
develops a DSL for the de nition of digital therapeutics applications using
JetBrains MPS [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] could later be locked-in in using the developed language(s),
because of the complexity to switch to other technologies. Even if the
company wanted to keep using the DSL, they may want to migrate to other
platforms or language workbenches, but that could prove too di cult, in
turn e ectively locking them in the speci c workbench and platform
originally chosen (JetBrains MPS, in this example).
5. Bad prior experience. Organisations which are open to adopting
nonmainstream solutions, may have adopted other technologies claiming some
of the bene ts claimed today by DSLs: 4GLs, RAD, etc. Because of this, they
could attribute some of the already experienced drawbacks of those solutions
to DSLs, perceiving DSLs as bringing the same risks as those previously tried
solutions.
        </p>
        <p>
          Most of these risks are far from being unfounded. It is indeed hard to become
an accomplished expert in compiler services and software language engineering|
even though only a very small team of such people is needed for any project or an
organisation. It is indeed a big liability that DSLs can be abandoned simply
because the one person making maintenance promises, decides to retract them and
move on. It is indeed true that DSLs are not a universal solution to all the
problems, and thus remain somewhat niche. We see the latter two as the most weakly
supported by facts: while there is a lock-in chance, a well-designed DSL raises
the level of abstraction enough to be separated from the technical
implementation details, which means redeveloping an alternative toolset is just a matter of
resources. (An example was given of TIALAA, short for \There Is A Life After
AppBuilder" [
          <xref ref-type="bibr" rid="ref20 ref21">20,21</xref>
          ], a project where even in the worst possible circumstances|
for a badly designed 4GL which documentation was inaccessible|it was possible
for a very small team to develop a full replacement compiler and debugger from
scratch). The last item remains a topic of a larger discussion, which has no place
here among DSL experts and fans, since all OOPSLE participants will obviously
claim that DSLs are su ciently di erent from solutions that preceded them.
4
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>The Term and Its Re nement</title>
      <p>
        Since the term \Domain-Speci c Languages" is problematic and overly general,
there can be two paths to solve this problem: either re ning it or abandoning
it. Re nement will imply further classi cation around several dimensions, in
order to clearly position each particular proposed solution within the overly
large solution space, and to facilitate separate discussions around each of the
dimensions, instead of wallowing in misconceptions. Examples of dimensions
can be:
{ Internal/Embedded/External. Internal DSLs are de ned within the host
language (e.g., Haskell's combinator libraries, jQuery and similar libraries for
JavaScript, XML I/O in most languages). Embedded DSLs are de ned
naturally within an environment that was meant for signi cant extension (e.g.,
language workbenches, languages with powerful quoting like MetaOCaml,
extensible compilers). External DSLs have foreign syntax and require
specifically developed tooling (e.g., embedded SQL in COBOL and 4GLs, LINQ in
C#, XPath and PCRE in all languages that support them). This particular
de nition of this dimension is heavily inspired by Renggli's work [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
{ Horizontal/Vertical. Horizontal DSLs, or languages speci c to a
horizontal domain, are those that are related to a speci c type of activity that can
be performed in any market sector (e.g., de ning documents, modelling
interactions, querying datasets). Vertical DSLs, sometimes also referred to as
business DSLs, are languages speci c to a certain market sector (e.g.,
insurance contracts, embedded systems, dance moves). This de nitions was
considered very early on, already by Kleppe [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
{ Target Audience. Some DSLs are intended to be powerful tools for
programmers to do more with less code (if APL can be seen as a DSL for array
processing, it will be this; any dialect of EBNF is also a perfect example: it
allows a fully trained expert to t a language de nition on a page). Some other
DSLs are speci cally targeting domain experts without any background in
computer science (many spreadsheets; languages made from established
notations like the musical notation).
{ Ecosystem. Anyone having trouble in Python, can post a question on the
Data Science Stack Exchange website. Anyone debugging or optimising a
SQL query, can post a question on the Database Administrators Stack
Exchange website. Either of those get 25 questions a day, most of which are
answered [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. For some of the less known DSLs, the rate of questions is
lower, and they remain unanswered longer. Some do not even have any
forum nor discussion board to go to. For the most obscure ones, even plain
web search does not return any hits. A similar spectrum can be formulated
for community size, tool support, compiler maintenance activities, etc|all
the things that general purpose language users take for granted, are in high
demand yet scarce availability for DSLs.
      </p>
      <p>
        Examples of statements made aware of such dimensions:
{ HTML is an external DSL, targeting developers, for a horizontal domain
of hypertext markup. Building such a DSL and the corresponding tooling
is an e ort which requires signi cantly resources and it is intended to be
fore-taken by the industry as a whole.
{ Simple internal DSLs can be developed within a few hours, with the intent
of making code more readable. They require minimal investment. They are
intended mostly for developers, and in the majority of cases the management
will not even be aware of their existence inside the organisation.
{ Vertical external DSLs directed to non-developers, can be transformative for
an organisation. They require the deployment of a signi cant e ort and need
the support of the whole organisation or a large unit, such as a department.
They are typically multi-year projects with far reaching consequences in
term of productivity. They require adequate planning as they need to be
supported on the long term. This particular kind of DSLs are probably the
least well-known by a broader audience. A relevant example of this particular
kind of DSL is described by Volter et al [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ].
      </p>
      <p>If we consider these examples, we can see that they solve very di erent
problems, they are intended to be used in di erent contexts, they require di erent
resources to be implemented, they bring di erent risks with them, and they
provide di erent bene ts. In other words, it is hard to see them as an homogeneous
category, from the point of view of the potential adopters. Some are expensive,
some are not, some can be built in an afternoon, others take years, some need to
be maintained for decades, others don't, for some it is easy to nd competencies,
for other is extremely di cult. As consequence hardly anything which can be
stated for one sub-category of DSLs, can be extended to the whole category of
DSLs. This could have contributed to the emerging of a very confused
understanding of DSLs among many practitioners, and this could have in turn limited
the di usion as the idea, as it is blurred and confused.</p>
      <p>In other words, the category \Domain-Speci c Languages" seem too abstract
for practitioners, while being perfectly useful for researchers. We could draw a
similarity with other broad categories such as \means of transportation". While
this term could be useful when discussing logistics or studying transportation,
this would not be a term that many users would consider when looking for
a solution to their problems, as it encompasses very di erent things such as
bicycles, trains, tanks and aeroplanes, which are used in very di erent contexts
to solve very di erent problems.</p>
      <p>
        Hence, instead of re ning it, we can try to completely abandon the term
\DSL", and leave it behind. Alternatives to consider, are:
{ Fluent Interfaces =) Internal DSLs, APIs, library packages: they are
characterised by requiring a very limited e ort, introducing limited risks,
and provide a limited value when compared to external DSLs, because of the
lack of all advantages provided by tooling. While the developers of such DSLs
themselves enjoy some comfortable IDEs, not all that confort and support is
propagated well to the DSLs they create. Take diagrams [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] as an example:
it is a popular Haskell package for creating vector graphics, and is being
advertised as a DSL. Does it pro t from the host language's strong type
system? Absolutely! Does it have support for drag-and-drop functionality or
for drawing tablet input? Absolutely not!
{ Technical Languages =) External DSLs for developers, often horizontal.
      </p>
      <p>These DSLs can have a very signi cant impact on the industry and
typically their creation and development is fore-taken by several large partners.</p>
      <p>
        Examples of Technical Languages are SQL, HTML, and CSS.
{ Knowledge Systems =) External executable DSLs for non-developers,
often vertical. This type of DSLs are typically developed by a single
organisation or a consortium of organisations operating in the same vertical space.
They require signi cant investments, and given they are intended for a
speci c vertical space, only a reduced number of users can bene t from them.
Therefore the investment requested to each adopting organisation is signi
cant. A key factor of this kind of DSLs is the creation of customised tooling:
besides editors, interpreters, simulators, diagram generators, and other
components are frequently developed and integrated in a comprehensive solution.
This is the kind of DSLs least widely known: unlike other kinds, such DSLs
are not typically shared outside the organisation which nanced them. An
example of such kind of DSL is the DSL created by the Dutch Tax and
Customs Administration for the de nition of tax calculations [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>In Table 1 we present the relation between the DSL dimensions we discussed
in section 4 and the DSL types we introduced here.</p>
      <p>As an example of how DSL types can also be useful, consider the discussion
on how risks a ect the adoption of a DSL. Di erent types of DSLs that we have
identi ed, are impacted very di erently by the risks perceived:
{ In the case of Fluent Interfaces the risks involved are limited, as the
investments necessary, and the bene ts provided.
{ In the case of Technical Languages, these languages are typically tackled
as large, industry-wide e orts. While the resources necessary to tackle such
projects are very large, the e ort is typically spread across multiple actors.
The actors typically involved in these initiatives have the resources needed
to counteract the risks involved.
{ In the case of Knowledge Systems, the risks faced are more signi cant
because the level of investment needed is high, and the number of adopters to
Internal (I)/ Horizontal (H)/ Developers (D)/
External (E) Vertical (V) Anyone (A)
DSL Type
share such risks is low. In addition to this, there is a problem speci c to this
kind of DSLs, and this the lack of examples which are publicly accessible.
We believe that the community should concentrate its e ort in mitigating
the risks for this type of DSLs. More speci cally:</p>
      <p>
        Lack of competence could be reduced by an e ort in education.
Under the umbrella of SLEBoK [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] a list of university courses teaching
DSLs has been created. This could help fostering collaborations among
teachers and possibly facilitate the creation of more courses on DSLs;
Lack of established vendors is a real problem, to which there is not
an immediate answer. Larger vendors would hopefully emerge as the
adoption of DSLs is increased;
Lack of adoption, is unfortunately a self-ful lling prophecy;
Fear of lock-in is a risk which can be reduced by working on
interoperability and the adoption of common standards, or at least the de nition
of tools to translate among the most common formats;
Bad prior experience could be counteracted by proper communication
of the di erences between DSLs and other similar technologies. E orts
to clarify how DSLs are presented are necessary, and in this paper we
present some ideas to move in that direction.
5
      </p>
    </sec>
    <sec id="sec-4">
      <title>Conclusion</title>
      <p>Speaking pessimistically, we can say that as a community of language designers,
we are failing to communicate all the possibilities and bene ts that DSLs and
the discipline of their engineering, can o er to practitioners. DSLs remain niche
solutions to problems experienced by people who are both already aware of them
and unafraid to venture towards them. In particular, metaprogrammers seem to
be a good target audience for selling DSLs to.</p>
      <p>In this paper, we tried to summarise the essence of the discussion that was
taking place during OOPSLE 2020, the workshop on Open and Original
Problems in Software Language Engineering. To substantiate some of the statements
and to facilitate consumption of this text by external readers, we added some
technical content, especially relating to the advantages of DSLs, that we
collected in section 2 from available literature; the two adoption problems of DSLs,
including a list of perceived risks of using them, in section 3; possible ways of
improving the terminology by either re ning or replacing the very term \DSLs",
in section 4. Our hope is that claims made here, can later be validated
experimentally, and proper corrections could be put in place by the community to
improve the level of adoption of language engineering techniques in the broader
eld of software engineering.</p>
    </sec>
    <sec id="sec-5">
      <title>Acknowledgement</title>
      <p>We would like to thank all the participants of the discussion which was held
as part of OOPSLE 2020. In particular, active participation in the discussion
was noticed and appreciated from: Jurriaan Hage, Markus Volter, Ralf Lammel,
Friedrich Steimann, and Mathieu Acher. We are also grateful to the organisers
and other attendees of the OOPSLE workshop.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Blasband</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>The DSL Misunderstanding</article-title>
          . https://www.linkedin.com/pulse/ dsl-misunderstanding
          <string-name>
            <surname>-</surname>
          </string-name>
          darius-blasband
          <source>/ (Jul</source>
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2. van Deursen,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Klint</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Visser</surname>
          </string-name>
          , J.:
          <article-title>Domain-speci c Languages: An Annotated Bibliography</article-title>
          .
          <source>SIGPLAN Notices</source>
          <volume>35</volume>
          (
          <issue>6</issue>
          ),
          <volume>26</volume>
          {36 (Jun
          <year>2000</year>
          ). https://doi.org/10.1145/352029.352035
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Gray</surname>
            , J., Fisher,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Consel</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Karsai</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mernik</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tolvanen</surname>
            ,
            <given-names>J.P.:</given-names>
          </string-name>
          <article-title>DSLs: The Good, the Bad, and the Ugly</article-title>
          . In: Companion to the
          <source>23rd ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications</source>
          . p.
          <volume>791</volume>
          {
          <fpage>794</fpage>
          . OOPSLA Companion '
          <volume>08</volume>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2008</year>
          ). https://doi.org/10.1145/1449814.1449863
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. JetBrains: MPS:
          <article-title>Meta Programming System</article-title>
          . https://www.jetbrains.com/mps (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Kleppe</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Software Language Engineering: Creating Domain-Speci c Languages Using Metamodels</article-title>
          .
          <string-name>
            <surname>Addison-Wesley Professional</surname>
          </string-name>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Lynch</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rothchild</surname>
          </string-name>
          , J.:
          <article-title>Beating the Street</article-title>
          . Simon &amp;
          <string-name>
            <surname>Schuster</surname>
          </string-name>
          (
          <year>1994</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Mernik</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heering</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sloane</surname>
            ,
            <given-names>A.M.</given-names>
          </string-name>
          :
          <article-title>When and How to Develop Domain-Speci c Languages</article-title>
          .
          <source>ACM Computing Surveys</source>
          <volume>37</volume>
          (
          <issue>4</issue>
          ),
          <volume>316</volume>
          {
          <fpage>344</fpage>
          (
          <year>2005</year>
          ). https://doi.org/10.1145/1118890.1118892
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8. MPS:
          <article-title>Client: Dutch Tax and Customs Administration (DTCA)</article-title>
          .
          <source>Tech. rep</source>
          .,
          <source>JetBrains</source>
          (
          <year>2014</year>
          ), https://resources.jetbrains.com/storage/products/mps/ docs/MPS_DTO_Case_Study.pdf
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Raincode</given-names>
            <surname>Labs</surname>
          </string-name>
          . https://www.raincodelabs.com
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Renggli</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Dynamic Language Embedding With Homogeneous Tool Support</article-title>
          .
          <source>Ph.D. thesis</source>
          , Universitat Bern (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Serebrenik</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mens</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Challenges in software ecosystems research</article-title>
          .
          <source>In: Proceedings of the 2015 European Conference on Software Architecture Workshops</source>
          . pp.
          <volume>1</volume>
          {
          <issue>6</issue>
          (
          <year>2015</year>
          ). https://doi.org/10.1145/2797433.2797475
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12. StackExchange: All Sites. https://stackexchange.com/sites?view=list (
          <year>2020</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. Volter, M.:
          <article-title>Fusing Modeling and Programming into Language-Oriented Programming | Our Experiences with MPS</article-title>
          . In: Margaria,
          <string-name>
            <given-names>T.</given-names>
            ,
            <surname>Ste</surname>
          </string-name>
          <string-name>
            <surname>en</surname>
          </string-name>
          , B. (eds.)
          <source>Proceedings of the Eighth International Symposium on Leveraging Applications of Formal Methods, Veri cation and Validation (ISoLA)</source>
          ,
          <source>Part I. Lecture Notes in Computer Science</source>
          , vol.
          <volume>11244</volume>
          , pp.
          <volume>309</volume>
          {
          <fpage>339</fpage>
          . Springer (
          <year>2018</year>
          ). https://doi.org/10.1007/978-3-
          <fpage>030</fpage>
          -03418-4 19
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. Volter,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Kolb</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>Birken</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            ,
            <surname>Tomassetti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Al</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Wiart</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            ,
            <surname>Wortmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Nordmann</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          :
          <article-title>Using Language Workbenches and Domain-Speci c Languages for Safety-Critical Software Development</article-title>
          .
          <source>Software and Systems Modeling</source>
          <volume>18</volume>
          (
          <issue>4</issue>
          ),
          <volume>2507</volume>
          {
          <fpage>2530</fpage>
          (
          <year>2019</year>
          ). https://doi.org/10.1007/s10270-018-0679-0
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15. Volter,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Visser</surname>
          </string-name>
          , E.:
          <article-title>Product Line Engineering Using Domain-Speci c Languages</article-title>
          .
          <source>In: Proceedings of the 15th International Software Product Line Conference</source>
          . pp.
          <volume>70</volume>
          {
          <fpage>79</fpage>
          .
          <string-name>
            <surname>IEEE</surname>
          </string-name>
          (
          <year>2011</year>
          ). https://doi.org/10.1109/SPLC.
          <year>2011</year>
          .25
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16. Volter,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Benz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Dietrich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            ,
            <surname>Engelmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            ,
            <surname>Helander</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Kats</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.C.L.</given-names>
            ,
            <surname>Visser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            ,
            <surname>Wachsmuth</surname>
          </string-name>
          , G.:
          <article-title>DSL Engineering: Designing, Implementing and Using Domain-Speci c Languages. dslbook</article-title>
          .org (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Wegeler</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gutzeit</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Destailleur</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dock</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Evaluating the Bene ts of Using Domain-Speci c Modeling Languages: An Experience Report</article-title>
          .
          <source>In: Proceedings of the 2013 ACM Workshop on Domain-Speci c Modeling (DSM)</source>
          . p.
          <volume>7</volume>
          {
          <fpage>12</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2013</year>
          ). https://doi.org/10.1145/2541928.2541930
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Wile</surname>
            ,
            <given-names>D.S.:</given-names>
          </string-name>
          <article-title>Supporting the DSL Spectrum</article-title>
          .
          <source>Journal of Computing and Information Technology</source>
          <volume>9</volume>
          (
          <issue>4</issue>
          ),
          <volume>263</volume>
          {
          <fpage>287</fpage>
          (
          <year>2001</year>
          ). https://doi.org/10.2498/cit.
          <year>2001</year>
          .
          <volume>04</volume>
          .01
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Yorgey</surname>
          </string-name>
          , B.: diagrams. https://archives.haskell.org/projects.haskell.org/ diagrams/ (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Zaytsev</surname>
          </string-name>
          , V.:
          <article-title>Parser Generation by Example for Legacy Pattern Languages</article-title>
          . In: Flatt,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Erdweg</surname>
          </string-name>
          , S. (eds.)
          <source>Proceedings of the 16th International Conference on Generative Programming: Concepts and Experience (GPCE)</source>
          . pp.
          <volume>212</volume>
          {
          <fpage>218</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2017</year>
          ). https://doi.org/10.1145/3136040.3136058
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Zaytsev</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          :
          <article-title>An Industrial Case Study in Compiler Testing</article-title>
          . In: Pearce,
          <string-name>
            <given-names>D.J.</given-names>
            ,
            <surname>Mayerhofer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            ,
            <surname>Steimann</surname>
          </string-name>
          ,
          <string-name>
            <surname>F</surname>
          </string-name>
          . (eds.)
          <source>Proceedings of the 11th International Conference on Software Language Engineering (SLE)</source>
          . pp.
          <volume>97</volume>
          {
          <fpage>102</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2018</year>
          ). https://doi.org/10.1145/3276604.3276619
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Zaytsev</surname>
          </string-name>
          , V. (Ed.):
          <article-title>Software Language Engineering Body of Knowledge</article-title>
          . http:// slebok.github.io (
          <year>2009</year>
          {
          <year>2020</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>