Software Practitioner Perspectives on Merge Conflicts and Resolutions

Merge conflicts occur when software practitioners need to work in parallel and are inevitable in software development. Tool builders and researchers have focused on the prevention and resolution of merge conflicts, but there is little empirical knowledge about how practitioners actually approach and perform merge conflict resolution. Without such knowledge, tool builders might be building on wrong assumptions and researchers might miss opportunities for improving the state of the art.We conducted semi-structured interviews of 10 software practitioners across 7 organizations, including both open-source and commercial projects. We identify the key concepts and perceptions from practitioners, which we then validated via a survey of 162 additional practitioners.We find that practitioners are directly impacted by their perception of the complexity of the conflicting code, and may alter the timeline in which to resolve these conflicts, as well as the methods employed for conflict resolution based upon that initial perception. Practitioners' perceptions alter the impact of tools and processes that have been designed to preemptively and efficiently resolve merge conflicts. Understanding whether practitioners will react according to standard use cases is important when creating human-oriented tools to support development processes.

[1]  Thomas D. LaToza,et al.  Maintaining mental models: a study of developer work habits , 2006, ICSE.

[2]  Charles R. Symons,et al.  Function Point Analysis: Difficulties and Improvements , 1988, IEEE Trans. Software Eng..

[3]  Robert DeLine,et al.  Information Needs in Collocated Software Development Teams , 2007, 29th International Conference on Software Engineering (ICSE'07).

[4]  Ralph E. Johnson,et al.  Refactoring-Aware Configuration Management for Object-Oriented Programs , 2007, 29th International Conference on Software Engineering (ICSE'07).

[5]  Arie van Deursen,et al.  Supporting Developers' Coordination in the IDE , 2015, CSCW.

[6]  Brian P. Bailey,et al.  Software history under the lens: A study on why and how developers examine it , 2015, 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[7]  Dongmei Zhang,et al.  How do software engineers understand code changes?: an exploratory study in industry , 2012, SIGSOFT FSE.

[8]  Bertrand Meyer,et al.  Awareness and Merge Conflicts in Distributed Software Development , 2014, 2014 IEEE 9th International Conference on Global Software Engineering.

[9]  Catarina Costa,et al.  TIPMerge: recommending experts for integrating changes across branches , 2016, SIGSOFT FSE.

[10]  Margaret M. Burnett,et al.  Putting information foraging theory to work: Community-based design patterns for programming tools , 2016, 2016 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[11]  Anita Sarma,et al.  Cassandra: Proactive conflict minimization through optimized task scheduling , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[12]  David Herron,et al.  Function Point Analysis: Measurement Practices for Successful Software Projects , 2000 .

[13]  Danny Dig,et al.  How do centralized and distributed version control systems impact software changes? , 2014, ICSE.

[14]  Lawrence R. Ness,et al.  Are We There Yet - Data Saturation in Qualitative Research (TQR Published).pdf , 2015 .

[15]  Walter F. Tichy,et al.  Extensible language-aware merging , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[16]  Georgios Gousios,et al.  Work practices and challenges in pull-based development: the contributor's perspective , 2015, ICSE.

[17]  Margaret M. Burnett,et al.  Applying attention investment to end-user programming , 2002, Proceedings IEEE 2002 Symposia on Human Centric Computing Languages and Environments.

[18]  Paul Dourish,et al.  "Breaking the code", moving between private and public work in collaborative software development , 2003, GROUP.

[19]  Thomas Fritz,et al.  Using information fragments to answer the questions developers ask , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[20]  S. Berg Snowball Sampling—I , 2006 .

[21]  John L. Campbell,et al.  Coding In-depth Semistructured Interviews , 2013 .

[22]  Christian Bird,et al.  Assessing the value of branches with what-if analysis , 2012, SIGSOFT FSE.

[23]  Bin Li,et al.  What Information in Software Historical Repositories Do We Need to Support Software Maintenance Tasks? An Approach Based on Topic Model , 2015, Computer and Information Science.

[24]  James D. Herbsleb,et al.  Communication networks in geographically distributed software development , 2008, CSCW.

[25]  Tom Mens,et al.  A State-of-the-Art Survey on Software Merging , 2002, IEEE Trans. Software Eng..

[26]  Katsuhisa Maruyama,et al.  Supporting Merge Conflict Resolution by Using Fine-Grained Code Change History , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[27]  Gail C. Murphy,et al.  Answering conceptual queries with Ferret , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[28]  David F. Redmiles,et al.  An empirical study of software developers' management of dependencies and changes , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[29]  Gerald M. Weinberg,et al.  Quality Software Management Volume 1: Systems Thinking , 1991 .

[30]  G. Finnerty Qualitative Research Practice. A Guide for Social Science Students and Researchers , 2003 .

[31]  Michele Lanza,et al.  Syde: a tool for collaborative software development , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[32]  Esteban Walter Gonzalez Clua,et al.  Niche vs. breadth: Calculating expertise over time through a fine-grained analysis , 2015, 2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[33]  Georgios Gousios,et al.  Work Practices and Challenges in Pull-Based Development: The Integrator's Perspective , 2014, ICSE.

[34]  D Gopher,et al.  Switching tasks and attention policies. , 2000, Journal of experimental psychology. General.

[35]  Timothy Lethbridge,et al.  The relevance of software documentation, tools and technologies: a survey , 2002, DocEng '02.

[36]  André van der Hoek,et al.  Palantir: enhancing configuration management systems with workspace awareness to detect and resolve emerging conflicts , 2008 .

[37]  Chen Ding,et al.  Quantifying the cost of context switch , 2007, ExpCS '07.

[38]  J. Hart [Qualitative methods]. , 2000, Recherche en soins infirmiers.

[39]  William G. Griswold,et al.  Mining Software Contracts for Software Evolution , 2014, 2014 IEEE International Conference on Software Maintenance and Evolution.

[40]  Michele Lanza,et al.  On the nature of commits , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering - Workshops.

[41]  Norman E. Fenton,et al.  Quantitative Analysis of Faults and Failures in a Complex Software System , 2000, IEEE Trans. Software Eng..

[42]  Jane Cleland-Huang,et al.  Cold-Start Software Analytics , 2016, 2016 IEEE/ACM 13th Working Conference on Mining Software Repositories (MSR).

[43]  Michael W. Godfrey,et al.  Automatic classication of large changes into maintenance categories , 2009, 2009 IEEE 17th International Conference on Program Comprehension.

[44]  Yuriy Brun,et al.  Proactive detection of collaboration conflicts , 2011, ESEC/FSE '11.

[45]  Martha Cleveland-Innes,et al.  Revisiting methodological issues in transcript analysis: Negotiated coding and reliability , 2006, Internet High. Educ..

[46]  Gail C. Murphy,et al.  Supporting software history exploration , 2011, MSR '11.

[47]  Thomas Zimmermann,et al.  Card-sorting , 2016, Perspectives on Data Science for Software Engineering.

[48]  Robert J. Walker,et al.  Branching and merging: an investigation into current version control practices , 2011, CHASE.

[49]  Janice Singer,et al.  Guide to Advanced Empirical Software Engineering , 2007 .

[50]  N. Meiran Modeling cognitive control in task-switching , 2000, Psychological research.

[51]  Gail C. Murphy,et al.  Questions programmers ask during software evolution tasks , 2006, SIGSOFT '06/FSE-14.

[52]  Mary Czerwinski,et al.  A diary study of task switching and interruptions , 2004, CHI.

[53]  Mario Linares Vásquez,et al.  On Automatically Generating Commit Messages via Summarization of Source Code Changes , 2014, 2014 IEEE 14th International Working Conference on Source Code Analysis and Manipulation.

[54]  Daniela E. Damian,et al.  Selecting Empirical Methods for Software Engineering Research , 2008, Guide to Advanced Empirical Software Engineering.

[55]  António Rito Silva,et al.  Improving early detection of software merge conflicts , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[56]  Shinji Kusumoto,et al.  Clustering Commits for Understanding the Intents of Implementation , 2014, 2014 IEEE International Conference on Software Maintenance and Evolution.

[57]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[58]  Chris North,et al.  Exploring context switching and cognition in dual-view coordinated visualizations , 2003, Proceedings International Conference on Coordinated and Multiple Views in Exploratory Visualization - CMV 2003 -.