Git concepts reveal core approach to peer to peer data sharing
The Essence of Git: Concepts for P2P Replication
Distributed, Parallel, and Cluster Computing
Summary
Git is best known as a tool for keeping track of changes to code, but its design is based on a simple and elegant way to represent data and share it gradually between computers. The authors show that this design can be used for many applications beyond code management. They connect Git’s history tracking to well-known ideas in distributed computing and data consistency. They also compare Git’s structure to other peer-to-peer systems and suggest it might be broadly useful. Their discussion uses a design method that focuses on clear concepts.
What this means in practice
- •For software development teams: Build decentralized applications using Git’s data structures for managing incremental data sharing beyond version control.
- •For distributed system engineers: Use Git-like commit histories to design consistent peer-to-peer replication protocols informed by distributed algorithm theory.
A survey. It maps existing work.
Authors
Erick Lavoie
Abstract
Git is most commonly known as a decentralized version control system. Underneath the surface, the design of Git exhibits an elegant object model and incremental replication protocols that have been used to build a variety of applications that go much beyond version control. In this paper, we survey those applications and show how application concepts have been mapped to Git concepts to show the latter's generality. We also show the connection between the Git commit history and the theory of distributed algorithms and convergent replicated data structures, suggesting that it approaches their essence. We finally compare to current peer-to-peer frameworks to establish the level of abstraction of the Git object model and peek at its potential universality. Throughout, we frame our discussion using the \textit{conceptual design} approach proposed by Daniel Jackson.