Version Control Is for Your Data Too

Authors Gowtham Kaki, KC Sivaramakrishnan, Suresh Jagannathan



PDF
Thumbnail PDF

File

LIPIcs.SNAPL.2019.8.pdf
  • Filesize: 0.67 MB
  • 18 pages

Document Identifiers

Author Details

Gowtham Kaki
  • Purdue University, West Lafayette, USA
KC Sivaramakrishnan
  • IIT Madras, Chennai, India
Suresh Jagannathan
  • Purdue University, West Lafayette, USA

Acknowledgements

We would like to thank Thomas Gazagnaire, Romain Calascibetta, and Zack Shipko for patiently assisting us with Irmin and OCaml-Git libraries. This material is based upon work supported by the National Science Foundation under Grant No. CCF-SHF 1717741 and the Air Force Research Lab under Grant No. FA8750-17-1-0006.

Cite AsGet BibTex

Gowtham Kaki, KC Sivaramakrishnan, and Suresh Jagannathan. Version Control Is for Your Data Too. In 3rd Summit on Advances in Programming Languages (SNAPL 2019). Leibniz International Proceedings in Informatics (LIPIcs), Volume 136, pp. 8:1-8:18, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2019)
https://doi.org/10.4230/LIPIcs.SNAPL.2019.8

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.

Subject Classification

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
Keywords
  • replication
  • distributed systems
  • version control

Metrics

  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    0
    PDF Downloads

References

  1. Peter Alvaro, Neil Conway, Joe Hellerstein, and William R. Marczak. Consistency Analysis in Bloom: a CALM and Collected Approach. In CIDR 2011, Fifth Biennial Conference on Innovative Data Systems Research, Asilomar, CA, USA, January 9-12, 2011, Online Proceedings, pages 249-260, 2011. Google Scholar
  2. Elli Androulaki, Artem Barger, Vita Bortnikov, Christian Cachin, Konstantinos Christidis, Angelo De Caro, David Enyeart, Christopher Ferris, Gennady Laventman, Yacov Manevich, Srinivasan Muralidharan, Chet Murthy, Binh Nguyen, Manish Sethi, Gari Singh, Keith Smith, Alessandro Sorniotti, Chrysoula Stathakopoulou, Marko Vukolić, Sharon Weed Cocco, and Jason Yellick. Hyperledger Fabric: A Distributed Operating System for Permissioned Blockchains. In Proceedings of the Thirteenth EuroSys Conference, EuroSys '18, pages 30:1-30:15, New York, NY, USA, 2018. ACM. URL: http://dx.doi.org/10.1145/3190508.3190538.
  3. Peter Bailis, Alan Fekete, Michael J. Franklin, Ali Ghodsi, Joseph M. Hellerstein, and Ion Stoica. Coordination Avoidance in Database Systems. Proc. VLDB Endow., 8(3):185-196, November 2014. URL: http://dx.doi.org/10.14778/2735508.2735509.
  4. Peter Bailis, Ali Ghodsi, Joseph M. Hellerstein, and Ion Stoica. Bolt-on Causal Consistency. In Proceedings of the 2013 ACM SIGMOD International Conference on Management of Data, SIGMOD '13, pages 761-772, New York, NY, USA, 2013. ACM. URL: http://dx.doi.org/10.1145/2463676.2465279.
  5. Valter Balegas, Nuno Preguiça, Rodrigo Rodrigues, Sérgio Duarte, Carla Ferreira, Mahsa Najafzadeh, and Marc Shapiro. Putting the Consistency back into Eventual Consistency. In Proceedings of the Tenth European Conference on Computer System, EuroSys '15, Bordeaux, France, 2015. URL: http://lip6.fr/Marc.Shapiro/papers/putting-consistency-back-EuroSys-2015.pdf.
  6. Ahmed Bouajjani, Constantin Enea, Rachid Guerraoui, and Jad Hamza. On Verifying Causal Consistency. In Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, POPL 2017, pages 626-638, New York, NY, USA, 2017. ACM. URL: http://dx.doi.org/10.1145/3009837.3009888.
  7. Sebastian Burckhardt, Alexandro Baldassin, and Daan Leijen. Concurrent Programming with Revisions and Isolation Types. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA '10, pages 691-707, New York, NY, USA, 2010. ACM. URL: http://dx.doi.org/10.1145/1869459.1869515.
  8. Sebastian Burckhardt, Manuel Fähndrich, Daan Leijen, and Benjamin P. Wood. Cloud Types for Eventual Consistency. In Proceedings of the 26th European Conference on Object-Oriented Programming, ECOOP'12, pages 283-307, Berlin, Heidelberg, 2012. Springer-Verlag. URL: http://dx.doi.org/10.1007/978-3-642-31057-7_14.
  9. Sebastian Burckhardt, Alexey Gotsman, Hongseok Yang, and Marek Zawirski. Replicated Data Types: Specification, Verification, Optimality. In Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL '14, pages 271-284, New York, NY, USA, 2014. ACM. URL: http://dx.doi.org/10.1145/2535838.2535848.
  10. Sebastian Burckhardt, Daan Leijen, Jonathan Protzenko, and Manuel Fähndrich. Global Sequence Protocol: A Robust Abstraction for Replicated Shared State. In Proceedings of the 29th European Conference on Object-Oriented Programming, ECOOP '15, Prague, Czech Republic, 2015. URL: http://research.microsoft.com/pubs/240462/gsp-tr-2015-2.pdf.
  11. Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall, and Werner Vogels. Dynamo: Amazon’s Highly Available Key-value Store. In Proceedings of Twenty-first ACM SIGOPS Symposium on Operating Systems Principles, SOSP '07, pages 205-220, New York, NY, USA, 2007. ACM. URL: http://dx.doi.org/10.1145/1294261.1294281.
  12. Seth Gilbert and Nancy Lynch. Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-tolerant Web Services. SIGACT News, 33(2):51-59, June 2002. URL: http://dx.doi.org/10.1145/564585.564601.
  13. Victor B. F. Gomes, Martin Kleppmann, Dominic P. Mulligan, and Alastair R. Beresford. Verifying Strong Eventual Consistency in Distributed Systems. Proc. ACM Program. Lang., 1(OOPSLA):109:1-109:28, October 2017. URL: http://dx.doi.org/10.1145/3133933.
  14. Alexey Gotsman, Hongseok Yang, Carla Ferreira, Mahsa Najafzadeh, and Marc Shapiro. 'Cause I'm Strong Enough: Reasoning About Consistency Choices in Distributed Systems. In Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2016, pages 371-384, New York, NY, USA, 2016. ACM. URL: http://dx.doi.org/10.1145/2837614.2837625.
  15. Gowtham Kaki, Kapil Earanky, KC Sivaramakrishnan, and Suresh Jagannathan. Safe Replication Through Bounded Concurrency Verification. Proc. ACM Program. Lang., 2(OOPSLA):164:1-164:27, October 2018. URL: http://dx.doi.org/10.1145/3276534.
  16. Martin Kleppmann and Alastair R. Beresford. A Conflict-Free Replicated JSON Datatype. IEEE Transactions on Parallel and Distributed Systems, PP, August 2016. URL: http://dx.doi.org/10.1109/TPDS.2017.2697382.
  17. Mohsen Lesani, Christian J. Bell, and Adam Chlipala. Chapar: Certified Causally Consistent Distributed Key-value Stores. In Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL '16, pages 357-370, New York, NY, USA, 2016. ACM. URL: http://dx.doi.org/10.1145/2837614.2837622.
  18. Cheng Li, João Leitão, Allen Clement, Nuno Preguiça, Rodrigo Rodrigues, and Viktor Vafeiadis. Automating the Choice of Consistency Levels in Replicated Systems. In Proceedings of the 2014 USENIX Conference on USENIX Annual Technical Conference, USENIX ATC'14, pages 281-292, Berkeley, CA, USA, 2014. USENIX Association. URL: http://dl.acm.org/citation.cfm?id=2643634.2643664.
  19. Cheng Li, Daniel Porto, Allen Clement, Johannes Gehrke, Nuno Preguiça, and Rodrigo Rodrigues. Making Geo-replicated Systems Fast As Possible, Consistent when Necessary. In Proceedings of the 10th USENIX Conference on Operating Systems Design and Implementation, OSDI'12, pages 265-278, Berkeley, CA, USA, 2012. USENIX Association. URL: http://dl.acm.org/citation.cfm?id=2387880.2387906.
  20. Wyatt Lloyd, Michael J. Freedman, Michael Kaminsky, and David G. Andersen. Don't Settle for Eventual: Scalable Causal Consistency for Wide-area Storage with COPS. In Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles, SOSP '11, pages 401-416, New York, NY, USA, 2011. ACM. URL: http://dx.doi.org/10.1145/2043556.2043593.
  21. 2019. OCaml Git Library. URL: https://opam.ocaml.org/packages/git.
  22. Nuno Preguica, Joan Manuel Marques, Marc Shapiro, and Mihai Letia. A Commutative Replicated Data Type for Cooperative Editing. In Proceedings of the 2009 29th IEEE International Conference on Distributed Computing Systems, ICDCS '09, pages 395-403, Washington, DC, USA, 2009. IEEE Computer Society. URL: http://dx.doi.org/10.1109/ICDCS.2009.20.
  23. 2019. CRDTs in Riak. URL: https://docs.basho.com/riak/kv/2.0.1/learn/concepts/crdts/.
  24. Marc Shapiro, Nuno Preguiça, Carlos Baquero, and Marek Zawirski. Conflict-Free Replicated Data Types. In Xavier Défago, Franck Petit, and Vincent Villain, editors, Stabilization, Safety, and Security of Distributed Systems, volume 6976 of Lecture Notes in Computer Science, pages 386-400. Springer Berlin Heidelberg, 2011. URL: http://dx.doi.org/10.1007/978-3-642-24550-3_29.
  25. KC Sivaramakrishnan, Gowtham Kaki, and Suresh Jagannathan. Declarative Programming over Eventually Consistent Data Stores. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2015, pages 413-424, New York, NY, USA, 2015. ACM. URL: http://dx.doi.org/10.1145/2737924.2737981.
  26. Paolo Viotti and Marko Vukolic. Consistency in Non-Transactional Distributed Storage Systems. CoRR, abs/1512.00168, 2015. URL: http://arxiv.org/abs/1512.00168.
  27. Jérôme Vouillon. Lwt: A Cooperative Thread Library. In Proceedings of the 2008 ACM SIGPLAN Workshop on ML, ML '08, pages 3-12, New York, NY, USA, 2008. ACM. URL: http://dx.doi.org/10.1145/1411304.1411307.
  28. James R. Wilcox, Doug Woos, Pavel Panchekha, Zachary Tatlock, Xi Wang, Michael D. Ernst, and Thomas Anderson. Verdi: A Framework for Implementing and Formally Verifying Distributed Systems. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '15, pages 357-368, New York, NY, USA, 2015. ACM. URL: http://dx.doi.org/10.1145/2737924.2737958.
Questions / Remarks / Feedback
X

Feedback for Dagstuhl Publishing


Thanks for your feedback!

Feedback submitted

Could not send message

Please try again later or send an E-mail