<!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>Optimistic Versioning for Conflict-tolerant Collaborative Blended Modeling</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Joeri Exelmans</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jakob Pietron</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alexander Raschke</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Hans Vangheluwe</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Matthias Tichy</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science, University of Antwerp - Flanders Make</institution>
          ,
          <addr-line>Antwerp</addr-line>
          ,
          <country country="BE">Belgium</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Institute of Software Engineering and Programming Languages, Ulm University</institution>
          ,
          <addr-line>Ulm</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Optimistic versioning is a key component in supporting collaborative workflows. Text-based versioning has been widely adopted for versioning code, but in model-driven engineering, dealing with visual concrete syntaxes, new methods are required. In the case of blended modeling, a mixture of both textual and visual syntaxes, concurrently editable and synchronizable, introduces additional challenges. We propose a type of operation-based versioning to record not only user edits, but also bi-directional change propagations between concrete and abstract syntax. This way we can support blended modeling with layout continuity, and flexible handling of missing information (e. g., layout information) when rendering changes from abstract to concrete syntax. In addition, the proposed versioning approach enables collaborative conflict resolution by allowing partial conflict resolution, thus deferring a final resolution.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;versioning</kwd>
        <kwd>blended modeling</kwd>
        <kwd>conflict-tolerant</kwd>
        <kwd>operation-based</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Model-driven engineering (MDE) has become widely accepted as prime enabler for the creation
of increasingly complex software-intensive systems. In addition to graphical models, various
model representations such as tabular or textual ones are typically used. The flexible use of
diferent representations (concrete syntax (CS)) for one and the same model (abstract syntax
(AS)) is also called blended modeling. The ability to switch between diferent representations
allows the user to choose the one that is most useful and eficient for the current task [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>
        Complex systems are developed in teams in both asynchronous and synchronous collaborative
environments [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Synchronous collaboration has gained importance since the Corona pandemic,
where developers who normally develop models in the same room, e. g. on whiteboards, were
forced to use (online) tools for collaboration [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>In addition to the complexity of concurrency in (a)synchronous collaboration (i.e. branching,
merging, and dealing with conflicts), an orthogonal problem of blended modeling is the challenge
of (multi-)CS and AS synchronization. For instance, there may be concurrency on the same
l
ivsau SC</p>
      <p>S
A
initial version</p>
      <p>:State
initial version
l
tua S state {}
txe C initial version</p>
      <p>concurrent
rse add rountangle
a
p</p>
      <p>:State
parent</p>
      <p>:State
readd state, parent link
d
n
e
r
(omitted from example)</p>
      <p>merge
red remove rountangle
n
e
r</p>
      <p>no conflict
:State
rse remove state
a
p
state {}
erase text</p>
      <p>:State
merge parent</p>
      <p>:State
conflict (require-delete)
merge
(omitted from example)</p>
      <p>Legend
creation
deletion
or on diferent CSs that are being synchronized (see Figure 1 and Section 2). Another issue of
blended modeling is that of missing information when switching between CS representations.
For example, if an element is added in textual syntax, the position of the new corresponding
element in a graphical syntax remains unknown.</p>
      <p>
        Versioning systems for “code” (e.g. git [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], SVN [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]) are only suited for recording textual CS.
Model versioning systems attempt to overcome this limitation by recording, comparing and
merging instead at the level of the AS. Only a single (visual) CS is assumed to exist, with a 1:1
mapping between CS and AS elements. This hinders support for blended modeling.
      </p>
      <p>To overcome this limitation, we propose to combine operation-based versioning with
incremental bi-directional change propagation to enable (a) arbitrary mappings between CS and AS,
with traceability between CS and AS, (b) blended modeling with layout continuity and flexible
handling of missing (layout) information, and (c) reuse of CS editing environments for diferent
languages. Additionally, as part of our operation-based versioning approach, we propose a new
way to persist merge conflicts, to allow recording of the steps taken in conflict resolution.</p>
      <p>
        Our approach should not be confused with projectional editing [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], where CS operations
directly impact the AS without using a parser. On the contrary, we allow arbitrary CS/AS
mappings, increasing the flexibility for the modeler and ultimately the usability of the modeling
environment [
        <xref ref-type="bibr" rid="ref7 ref8">7, 8</xref>
        ].
      </p>
      <p>The remainder of the paper is structured as follows. In Section 2, we introduce a running
example that is used to illustrate our proposed solution presented in Section 3. Section 4
discusses related work and Section 5 concludes with an outlook on future work.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Running Example</title>
      <p>To illustrate our approach, we introduce a (visual) CS and AS for a very limited subset of
the Statecharts formalism. On the CS side, we have 2D drawings of rountangles (rounded
rectangles) with geometries. On the AS side, we can have State objects, between which a
“parent” association exists (every State can have 1 parent). The correspondence relation between
CS and AS is as follows: There exists a one-to-one mapping between rountangles and State
objects, and whenever a rountangle is geometrically inside another, a parent link between their
Visual CS Editor</p>
      <p>Visual CS
Metamodel</p>
      <p>Language-independent components
depends on
Versioning Data Structure</p>
      <p>History Graph</p>
      <p>Language-specific components
Correspondence depends on AS Metamodel</p>
      <p>Metamodel
depends on depends on</p>
      <p>Parser Renderer</p>
      <p>Legend</p>
      <p>Explained in
this paper
Future work
Textual CS Editor</p>
      <p>Textual CS
Metamodel
synchronize
synchronize</p>
      <p>Dependency Graph
read append</p>
      <p>Collaboration Service
corresponding State objects must exist. Additionally, we assume that there is a textual CS, that
we do not describe here as it does not add additional insight.</p>
      <p>Figure 1 shows evolving CS and AS models. Initially, we have a version  of a visual CS
model with a single rountangle,  of the corresponding AS model with a single State, and
 the corresponding textual CS model. Then, concurrently, a change happens to the visual
and textual CS models. In the visual model, an inner rountangle is added (producing ′ )
and, concurrently, in the textual model, some text is erased (producing ′′ ). Both changes
could be propagated (parsed) to the AS, and subsequently rendered to the other CS. How do we
represent these changes, and how do we merge them? We intuitively understand that there will
be a merge conflict, at least at the level of the AS: a State object is being deleted, while at the
same time, it is the target of a newly created parent link.</p>
      <p>There may be many meaningful ways to resolve such a conflict, but this is not our focus
here. In this paper the main focus is on recording (concurrent) changes and (concurrent) change
propagations, on and between CS and AS.</p>
      <p>Note that in the remainder of this paper, we assume that text removal in ′′ has already
been parsed to produce ′′. This way, we can focus on the visual CS and the AS, which are
suficient to explain bi-directional change propagation (the main building block of blended
modeling), combined with concurrency.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Solution</title>
      <p>We introduce a set of components that can become part of a collaboration architecture. Their
role in a possible architecture is shown in Figure 2.</p>
      <p>
        We explicitly distinguish between language-specific and language-independent components.
In our approach, CS and AS are separate, evolving models, each conforming to their own
metamodel, as proposed by Van Tendeloo [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. AS metamodels will always be language-specific,
e.g. specific to Statecharts. CS metamodels (and their editors) will often be language-independent.
For instance, a metamodel for vector graphics drawings may serve as a CS meta model for both
Statecharts and Petri Nets. Users only interact directly with a model through a CS. Obviously,
the definition of a mapping between CS and AS will be language-specific. In our approach, this
mapping consists of a correspondence metamodel, and a parser and renderer function. We will
explain these concepts, and specify an interface for parser and renderer functions.
      </p>
      <p>The language-independent component collaboration service is left underspecified. Among its
Rountangle</p>
      <p>1</p>
      <p>Geometry
+ x: float
+ y: float
+ width: float
+ height: float</p>
      <p>CorrState</p>
      <p>2
CorrParent</p>
      <p>State</p>
      <p>parent
0..1</p>
      <p>1
+ constraint: "no parent link cycles"
+ constraint: "the parent link referred to by CorrParent must connect the
2 States referred to by the same CorrParent"
many tasks is synchronization of CS editors with evolving CS models, (networked)
synchronization between collaborators, and synchronization between CS and AS models. For the latter,
it invokes the parser and renderer functions. This service uses the versioning data structure to
record the edit history of models. We will explain this component, and why it is especially well
suited for blended modeling.</p>
      <p>The components presented in this paper are deployment-independent. For instance, the
versioning data structure could be deployed centrally or decentrally.</p>
      <sec id="sec-3-1">
        <title>3.1. Incremental parsing and rendering</title>
        <p>A change to a CS may cause corresponding changes to the AS. Change propagation from CS
to AS is called parsing. Subsequently, this change to the AS may cause changes to other CSs.
Change propagation from AS to CS is called rendering1.</p>
        <p>Parsing and rendering must happen incrementally for several reasons: The first reason is
performance (not having to parse/render from scratch after every change). The second reason is
layout continuity when rendering a visual update (not regenerating a new layout from scratch,
which would be confusing to users familiar with an existing layout). The third reason is that in a
multi-user collaboration scenario, propagating concurrent changes must cause new concurrent
changes (instead of new concurrent models), that can be merged accurately and eficiently.</p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Correspondence model</title>
        <p>The user only interacts with a model through a CS, so any information (e. g., inconsistencies)
from the AS or semantic level must also be visualized in the CS. CS and AS can relate to each
other in nontrivial ways, and inferring this information a posteriori would be complex, and
nondeterministic (more than one solution). We therefore persist traceability information between
CS and AS elements, and keep it up-to-date, every time changes are propagated.</p>
        <p>
          We persist traceability information between one CS and one AS model in a correspondence
model, an idea taken from triple graph grammars (TGGs) [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. For any pair of CS and AS
metamodels that can be synchronized, a correspondence metamodel must be defined. This
1Van Tendeloo uses the terms “comprehension” and “perceptualization” instead of “parsing” and “rendering”,
resp. We find “parsing” and “rendering” more intuitive.
conforms to
parent version
contains
initial
user-edited
parsed / rendered
merged
model
version
metamodel contains all types of the CS and AS metamodels that it relates to, and also the
diferent correspondence object types, that associate CS to AS types. At the instance level, a
correspondence model includes one CS and one AS model (it acts as an “overlay” on a (, )
model pair), and a set of correspondence objects between their elements.
        </p>
        <p>Running example: Figure 3 shows the metamodels (MM) for “the AS of the CS” (  ,
in blue), the AS (  , in red) and the correspondence ( ). The correspondence
MM includes the elements of the CS and AS MMs, and defines two correspondence object
types (CorrState and CorrParent). CorrState relates one CS rountangle to one AS State, and
CorrParent relates two CS rountangles with geometrical enclosure to a parent link between
their corresponding AS States.</p>
        <p>Note that although we adopt some ideas from TGGs, we do not require change propagation
rules to be specified as TGGs - our approach is neutral with respect to rule specicfiation, and
rules may even be specified imperatively.</p>
      </sec>
      <sec id="sec-3-3">
        <title>3.3. Persistence of (propagated) changes</title>
        <p>
          Instances of CS, AS, and correspondence models evolve. We rely on an underlying versioning
system (explained in Section 3.4) to persist every change in each of these models
(operationbased versioning [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]). A change may be the efect of an edit operation, or a propagated change
(ultimately traceable to an edit operation). Changes can be replayed, so in essence, after every
change, a permanent and immutable version is created.
        </p>
        <p>Running example: Figure 4 shows the three metamodels from Figure 3 at the top. Below, we
see a history graph of the model versions from Figure 1, and their conformance to the meta-level.
We saw that ′ and ′′ were produced by concurrent user edits. In our history graph,
we simply record these model versions, and the relation to their parent version ( and
 , respectively). Parsing and rendering only produces new model versions. Parsing ′
produces ′ and ′, and rendering ′′ produces ′′ and ′′. All pairs (′, ′′)
are concurrent, and when merged, produce model ′′′ (with  ∈ { , , }).</p>
        <p>We will now explain our versioning approach in more detail. We will see what precisely
makes up a model version, how we persist changes, how we relate changes to CS and AS to
each other, and how we detect conflicts.</p>
        <p>&lt;&lt;enumeration&gt;&gt; 1 type
DependencyKind</p>
      </sec>
      <sec id="sec-3-4">
        <title>3.4. Versioning Data Structure</title>
        <p>
          In this section, we present a new and application-agnostic versioning approach. Our approach
can be classified as operation-based according to Brosch et al. [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], meaning that we persist
changes between versions, instead of persisting snapshots of versions. Snapshots can be
reconstructed by replaying changes. By persisting changes, we do not have to perform difing ,
a complex and error-prone process. Persisting changes also enables persisting traceability
information between propagated changes and user edits, which is crucial in order to support
incremental parsing and rendering.
        </p>
        <p>Our versioning approach consists of two data structures, called History Graph and Delta
Graph. We will first explain the Delta Graph, which consists of deltas and dependency links
between them.</p>
        <p>Deltas. A delta (colored in green) records a change to a model. A delta may be caused by
a user edit, or a propagated change (model synchronization). We only record the efect of the
change (i. e., atomic CRUD operations on model elements), as opposed to the cause (e.g. the edit
command). Rcording the cause as well may have advantages for edit history comprehensibility
and analysis [12, 13], but this is not our focus. Deltas are transactional, meaning that they are
either fully applied to the model, or not at all.</p>
        <p>Dependencies. Deltas can depend on the efect of other deltas. We persist these dependencies
between deltas in a directed, acyclic and append-only Dependency Graph in order to eficiently
detect conflicts between deltas, as we will discuss later. Dependencies can be of three diferent
types: update, require, and delete.</p>
        <p>Figure 6 shows the Dependency Graphs for CS, AS, and correspondence of our running
example. Delta 1 results in the creation of the outer rountangle. Further, there is delta 2,
that creates the inner rountangle. The two deltas do not depend on each other and can, therefore,
be applied to the model in any order, producing ′ . However, delta 3 deletes the outer
rountangle, and in consequence, 3 has a delete dependency on 1. If there were a delta
 (not part of our running example - only for illustrative purposes) that resizes the outer
rountangle, it would have an update dependency on 1. The third type, require, occurs when
a delta requires the existence of an element created by an other delta without updating the
required element itself, e.g., when connecting an edge to an element, as in 2.
&lt;update&gt;</p>
        <p>&lt;delete&gt;
:  create outer rountangle
:  create inner rountangle
:  delete outer rountangle
: resize outer rountangle
&lt;require&gt;
&lt;delete&gt;
&lt;require&gt;</p>
        <p>&lt;delete&gt;
: create outer rountangle, state
: create inner rountangle, state
          + parent link
: delete outer rountangle, state
: create outer state
: create inner state
       + parent link to outer state
: delete outer state
 Legend</p>
        <p>Version</p>
        <sec id="sec-3-4-1">
          <title>Delta</title>
        </sec>
        <sec id="sec-3-4-2">
          <title>Delta contained in version</title>
        </sec>
        <sec id="sec-3-4-3">
          <title>Overlap Dependency Inclusion</title>
          <p>
            Conflicts. Two deltas that share a dependency on the same model element are conflicting if at
least one of the deltas alters that model element. Conflict types are update-update, update-delete,
and require-delete [
            <xref ref-type="bibr" rid="ref11">11</xref>
            ].
          </p>
          <p>Continuing our running example, deltas 1 and 2 are independent and not conflicting,
because they do not depend on a common delta. In consequence, they can both be part of the
model state without any Conflict as it is the case in ′ . However,  (update geometry of
outer rountangle) and 3 (delete outer rountangle) depend concurrently on the same model
element 1 and are, consequently, in an update-delete conflict as indicated in orange color in
Figure 6 on the left.</p>
          <p>While the Dependency Graph imposes a partial order on the execution of deltas to obtain a
valid state, it does not contain any information about the actual order in which deltas were
added (or omitted, explained later) by diferent collaborators, altering the model state. Moreover,
we want to be able to point to specific model versions. We therefore introduce the History Graph,
which contains versions and their (partial) order.</p>
          <p>Versions. A version (colored in various shades of purple), is a (possibly empty) set of deltas,
that when replayed, produces a model state. In a version, all dependencies of all contained
deltas must also be contained, a property called left-closedness in the theory of Event Structures
[14]. The order of versions is persisted in a History Graph, which is also directed, acyclic
and append-only. Versions refer to their predecessor(s) by parent links, whose semantics are
identical to parent links in git.</p>
          <p>Figure 4 of our running example already showed a History Graph, with branching into
:State
OR</p>
          <p>OR
concurrent versions (′ and ′′) and merging (′′′). Figure 6 visualizes the diferent versions
as sets of deltas.</p>
          <p>The diference between any two versions  and  is simply a set of added deltas ( ∖ ) and
a set of removed deltas ( ∖ ). Versions can be trivially merged by taking the union of their
deltas, which preserves left-closedness.</p>
          <p>Superpositions. Versions are allowed to contain conflicting deltas. This way, conflicting
states are not just temporary, in-memory phenomena during the merge process, but persistent,
which has two advantages: (1) We can record not just the occurence, but also steps taken in
the resolution of the conflict (as a sequence of versions). This may be valueable information.
(2) Conflicts are non-blocking, and the modeler can continue working on non-conflicting parts
of the model.</p>
          <p>We use the term superposition for versions containing conflict(s) (reference to quantum
physics), because the version can be interpreted as containing all possible conflict resolutions.
A conflict (= a pair of deltas) is resolved by excluding from the next version at least one of the
conflicting deltas (and its dependants). Possibly a new delta is introduced, replacing both of the
conflicting deltas.</p>
          <p>In Figure 6, the version ′′′ is in a superposition, because it contains deltas 2 and 3 in
a require-delete conflict. The possible (non-conflicting) versions contained in the superposition
are {1} × { 2, 3, 1 , 2 , ...}, where  is a new (e.g. manually added) delta that
replaces both conflicting deltas.</p>
          <p>Conflicts in versions can be visualized by presenting the efects of non-conflicting deltas in a
side-by-side view. Figure 7 shows ′′ and  in their the superposition.</p>
        </sec>
      </sec>
      <sec id="sec-3-5">
        <title>3.5. Parsing and rendering interface</title>
        <p>We now define an interface for the parsing and rendering behavior. Parsing and rendering does
not alter models in-place, and their only efect is that they produce new model versions. We
specify their interfaces as pure functions (i.e. functions without side-efects, that only have read
access to their inputs) that return the newly produced model versions. Purity keeps us honest,
forcing us to be explicit about all inputs, and guaranteeing that results are repeatable, which
has benefits in distributed environments: For instance, in live collaboration on the same CS
model, all users could parse the model locally (to reduce latency), while guaranteeing that their
results are identical.</p>
        <p>In order to parse incrementally, the parsing and rendering functions need access to the
most recent correspondence model, and to the respective CS or AS changes. As output, a new
correspondence model is produced, which includes a new AS or CS model, respectively.</p>
        <p>Running example: In our example, the inputs and outputs are as follows:</p>
        <p>(, ( , ′ )) = (′, ′)
(, (, ′′), * ) = (′′, ′′ )
where  is the diference (i.e. added, removed elements) between two model versions, which
we can easily compute from our deltas. In the rendering function, the asterisk * denotes the
possibility of having additional parameters, which we will motivate in the next section.</p>
        <p>The types of parsing errors that can occur are specific to both CS and AS, so we feel that they
should be defined on the level of the correspondence metamodel. When a parsing error occurs,
an object describing the error should be created in the returned correspondence model.</p>
      </sec>
      <sec id="sec-3-6">
        <title>3.6. Dealing with missing information</title>
        <p>Rendering is usually non-deterministic in the sense that an AS model can be mapped correctly
onto many CS models, due to missing information (e.g. about layout). An automated rendering
function can however only produce a single result, which may not always match the user’s
intention (which ultimately remains unknown to the computer). Therefore, we believe we must
support human interaction in rendering. We see several complementary ways to support this.</p>
        <p>First, the rendering function could have additional input parameters, such as a random seed or
a layout heuristic to optimize, that tweak the result. We could further present a number of
prerendered solutions to choose from, based on frequently chosen parameter values. Furthermore,
after rendering, the user can make manual improvements in the CS model. Perhaps a feature in
the CS editor to “freeze” the AS (guaranteeing that the user cannot accidentally alter the AS
while altering the CS) could be beneficial here. This would be easy to implement since we know
when a CS change causes a AS change. Finally, by relying on versioning to record everything,
changes do not have to be rendered (or parsed) immediately. For instance, in a scenario where a
Statechart is being edited through a textual syntax, (interactively) rendering the visual syntax
may be postponed until the visual syntax is actually opened. In the end, empirical study should
point out preferred workflows. Our work can become a basis for such study.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Related Work</title>
      <p>
        For space reasons, we limit ourselves in the following to model versioning approaches. A
comprehensive overview of this topic by Brosch et al. can be found in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Various (overlapping)
definitions of conflicts and/or inconsistencies are given in the literature. Mens [ 15] distinguishes
syntactic, structural, and semantic conflicts, but also calls all of them inconsistencies. Taentzer et
al. provide in [16] a precise formal definition of conflicts based on graph theory. They introduce
the terms state-based and operation-based conflict (not to be mixed up with state-based vs.
operation-based versioning approaches). Our definition of conflict matches the latter.
      </p>
      <p>Brosch et al. present in [17, 18] a taxonomy of conflicts together with a visualization of the
diferent conflicts (conflict diagram). In this taxonomy, conflicts are either “overlapping changes”
(competing changes, similar to our “conflicts”) or (constraint) “violations”. The overall approach
is based on a tight coupling between AS and CS, but is extensible with language-specific features.
In the graph transformation rules applied for conflict detection and resolution, only the elements
of the AS are considered and also only (abstract) elements of the conflict diagram are generated.
Layout problems arising during the rendering process of the conflict diagram are partially solved
using simple heuristics preserving layout continuity. Layout conflicts in the original model
are only handled in the simplest way by just preserving the layout of the merging user. More
complex layout problems are not considered (and even cannot due to the restriction to the level
of AS).</p>
      <p>In contrast to this approach, we explicitly distinguish between CS and AS and thus, are able
to detect and handle conflicts more precisely. In addition, due to our loose coupling of CS and
AS via a correspondence model, we directly support blended modeling environments which
is not the case in the AMOR project [19]. The proposed “conflict-tolerant merging of models”
[13] by Wieland et al. is enabled by design in our approach including the information about
“how this conflict was resolved and who was responsible for the resolution decision” [ 13]. The
persistence of all (conflicting) deltas together with meta-information of the delta author fulfills
this requirement.</p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], van Tendeloo et al. present a more flexible framework for collaborative model
development with a clear separation of CS and AS, each corresponding to their own metamodel. Our
underlying idea of a flexible, language-independent modeling environment that supports the
indeterminacy needed for blended modeling is based on this work [20]. The problem with van
Tendeloo’s framework is that it leaves open when and how the synchronization of CS and AS
can and should be done. Our approach attempts to bridge this gap.
      </p>
      <p>The work of Pietron et al. [12] presents an operation-based versioning system propagating
user-performed edit operations. Compared to the approach in the course of this paper, their
work focuses mainly on the AS and does not support multiple CS and their synchronization.
Some CS-related operations, such as updating the layout of an element, are supported but lack
a clear distinction from AS-related operations.</p>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion</title>
      <p>We presented a set of components and interfaces for collaborative modeling environments
supporting CS reuse and blended modeling through loose CS/AS coupling, and bi-directional
synchronization. By explicitly versioning CS, AS, and their correspondence, we can distinguish
between conflicts on each of these levels, and synchronizations can happen asynchronously or
even be postponed, which is especially useful when dealing with missing information while
rendering. By allowing versions with unresolved conflicts to be persisted, we support deferred
resolution of merge conflicts in a collaborative way, as suggested by Wieland et al. [13].</p>
      <p>Currently, we are working on a formal, yet abstract description of a conflict and inconsistency
detection algorithm and its demonstration in a prototypical web-based implementation of such
a modeling environment. Another future research direction is the consideration of multiple
layers between CS and AS with increasing abstraction levels (insideness, connectedness relation,
etc.), to allow even more CS reuse between languages.</p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgments</title>
      <p>Author J. Exelmans is an SB PhD fellow at FWO (1S70622N). Author J. Pietron is partly funded
by the project GENIAL!, which is partly funded by the German Federal Ministry of Education
and Research (BMBF) within the research programme ICT 2020 (reference number: 16ES0875).
for Model-Driven Engineering, volume LNCS 7320, Springer, Berlin, Heidelberg, 2012, pp.
336–398. doi:10.1007/978-3-642-30982-3_10.
[12] J. Pietron, F. Füg, M. Tichy, An operation-based versioning approach for synchronous and
asynchronous collaboration in graphical modeling tools, in: L. Iovino, L. M. Kristensen
(Eds.), STAF 2021 Workshop Proceedings, volume 2999 of CEUR Workshop Proceedings,
CEUR-WS.org, 2021, pp. 88–89. URL: http://ceur-ws.org/Vol-2999/fpvmdata4mdepaper3.
pdf.
[13] K. Wieland, P. Langer, M. Seidl, M. Wimmer, G. Kappel, Turning Conflicts into
Collaboration, Computer Supported Cooperative Work (CSCW) 22 (2013) 181–240.
doi:10.1007/s10606-012-9172-4.
[14] G. Winskel, An introduction to event structures, in: J. W. de Bakker, W. P. de Roever,
G. Rozenberg (Eds.), Linear Time, Branching Time and Partial Order in Logics and Models
for Concurrency, School/Workshop, Noordwijkerhout, The Netherlands, May 30 - June 3,
1988, Proceedings, volume 354 of Lecture Notes in Computer Science, Springer, 1988, pp.
364–397. doi:10.1007/BFb0013026.
[15] T. Mens, A state-of-the-art survey on software merging, IEEE Transactions on Software</p>
      <p>Engineering 28 (2002) 449–462. doi:10.1109/TSE.2002.1000449.
[16] G. Taentzer, C. Ermel, P. Langer, M. Wimmer, Conflict Detection for Model Versioning
Based on Graph Modifications, in: H. Ehrig, A. Rensink, G. Rozenberg, A. Schürr (Eds.),
Graph Transformations, Lecture Notes in Computer Science, Springer, Berlin, Heidelberg,
2010, pp. 171–186. doi:10/dcjxkr.
[17] P. Brosch, M. Seidl, M. Wimmer, G. Kappel, Conflict visualization for evolving UML models,</p>
      <p>J. Object Technol. 11 (2012) 2: 1–30. doi:10.5381/jot.2012.11.3.a2.
[18] P. Brosch, Conflict Resolution in Model Versioning, Ph.D. thesis, Vienna University of</p>
      <p>Technology, Vienna, 2012. URL: https://publik.tuwien.ac.at/files/PubDat_208975.pdf.
[19] AMOR — Adaptable Model Versioning, 2009. URL: http://modelversioning.org/, last visited:
10/05/2022.
[20] L. Nachreiner, A. Raschke, M. Stegmaier, M. Tichy, CouchEdit: A Relaxed Conformance
Editing Approach, in: Proceedings of the 23rd ACM/IEEE International Conference on
Model Driven Engineering Languages and Systems: Companion Proceedings (MODELS-C),
ACM, 2020, pp. 1–5. doi:10.1145/3417990.3421401.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>F.</given-names>
            <surname>Ciccozzi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Tichy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Vangheluwe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Weyns</surname>
          </string-name>
          , Blended Modelling - What, Why and How,
          <source>in: 2019 ACM/IEEE 22nd International Conference on Model Driven Engineering Languages and Systems Companion (MODELS-C)</source>
          ,
          <year>2019</year>
          , pp.
          <fpage>425</fpage>
          -
          <lpage>430</lpage>
          . doi:
          <volume>10</volume>
          .1109/ MODELS-C.
          <year>2019</year>
          .
          <volume>00068</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>S.</given-names>
            <surname>Abrahão</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Bourdeleau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B. H. C.</given-names>
            <surname>Cheng</surname>
          </string-name>
          , S. Kokaly,
          <string-name>
            <given-names>R. F.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Störrle</surname>
          </string-name>
          ,
          <string-name>
            <surname>J. Whittle,</surname>
          </string-name>
          <article-title>User experience for model-driven engineering: Challenges and future directions</article-title>
          ,
          <source>in: 20th ACM/IEEE International Conference on Model Driven Engineering Languages and Systems, MODELS</source>
          <year>2017</year>
          , IEEE,
          <year>2017</year>
          , pp.
          <fpage>229</fpage>
          -
          <lpage>236</lpage>
          . doi:
          <volume>10</volume>
          .1109/MODELS.
          <year>2017</year>
          .
          <volume>5</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>I.</given-names>
            <surname>David</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Aslam</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Faridmoayer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            <surname>Malavolta</surname>
          </string-name>
          , E. Syriani,
          <string-name>
            <given-names>P.</given-names>
            <surname>Lago</surname>
          </string-name>
          ,
          <article-title>Collaborative modeldriven software engineering: A systematic update</article-title>
          ,
          <source>in: 24th International Conference on Model Driven Engineering Languages and Systems, MODELS</source>
          <year>2021</year>
          , IEEE,
          <year>2021</year>
          , pp.
          <fpage>273</fpage>
          -
          <lpage>284</lpage>
          . doi:
          <volume>10</volume>
          .1109/MODELS50736.
          <year>2021</year>
          .
          <volume>00035</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <source>[4] git Version Control System</source>
          ,
          <year>2022</year>
          . URL: https://git-scm.com/, last visited:
          <volume>10</volume>
          /05/
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Apache</given-names>
            <surname>Subversion</surname>
          </string-name>
          ,
          <year>2022</year>
          . URL: https://subversion.apache.org/, last visited:
          <volume>10</volume>
          /05/
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>T.</given-names>
            <surname>Berger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Völter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. P.</given-names>
            <surname>Jensen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Dangprasert</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Siegmund</surname>
          </string-name>
          ,
          <article-title>Eficiency of projectional editing: A controlled experiment</article-title>
          ,
          <source>in: Proceedings of the 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE)</source>
          , ACM, New York, NY, USA,
          <year>2016</year>
          , p.
          <fpage>763</fpage>
          -
          <lpage>774</lpage>
          . doi:
          <volume>10</volume>
          .1145/2950290.2950315.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>B.</given-names>
            <surname>Nuseibeh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Easterbrook</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Russo</surname>
          </string-name>
          ,
          <article-title>Making inconsistency respectable in software development</article-title>
          ,
          <source>Journal of Systems and Software</source>
          <volume>58</volume>
          (
          <year>2001</year>
          )
          <fpage>171</fpage>
          -
          <lpage>180</lpage>
          . doi:
          <volume>10</volume>
          .1016/ S0164-
          <volume>1212</volume>
          (
          <issue>01</issue>
          )
          <fpage>00036</fpage>
          -
          <lpage>X</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>E.</given-names>
            <surname>Guerra</surname>
          </string-name>
          , J. de Lara,
          <article-title>On the Quest for Flexible Modelling</article-title>
          ,
          <source>in: Proceedings of the 21th ACM/IEEE International Conference on Model Driven Engineering Languages and Systems (MODELS)</source>
          ,
          <source>MODELS '18</source>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA,
          <year>2018</year>
          , pp.
          <fpage>23</fpage>
          -
          <lpage>33</lpage>
          . doi:
          <volume>10</volume>
          . 1145/3239372.3239376.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Y. V.</given-names>
            <surname>Tendeloo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Vangheluwe</surname>
          </string-name>
          ,
          <article-title>Unifying model- and screen sharing</article-title>
          ,
          <source>IEEE 27th International Conference on Enabling Technologies: Infrastructure for Collaborative Enterprises (WETICE)</source>
          (
          <year>2018</year>
          )
          <fpage>127</fpage>
          -
          <lpage>132</lpage>
          . doi:
          <volume>10</volume>
          .1109/WETICE.
          <year>2018</year>
          .
          <volume>00031</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A.</given-names>
            <surname>Schürr</surname>
          </string-name>
          ,
          <article-title>Specification of graph translators with triple graph grammars</article-title>
          , in: E. W. Mayr, G. Schmidt, G. Tinhofer (Eds.),
          <source>Graph-Theoretic Concepts in Computer Science</source>
          , Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>1995</year>
          , pp.
          <fpage>151</fpage>
          -
          <lpage>163</lpage>
          . doi:
          <volume>10</volume>
          .1007/3-540-59071-4_
          <fpage>45</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>P.</given-names>
            <surname>Brosch</surname>
          </string-name>
          , G. Kappel,
          <string-name>
            <given-names>P.</given-names>
            <surname>Langer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Seidl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Wieland</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Wimmer</surname>
          </string-name>
          , An Introduction to Model Versioning, in: M.
          <string-name>
            <surname>Bernardo</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          <string-name>
            <surname>Cortellessa</surname>
            ,
            <given-names>A</given-names>
          </string-name>
          . Pierantonio (Eds.), Formal Methods
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>