Abstract
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.
Supplemental Material
Available for Download
Gitless's source code, binaries, and documentation; material necessary to reproduce the user study; the Stack Overflow questions analyzed; and an OVA Virtual Machine with Gitless installed
- B. Appleton, S. P. Berczuk, R. Cabrera, and R. Orenstein. Streamed lines: Branching patterns for parallel software development. 1998.Google Scholar
- E. T. Barr, C. Bird, P. C. Rigby, A. Hindle, D. M. German, and P. Devanbu. Cohesive and isolated development with branches. In Proceedings of the International Conference on Fundamental Approaches to Software Engineering. Springer, April 2012. Google Scholar
Digital Library
- S. Bennett. 10 things I hate about git, 2012.Google Scholar
- M. Biazzini, M. Monperrus, and B. Baudry. On analyzing the topology of commit histories in decentralized version control systems. In Software Maintenance and Evolution (ICSME), 2014 IEEE International Conference on, pages 261–270, Sept 2014. doi: 10.1109/ICSME.2014.48. Google Scholar
Digital Library
- C. Bird and T. Zimmermann. Assessing the value of branches with what-if analysis. In Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering, FSE ’12, pages 45:1– 45:11, New York, NY, USA, 2012. ACM. ISBN 978- 1-4503-1614-9. doi: 10.1145/2393596.2393648. Google Scholar
Digital Library
- C. Brindescu, M. Codoban, S. Shmarkatiuk, and D. Dig. How do centralized and distributed version control systems impact software changes? In Proceedings of the 36th International Conference on Software Engineering, ICSE 2014, pages 322–333, New York, NY, USA, 2014. ACM. ISBN 978- 1-4503-2756-5. doi: 10.1145/2568225.2568322. Google Scholar
Digital Library
- F. P. Brooks. The Mythical Man-Month: Essays on Software Engineering. Addison-Wesley Professional, 1995. ISBN 978-0-201-83595-3. Google Scholar
Digital Library
- F. P. Brooks. The Design of Design: Essays from a Computer Scientist. Addison-Wesley Professional, 2010. ISBN 978-0- 201-36298-5. Google Scholar
Digital Library
- S. Chacon and B. Straub. Pro Git. Apress, 2 edition, 2014. ISBN 978-1484200773. Google Scholar
Digital Library
- L. Church, E. Söderberg, and E. Elango. A case of computational thinking: The subtle effect of hidden dependencies on the user experience of version control. 2014. PPIG 2014 - 25th Annual Workshop.Google Scholar
- B. de Alwis and J. Sillito. Why are software projects moving from centralized to decentralized version control systems? In Proceedings of the 2009 ICSE Workshop on Cooperative and Human Aspects on Software Engineering, CHASE ’09, pages 36–39, Washington, DC, USA, 2009. Google Scholar
Digital Library
- IEEE Computer Society. ISBN 978-1-4244-3712-2. doi: 10.1109/CHASE.2009.5071408.Google Scholar
- S. Garfinkel, D. Weise, and S. Strassmann. The UNIX Hater’s Handbook: The Best of UNIX-Haters On-line Mailing Reveals Why UNIX Must Die! IDG Books Worldwide, Inc., June 1994. ISBN 978-1-56884-203-5.Google Scholar
- G. Gousios, M. Pinzger, and A. v. Deursen. An exploratory study of the pull-based software development model. In Proceedings of the 36th International Conference on Software Engineering, ICSE 2014, pages 345–355, New York, NY, USA, 2014. ACM. ISBN 978-1-4503-2756-5. doi: 10.1145/2568225.2568260. Google Scholar
Digital Library
- T. R. G. Green and M. Petre. Usability analysis of visual programming environments: a “cognitive dimensions” framework. Journal of Visual Languages & Computing, 7(2): 131–174, 1996.Google Scholar
Cross Ref
- A. Henderson and J. Johnson. Conceptual Models: Core to Good Design. Synthesis Lectures on Human-Centered Informatics. Morgan & Claypool Publishers, 2011. ISBN 978-1608457496. Google Scholar
Digital Library
- D. Jackson. Towards a theory of conceptual design for software. In 2015 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!), Onward! 2015, pages 282–296, New York, NY, USA, 2015. ACM. ISBN 978-1-4503- 3688-8. doi: 10.1145/2814228.2814248. Google Scholar
Digital Library
- Y. Jiang, B. Adams, and D. M. German. Will my patch make it? and how fast?: Case study on the linux kernel. In Proceedings of the 10th Working Conference on Mining Software Repositories, MSR ’13, pages 101–110, Piscataway, NJ, USA, 2013. IEEE Press. ISBN 978-1-4673-2936-1. Google Scholar
Digital Library
- J. Loeliger and M. McCullough. Version Control with Git: Powerful Tools and Techniques for Collaborative Software Development. O’Reilly Media, second edition, 2012. ISBN 978-1-4493-1638-9. Google Scholar
Digital Library
- K. Mu¸slu, C. Bird, N. Nagappan, and J. Czerwonka. Transition from centralized to decentralized version control systems: A case study on reasons, barriers, and outcomes. In Proceedings of the 36th International Conference on Software Engineering, ICSE 2014, pages 334–344, New York, NY, USA, 2014. ACM. ISBN 978-1-4503-2756-5. doi: 10.1145/2568225.2568284. Google Scholar
Digital Library
- J. Nielsen and R. Molich. Heuristic evaluation of user interfaces. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, CHI ’90, pages 249–256, New York, NY, USA, 1990. ACM. ISBN 0- 201-50932-6. doi: 10.1145/97243.97281. Google Scholar
Digital Library
- B. O’Sullivan. Mercurial: The Definitive Guide. O’Reilly Media, 2009. ISBN 978-0596800673. Google Scholar
Digital Library
- S. Perez De Rosso and D. Jackson. What’s wrong with git? a conceptual design analysis. In Proceedings of the 2013 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software, Onward! 2013, pages 37–52, New York, NY, USA, 2013. ACM. ISBN 978-1-4503-2472-4. doi: 10.1145/2509578.2509584. Google Scholar
Digital Library
- S. Phillips, J. Sillito, and R. Walker. Branching and merging: An investigation into current version control practices. In Proceedings of the 4th International Workshop on Cooperative and Human Aspects of Software Engineering, CHASE ’11, pages 9–15, New York, NY, USA, 2011. ACM. ISBN 978-1-4503-0576-1. doi: 10.1145/1984642.1984645. Google Scholar
Digital Library
- C. M. Pilato, B. Collins-Sussman, and B. W. Fitzpatrick. Version Control with Subversion. O’Reilly Media, 2008. ISBN 0596510330. Google Scholar
Digital Library
- B. Pollack. Unorthodocs: Abandon your DVCS and return to sanity, 2015.Google Scholar
- P. C. Rigby, E. T. Barr, C. Bird, P. Devanbu, and D. M. German. What effect does distributed version control have on oss project organization? In Proceedings of the 1st International Workshop on Release Engineering, RELENG ’13, pages 29–32, Piscataway, NJ, USA, 2013. Google Scholar
Digital Library
- IEEE Press. ISBN 978-1-4673-6441-6.Google Scholar
- C. Rodríguez-Bustos and J. Aponte. How distributed version control systems impact open source software projects. In Proceedings of the 9th IEEE Working Conference on Mining Software Repositories, MSR ’12, pages 36–39, Piscataway, NJ, USA, 2012. IEEE Press. ISBN 978-1-4673-1761-0. Google Scholar
Digital Library
- 2664452.Google Scholar
- C. Walrad and D. Strom. The importance of branching models in scm. Computer, 35(9):31–38, Sep 2002. ISSN 0018-9162. Google Scholar
Digital Library
- doi: 10.1109/MC.2002.1033025.Google Scholar
Index Terms
Purposes, concepts, misfits, and a redesign of git






Comments