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
Recommendations
Purposes, concepts, misfits, and a redesign of git
OOPSLA 2016: Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and ApplicationsGit 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 ...
Teaching Git on the Side: Version Control System as a Course Platform
ITiCSE '15: Proceedings of the 2015 ACM Conference on Innovation and Technology in Computer Science EducationThe ability to use version control systems is a highly desired skill in the software industry and the need to teach it has been recognized in the literature. Git, and other version control systems, have previously been used by instructors in classrooms ...
What's wrong with git?: a conceptual design analysis
Onward! 2013: Proceedings of the 2013 ACM international symposium on New ideas, new paradigms, and reflections on programming & softwareIt is commonly asserted that the success of a software development project, and the usability of the final product, depend on the quality of the concepts that underlie its design. Yet this hypothesis has not been systematically explored by researchers, ...







Comments