Header menu link for other important links
X
Version control is for your data too
Published in Schloss Dagstuhl- Leibniz-Zentrum fur Informatik GmbH, Dagstuhl Publishing
2019
Volume: 136
   
Abstract
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 programmers 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. © Gowtham Kaki, KC Sivaramakrishan, and Suresh Jagannathan.
About the journal
JournalLeibniz International Proceedings in Informatics, LIPIcs
PublisherSchloss Dagstuhl- Leibniz-Zentrum fur Informatik GmbH, Dagstuhl Publishing
ISSN18688969
Open AccessNo
Concepts (12)
  •  related image
    Computer programming
  •  related image
    Groupware
  •  related image
    Semantics
  •  related image
    COLLABORATIVE SOFTWARE DEVELOPMENT
  •  related image
    DISTRIBUTED PROGRAMMING MODEL
  •  related image
    DISTRIBUTED SHARED STATE
  •  related image
    Distributed systems
  •  related image
    DISTRIBUTED VERSION CONTROL SYSTEMS
  •  related image
    Prototype implementations
  •  related image
    Replication
  •  related image
    VERSION CONTROL
  •  related image
    Software design