Version Control Is for Your Data Too

Gowtham Kaki, KC Sivaramakrishnan, Suresh Jagannathan, Michael Wagner
2019 Summit on Advances in Programming Languages  
Programmers regularly use distributed version control systems (DVCS) such as Git to facilitate collaborative software development. The primary purpose of a DVCS is to maintain integrity of source code in the presence of concurrent, possibly conflicting edits from collaborators. In addition to safely merging concurrent non-conflicting edits, a DVCS extensively tracks source code provenance to help programmers contextualize and resolve conflicts. Provenance also facilitates debugging by letting
more » ... ogrammers see diffs between versions and quickly find those edits that introduced the offending conflict (e.g., via git blame). In this paper, we posit that analogous workflows to collaborative software development also arise in distributed software execution; we argue that the characteristics that make a DVCS an ideal fit for the former also make it an ideal fit for the latter. Building on this observation, we propose a distributed programming model, called carmot that views distributed shared state as an entity evolving in time, manifested as a sequence of persistent versions, and relies on an explicitly defined merge semantics to reconcile concurrent conflicting versions. We show examples demonstrating how carmot simplifies distributed programming, while also enabling novel workflows integral to modern applications such as blockchains. We also describe a prototype implementation of carmot that we use to evaluate its practicality. ACM Subject Classification Computing methodologies → Distributed programming languages; Software and its engineering → Software configuration management and version control systems; Software and its engineering → API languages
doi:10.4230/lipics.snapl.2019.8 dblp:conf/snapl/KakiSJ19 fatcat:gjltqhoxirhr3mj3cgqwrwa2sm