<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">How to Regain Equilibrium without Losing your Balance? Scenarios for Bx Deployment (Discussion Paper)</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">James</forename><surname>Mckinna</surname></persName>
							<affiliation key="aff0">
								<orgName type="department" key="dep1">LFCS</orgName>
								<orgName type="department" key="dep2">School of Informatics</orgName>
								<orgName type="institution">University of Edinburgh</orgName>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Perdita</forename><surname>Stevens</surname></persName>
							<affiliation key="aff0">
								<orgName type="department" key="dep1">LFCS</orgName>
								<orgName type="department" key="dep2">School of Informatics</orgName>
								<orgName type="institution">University of Edinburgh</orgName>
							</affiliation>
						</author>
						<title level="a" type="main">How to Regain Equilibrium without Losing your Balance? Scenarios for Bx Deployment (Discussion Paper)</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">10BE3EC1ACC4AB9D394B05C4755A03B8</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T07:37+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Much of the bx literature, especially that couched in terms of consistency restoration, presupposes a workflow based on strict sequentialisation of model updates, and in some cases explicitly via a centralised broker of shared state. Put another way: the underlying mathematical semantics of bx take little account of the deployment context for such artefacts, which, from a user's perspective, are typically concurrent and distributed. This discussion proposal invites discussion of the bx deployment context.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>This "short paper" is a proposal that the workshop have a space for discussing the following issue which we think needs more attention than it has had so far. We include some points for discussion, and a non-exhaustive list of relevant references; we hope that other points and references can be added during discussion, and perhaps a full paper may be produced in response.</p><p>Going back to Meertens <ref type="bibr" target="#b8">[Mee98,</ref><ref type="bibr" target="#b9">Mee05]</ref>, a bidirectional transformation or bx can be considered to be an artefact which embodies both a specification of consistency between two or more models, e.g. as a relation on a pair of model spaces, and a specification of how consistency should be restored. The latter is often -by Meertens, in the lens literature, in MDD settings including by the authors -presented via pure functions, the consistency restorers, which take one or more models as arguments, and return a result which is understood as a modified version of one of the arguments, intended to replace it. In other approaches, invoking a consistency restorer may directly edit the user's model, or may return an edit that could be applied to a model, rather than a full model.</p><p>We have in recent years developed approaches to such bx which make explicit the side-effecting -effectful -nature of the consistency restorers [ACG + 15, ASMG15]; in our approach, the user of the bx is presented with a monadic interface allowing get and set operations, instead of with pure functions such as − → R and ← − R . In particular, the monadic interface allows us to model explicitly the use of effects such as I/O or non-determinism in computing model revisions. Interestingly, our models seem, for mathematical tractability, to oblige us to consider each model as a derived view of a "central" -shared (even if hidden) -state space, similar to Johnson and Rosebrugh's recent work on spans of lenses <ref type="bibr" target="#b6">[JR14]</ref>.</p><p>All such approaches, however, change rather than solve the problem: when (if ever) does the user of the bx invoke these operations and what (if anything) do they have to do before they can continue with their real work? Suppose a bx engine implemented bx as presented in any of these ways; how should it be used? Perhaps this issue has not had as much attention as it should have done because of the connections with bidirectional programming, a rather different proposition from bidirectional transformation.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Points for discussion</head><p>1. The connection between bx and related concepts including version control systems, synchronizers and collaborative working systems can be both helpful and deeply confusing.</p><p>2. It can be helpful because most of us have extensive experience working with the latter, whether it is when we maintain copies of parts of our filesystem in more than one place, or when we collaborate on papers.</p><p>3. It is confusing because it tempts us to think in terms of "conflict", a very unhelpful notion for bx (to be deliberately provocative). The very notion of "conflict" between your model and mine presupposes that our models are supposed to be identical (at least in the part where we can observe conflict). We mean by the term something like: things that should be identical are not identical, must be made identical, and it is not clear which of the current things should "win".</p><p>4. Implicit or explicit is the presence of some kind of archive: the basic picture of consistency restoration has been augmented with auxiliary machinery such as generalised diff3 [KKP07].</p><p>5. But neither the "to be consistent is to be identical" view, nor the presence of an archive, is essential to talking about concurrent editing of two models.</p><p>6. People sometimes assume that in evaluating, say, − → R (m, n), we may assume that n is a model that was consistent with some earlier version of model m. No: nothing in the formalism requires this.</p><p>7. <ref type="bibr" target="#b3">[CGMS15]</ref> discussed the distinction between strong and weak versions of properties universally quantified over pairs of models, such as continuity. Essentially the strong form considers concurrent editing of the models, while the weak form does not. 9. In version control systems we are used to explicitly invoking operations, and we are familiar with the ways in which this can fail (e.g., minimise conflicts by always doing svn up (get) before you svn commit (set)), but we know that this will not always avoid conflict.</p><p>10. In cloud systems such as Dropbox, we do not explicitly invoke operations, but the systems' behaviour can be perplexing even when not broken <ref type="bibr" target="#b5">[HPAN15]</ref>.</p><p>11. If the bx is not history ignorant -and we know it is unlikely to be -then exactly when consistency is restored may materially affect the result. So perhaps we don't want it done invisibly in the background.</p><p>12. There is a tension between: I don't want to work for a long time on a model that is now inconsistent with your model, in case I am wasting effort; and, I don't want my flow broken by my tool telling me that something has changed in your model.</p><p>13. Is it acceptable for the bx engine to change part of my model that I'm not actually looking at right now, without telling me, in order to restore consistency?</p><p>14. What can be learned from categorisations such as [DGWC16, AC07]? Or from available (bx or roundtripping) tools?</p><p>15. There is a distinction between models having been concurrently edited, and the user requiring both models to be changed in order to restore consistency, studied in <ref type="bibr" target="#b10">[XSHT09]</ref> for example. What are the implications, for practical scenarios, of our choices?</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>8.</head><label></label><figDesc>In MDD, if I am working on a model which is connected via a bx to your model, what kind of control do I want over when consistency is restored, and what can I have in principle? What are the implications for a usable tool?</figDesc></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Design space of heterogeneous synchronization</title>
		<author>
			<persName><forename type="first">Michal</forename><surname>Antkiewicz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Krzysztof</forename><surname>Czarnecki</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Generative and Transformational Techniques in Software Engineering II, International Summer School, GTTSE 2007</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">Ralf</forename><surname>Lämmel</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Joost</forename><surname>Visser</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">João</forename><surname>Saraiva</surname></persName>
		</editor>
		<meeting><address><addrLine>Braga, Portugal</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2007">July 2-7, 2007. 2007</date>
			<biblScope unit="volume">5235</biblScope>
			<biblScope unit="page" from="3" to="46" />
		</imprint>
	</monogr>
	<note>Revised Papers</note>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Notions of bidirectional computation and entangled state monads</title>
		<author>
			<persName><forename type="first">James</forename><surname>Acg + ; Faris Abou-Saleh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jeremy</forename><surname>Cheney</surname></persName>
		</author>
		<author>
			<persName><forename type="first">James</forename><surname>Gibbons</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Perdita</forename><surname>Mckinna</surname></persName>
		</author>
		<author>
			<persName><surname>Stevens</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Mathematics of Program Construction -12th International Conference, MPC 2015</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">Ralf</forename><surname>Hinze</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Janis</forename><surname>Voigtländer</surname></persName>
		</editor>
		<meeting><address><addrLine>Königswinter, Germany</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2015-07-01">June 29 -July 1, 2015. 9129. 2015</date>
			<biblScope unit="page" from="187" to="214" />
		</imprint>
	</monogr>
	<note>Proceedings</note>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Coalgebraic aspects of bidirectional computation</title>
		<author>
			<persName><forename type="first">Faris</forename><surname>Abou-Saleh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">James</forename><surname>Mckinna</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jeremy</forename><surname>Gibbons</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">4th International Workshop on Bidirectional Transformations</title>
				<editor>
			<persName><forename type="first">Alcino</forename><surname>Cunha</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Ekkart</forename><surname>Kindler</surname></persName>
		</editor>
		<imprint>
			<date type="published" when="2015-07">July 2015</date>
			<biblScope unit="page" from="16" to="30" />
		</imprint>
	</monogr>
	<note>CEUR Workshop Proceedings</note>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Towards a principle of least surprise for bidirectional transformations</title>
		<author>
			<persName><forename type="first">James</forename><surname>Cheney</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jeremy</forename><surname>Gibbons</surname></persName>
		</author>
		<author>
			<persName><forename type="first">James</forename><surname>Mckinna</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Perdita</forename><surname>Stevens</surname></persName>
		</author>
		<ptr target="WS.org" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of Bx 2015</title>
		<title level="s">CEUR Workshop Proceedings. CEUR-</title>
		<meeting>Bx 2015</meeting>
		<imprint>
			<date type="published" when="2015">2015</date>
			<biblScope unit="volume">1396</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">A three-dimensional taxonomy for bidirectional model synchronization</title>
		<author>
			<persName><forename type="first">Zinovy</forename><surname>Diskin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Hamid</forename><surname>Gholizadeh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Arif</forename><surname>Wider</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Krzysztof</forename><surname>Czarnecki</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Systems and Software</title>
		<imprint>
			<biblScope unit="volume">111</biblScope>
			<biblScope unit="page" from="298" to="322" />
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<title level="m" type="main">Mysteries of dropbox</title>
		<author>
			<persName><forename type="first">John</forename><surname>Hughes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Benjamin</forename><forename type="middle">C</forename><surname>Pierce</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Thomas</forename><surname>Arts</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ulf</forename><surname>Norell</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2015-10">October 2015. January 2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<title level="m" type="main">Spans of lenses</title>
		<author>
			<persName><forename type="first">Michael</forename><surname>Johnson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Robert</forename><surname>Rosebrugh</surname></persName>
		</author>
		<ptr target="http://ceur-ws.org/Vol-1133/#bx" />
		<imprint>
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">A formal investigation of diff3</title>
		<author>
			<persName><forename type="first">Sanjeev</forename><surname>Khanna</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Keshav</forename><surname>Kunal</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Benjamin</forename><forename type="middle">C</forename><surname>Pierce</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Foundations of Software Technology and Theoretical Computer Science (FSTTCS)</title>
				<editor>
			<persName><forename type="first">Arvind</forename></persName>
		</editor>
		<editor>
			<persName><forename type="first">Prasad</forename></persName>
		</editor>
		<imprint>
			<date type="published" when="2007-12">December 2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<title level="m" type="main">Designing constraint maintainers for user interaction</title>
		<author>
			<persName><forename type="first">Lambert</forename><surname>Meertens</surname></persName>
		</author>
		<ptr target="http://www.kestrel.edu/home/people/meertens/" />
		<imprint>
			<date type="published" when="1998-06">June 1998</date>
		</imprint>
	</monogr>
	<note>Unpublished manuscript</note>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Designing constraint maintainers for user interaction</title>
		<author>
			<persName><forename type="first">Lambert</forename><surname>Meertens</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">editor, Third Workshop on Programmable Structured Documents</title>
				<editor>
			<persName><forename type="first">Shin-Cheng</forename><surname>Mu</surname></persName>
		</editor>
		<imprint>
			<date type="published" when="2005">2005</date>
			<biblScope unit="page" from="1" to="3" />
		</imprint>
		<respStmt>
			<orgName>PSD Laboratory, Tokyo University</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Supporting parallel updates with bidirectional model transformations</title>
		<author>
			<persName><forename type="first">Yingfei</forename><surname>Xiong</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Hui</forename><surname>Song</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Zhenjiang</forename><surname>Hu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Masato</forename><surname>Takeichi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Theory and Practice of Model Transformations, Second International Conference, ICMT 2009</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">Richard</forename><forename type="middle">F</forename><surname>Paige</surname></persName>
		</editor>
		<meeting><address><addrLine>Zurich, Switzerland</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2009">June 29-30, 2009. 2009</date>
			<biblScope unit="volume">5563</biblScope>
			<biblScope unit="page" from="213" to="228" />
		</imprint>
	</monogr>
	<note>Proceedings</note>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
