Purposes, Concepts, Misfits, and a Redesign of Git

Santiago Perez De Rosso and Daniel Jackson: “Purposes, Concepts, Misfits, and a Redesign of Git“, SPLASH 2016.

Git is a widely used version control system that is powerful but complicated. Its complexity may not be an inevitable consequence of its power but rather evidence of flaws in its design. To explore this hypothesis, we analyzed the design of Git using a theory that identifies concepts, purposes, and misfits. Some well-known difficulties with Git are described, and explained as misfits in which underlying concepts fail to meet their intended purpose. Based on this analysis, we designed a reworking of Git (called Gitless) that attempts to remedy these flaws.

To correlate misfits with issues reported by users, we conducted a study of Stack Overflow questions. And to determine whether users experienced fewer complications using Gitless in place of Git, we conducted a small user study. Results suggest our approach can be profitable in identifying, analyzing, and fixing design problems.

This paper presents a detailed, well-founded critique of one of the most powerful, but frustrating, tools in widespread use today. A follow-up to earlier work published in 2013, it is distinguished from most other discussion of software design by three things:

  1. It clearly describes its design paradigm, which comprises concepts (the major elements of the user’s mental model of the system), purposes (which motivate the concepts), and misfits (which are instances where concepts do not satisfy purposes, or contradict one another).
  2. It lays out Git’s concepts and purposes, analyzes its main features in terms of them, and uses that analysis to identify mis-matches.
  3. Crucially, it then analyzes independent discussion of Git (on Stack Overflow) to see if users are stumbling over the misfits identified in step 2.

Source: : Purposes, Concepts, Misfits, and a Redesign of Git