Cohesive and Isolated Development with Branches

  • Earl T. Barr
  • Christian Bird
  • Peter C. Rigby
  • Abram Hindle
  • Daniel M. German
  • Premkumar Devanbu
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7212)


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.


Branch Length Directory Distance Open Source Project Integration Work Version Control System 
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.


  1. 1.
    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)CrossRefGoogle Scholar
  2. 2.
    Berczuk, S.: Configuration Management Patterns. In: Third Annual Conference on Pattern Languages of Programs (1996)Google Scholar
  3. 3.
    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)Google Scholar
  4. 4.
    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)Google Scholar
  5. 5.
    Bowman, I.T., Holt, R.C., Brewster, N.V.: Linux as a case study: Its extracted software architecture. In: Proc. ICSE 1999 (1999)Google Scholar
  6. 6.
    Buffenbarger, J., Gruell, K.: A Branching/Merging Strategy for Parallel Software Development. System Config. Management (1999)Google Scholar
  7. 7.
    Cannon, B.: PEP 374: Choosing a distributed VCS for the Python project (2009),
  8. 8.
    Clatworthy, I.: Distributed version control — why and how. In: Open Source Developers Conference, OSDC 2007 (2007)Google Scholar
  9. 9.
    Creswell, J.: Research design: Qualitative, quantitative, and mixed methods approaches, 3rd edn. Sage Publications, Inc. (2009)Google Scholar
  10. 10.
    DeMarco, T., Lister, T.: Peopleware: productive projects and teams. Dorset House Publishing Co., Inc., New York (1987)Google Scholar
  11. 11.
    Estublier, J.: Software configuration management: a roadmap. In: Proc. of the Conf. on The future of Software Engineering. ACM (2000)Google Scholar
  12. 12.
    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)Google Scholar
  13. 13.
    KDE. Projects/MoveToGit - KDE TechBase (November 2009),
  14. 14.
    Kerner, S.M.: Subversion 1.7 released with some git-esque merging. (2011)Google Scholar
  15. 15.
    Ko, A.J., DeLine, R., Venolia, G.: Information needs in collocated software development teams. In: Proc. of the 29th ICSE. IEEE (2007)Google Scholar
  16. 16.
    LaToza, T.D., Venolia, G., DeLine, R.: Maintaining mental models: a study of developer work habits. In: Proc. of the 28th ICSE. ACM (2006)Google Scholar
  17. 17.
    Lindlof, T., Taylor, B.: Qualitative communication research methods. Sage (2002)Google Scholar
  18. 18.
    Magnusson, B., Asklund, U.: Fine grained version control of configurations in COOP/Orm. Software Configuration Management, 31–48 (1996)Google Scholar
  19. 19.
    Mens, T.: A state-of-the-art survey on software merging. IEEE Transactions on Software Engineering 28(5), 449–462 (2002)CrossRefGoogle Scholar
  20. 20.
    Koziarski, M.: Personal interview, April 5 (2009),
  21. 21.
    Sperber, M.: Personal Interview, April 3 (2009),
  22. 22.
    Parnin, C., Rugaber, S.: Resumption strategies for interrupted programming tasks. In: Proc. of 17th ICPC 2009. IEEE (2009)Google Scholar
  23. 23.
    Paul, R.: DVCS adoption is soaring among open source projects. ars technica, January 7 (2009)Google Scholar
  24. 24.
    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)CrossRefGoogle Scholar
  25. 25.
    Rocha, L.: GNOME to migrate to git (March 2009),
  26. 26.
    Sarma, A., Noroozi, Z., Van der Hoek, A.: Palantír: raising awareness among configuration management workspaces. In: Proc. of 25th ICSE (2003)Google Scholar
  27. 27.
    Turnbull, S.: Personal Interview, April 7 (2009),
  28. 28.
    van Solingen, R., Berghout, E., van Latum, F.: Interrupts: just a minute never is. IEEE Software 15(5), 97–103 (1998)CrossRefGoogle Scholar
  29. 29.
    Vance, S.: Advanced SCM branching strategies (1998),
  30. 30.
    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)Google Scholar
  31. 31.
    Weiss, R.S.: Learning From Strangers: The Art and Method of Qualitative Interview Studies. Free Press (November 1995)Google Scholar
  32. 32.
    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)Google Scholar
  33. 33.
    Zacchiroli, S.: (declared) VCS usage for Debian source pacakges (February 2011),
  34. 34.
    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)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Earl T. Barr
    • 1
  • Christian Bird
    • 2
  • Peter C. Rigby
    • 3
  • Abram Hindle
    • 4
  • Daniel M. German
    • 5
  • Premkumar Devanbu
    • 1
  1. 1.UC DavisDavisUSA
  2. 2.MicrosoftRedmondUSA
  3. 3.McGill UniversityMontealCanada
  4. 4.University of AlbertaEdmontonCanada
  5. 5.University of VictoriaVictoriaCanada

Personalised recommendations