Abstract
The adoption of distributed version control (DVC ), such as Git and Mercurial, in open-source software (OSS) projects has been explosive. Why is this and how are projects using DVC? This new generation of version control supports two important new features: distributed repositories and histories that preserve branches and merges. Through interviews with lead developers in OSS projects and a quantitative analysis of mined data from the histories of sixty project, we find that the vast majority of the projects now using DVC continue to use a centralized model of code sharing, while using branching much more extensively than before their transition to DVC. We then examine the Linux history in depth in an effort to understand and evaluate how branches are used and what benefits they provide. We find that they enable natural collaborative processes: DVC branching allows developers to collaborate on tasks in highly cohesive branches, while enjoying reduced interference from developers working on other tasks, even if those tasks are strongly coupled to theirs.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Atkins, D.L.: Version Sensitive Editing: Change History as a Programming Tool. In: Deng, T. (ed.) ECOOP 1998 and SCM 1998. LNCS, vol. 1439, pp. 146–157. Springer, Heidelberg (1998)
Berczuk, S.: Configuration Management Patterns. In: Third Annual Conference on Pattern Languages of Programs (1996)
Bird, C., Rigby, P.C., Barr, E.T., Hamilton, D.J., German, D.M., Devanbu, P.: The promises and perils of mining git. In: Proc. 6th MSR (2009)
Bird, C., Zimmermann, T., Teterev, A.: A Theory of Branches as Goals and Virtual Teams. In: Proceedings of the International Workshop on Cooperative and Human Aspects of Software Engineering (2011)
Bowman, I.T., Holt, R.C., Brewster, N.V.: Linux as a case study: Its extracted software architecture. In: Proc. ICSE 1999 (1999)
Buffenbarger, J., Gruell, K.: A Branching/Merging Strategy for Parallel Software Development. System Config. Management (1999)
Cannon, B.: PEP 374: Choosing a distributed VCS for the Python project (2009), http://www.python.org/dev/peps/pep-0374
Clatworthy, I.: Distributed version control — why and how. In: Open Source Developers Conference, OSDC 2007 (2007)
Creswell, J.: Research design: Qualitative, quantitative, and mixed methods approaches, 3rd edn. Sage Publications, Inc. (2009)
DeMarco, T., Lister, T.: Peopleware: productive projects and teams. Dorset House Publishing Co., Inc., New York (1987)
Estublier, J.: Software configuration management: a roadmap. In: Proc. of the Conf. on The future of Software Engineering. ACM (2000)
Jacky, J.-M.F., Estublier, J., Sanlaville, R.: Tool adoption issues in a very large software company. In: Proc. of 3rd Int. Workshop on Adoption-Centric Software Engineering (2003)
KDE. Projects/MoveToGit - KDE TechBase (November 2009), http://techbase.kde.org/Projects/MovetoGit
Kerner, S.M.: Subversion 1.7 released with some git-esque merging. developer.com (2011)
Ko, A.J., DeLine, R., Venolia, G.: Information needs in collocated software development teams. In: Proc. of the 29th ICSE. IEEE (2007)
LaToza, T.D., Venolia, G., DeLine, R.: Maintaining mental models: a study of developer work habits. In: Proc. of the 28th ICSE. ACM (2006)
Lindlof, T., Taylor, B.: Qualitative communication research methods. Sage (2002)
Magnusson, B., Asklund, U.: Fine grained version control of configurations in COOP/Orm. Software Configuration Management, 31–48 (1996)
Mens, T.: A state-of-the-art survey on software merging. IEEE Transactions on Software Engineering 28(5), 449–462 (2002)
Koziarski, M.: Personal interview, April 5 (2009), rubyonrails.org
Sperber, M.: Personal Interview, April 3 (2009), xemacs.org
Parnin, C., Rugaber, S.: Resumption strategies for interrupted programming tasks. In: Proc. of 17th ICPC 2009. IEEE (2009)
Paul, R.: DVCS adoption is soaring among open source projects. ars technica, January 7 (2009)
Perry, D.E., Siy, H.P., Votta, L.G.: Parallel changes in large-scale software development: an observational case study. ACM Trans. Softw. Eng. Methodol. 10(3), 308–337 (2001)
Rocha, L.: GNOME to migrate to git (March 2009), http://mail.gnome.org/archives/devel-announce-list/2009-March/msg00005.html
Sarma, A., Noroozi, Z., Van der Hoek, A.: PalantÃr: raising awareness among configuration management workspaces. In: Proc. of 25th ICSE (2003)
Turnbull, S.: Personal Interview, April 7 (2009), xemacs.org
van Solingen, R., Berghout, E., van Latum, F.: Interrupts: just a minute never is. IEEE Software 15(5), 97–103 (1998)
Vance, S.: Advanced SCM branching strategies (1998), http://www.vance.com/steve/perforce/Branching_Strategies.html
Viégas, F., Wattenberg, M., Dave, K.: Studying cooperation and conflict between authors with history flow visualizations. In: Proc. of the SIGCHI Conf. on Human Factors in Computing Systems. ACM (2004)
Weiss, R.S.: Learning From Strangers: The Art and Method of Qualitative Interview Studies. Free Press (November 1995)
Weißgerber, P., Neu, D., Diehl, S.: Small patches get in! In: Proc. of the 2008 Int. W. Conf. on Mining Software Repositories. ACM (2008)
Zacchiroli, S.: (declared) VCS usage for Debian source pacakges (February 2011), http://upsilon.cc/~zack/stuff/vcs-usage
Zeller, A.: Yesterday, My Program Worked. Today, It Does Not. Why? In: Wang, J., Lemoine, M. (eds.) ESEC/FSE 1999. LNCS, vol. 1687, pp. 253–267. Springer, Heidelberg (1999)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2012 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Barr, E.T., Bird, C., Rigby, P.C., Hindle, A., German, D.M., Devanbu, P. (2012). Cohesive and Isolated Development with Branches. In: de Lara, J., Zisman, A. (eds) Fundamental Approaches to Software Engineering. FASE 2012. Lecture Notes in Computer Science, vol 7212. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-28872-2_22
Download citation
DOI: https://doi.org/10.1007/978-3-642-28872-2_22
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-28871-5
Online ISBN: 978-3-642-28872-2
eBook Packages: Computer ScienceComputer Science (R0)