An Exploratory Study of the Pull-Based Software Development Model

An Exploratory Study of the Pull-Based Software Development Model

An Exploratory Study of the Pull-based Software Development Model Georgios Gousios Martin Pinzger Arie van Deursen Delft University of Technology University of Klagenfurt Delft University of Technology Delft, The Netherlands Klagenfurt, Austria Delft, The Netherlands [email protected] [email protected] [email protected] ABSTRACT allow any user to clone any public repository. The clone creates The advent of distributed version control systems has led to the a public project that belongs to the user that cloned it, so the user development of a new paradigm for distributed software develop- can modify the repository without being part of the development ment; instead of pushing changes to a central repository, devel- team. Furthermore, such sites automate the selective contribution opers pull them from other repositories and merge them locally. of commits from the clone to the source through pull requests. Various code hosting sites, notably Github, have tapped on the op- Pull requests as a distributed development model in general, and portunity to facilitate pull-based development by offering workflow as implemented by Github in particular, form a new method for col- support tools, such as code reviewing systems and integrated issue laborating on distributed software development. The novelty lays in trackers. In this work, we explore how pull-based software devel- the decoupling of the development effort from the decision to incor- porate the results of the development in the code base. By separat- opment works, first on the GHTorrent corpus and then on a care- fully selected sample of 291 projects. We find that the pull request ing the concerns of building artifacts and integrating changes, work model offers fast turnaround, increased opportunities for commu- is cleanly distributed between a contributor team that submits, often nity engagement and decreased time to incorporate contributions. occasional, changes to be considered for merging and a core team We show that a relatively small number of factors affect both the that oversees the merge process, providing feedback, conducting decision to merge a pull request and the time to process it. We also tests, requesting changes, and finally accepting the contributions. examine the reasons for pull request rejection and find that techni- Previous work has identified the processes of collaboration in cal ones are only a small minority. distributed development through patch submission and acceptance [23, 5, 32]. There are many similarities to the way pull requests work; for example, similar work team structures emerge, since Categories and Subject Descriptors typically pull requests go through an assessment process. What D.2.7 [Software Engineering]: Distribution, Maintenance, and pull requests offer in addition is process automation and central- Enhancement—Version control; D.2.9 [Software Engineering]: Man- ization of information. With pull requests, the code does not have agement—Programming teams to leave the revision control system, and therefore it can be ver- sioned across repositories, while authorship information is effort- General Terms lessly maintained. Communication about the change is context- specific, being rooted on a single pull request. Moreover, the re- Management view mechanism that Github incorporates has the additional effect of improving awareness [9]; core developers can access in an ef- Keywords ficient way all information that relates to a pull request and solicit pull-based development, pull request, distributed software develop- opinions of the community (“crowd-source”) about the merging de- ment, empirical software engineering cision. A distributed development workflow is effective if pull requests 1. INTRODUCTION are eventually accepted, and it is efficient if the time this takes is as short as possible. Advancing our insight in the effectiveness and Pull-based development is an emerging paradigm for distributed efficiency of pull request handling is of direct interest to contribu- software development. As more developers appreciate isolated de- tors and developers alike. The goal of this work is to obtain a deep velopment and branching [7], more projects, both closed source understanding of pull request usage and to analyze the factors that and, especially, open source, are being migrated to code hosting affect the efficiency of the pull-based software development model. sites such as Github and Bitbucket with support for pull-based de- Specifically, the questions we are trying to answer are: velopment [2]. A unique characteristic of such sites is that they RQ1 How popular is the pull based development model? RQ2 What are the lifecycle characteristics of pull requests? Permission to make digital or hard copies of all or part of this work for RQ3 What factors affect the decision and the time required to personal or classroom use is granted without fee provided that copies are merge a pull request? not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to RQ4 Why are some pull requests not merged? republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Our study is based on data from the Github collaborative devel- Copyright 20XX ACM X-XXXXX-XX-X/XX/XX ...$15.00. opment forge, as made available through our GHTorrent project [16]. Using it, we first explore the use of almost 2 million pull requests across all projects in Github. We then examine 291 carefully se- lected Ruby, Python, Java and Scala projects (in total, 166,884 pull requests), and identify, using qualitative and quantitative analysis, the factors that affect pull request lifetime, merging and rejection. 2. BACKGROUND Since their appearance in 2001, distributed version control sys- DVCS tems ( ), notably Git [8], have revolutionized the way dis- tributed software development is carried out. Driven by pragmatic needs, most DVCSs were designed from scratch to work as ad- vanced patch management systems, rather than versioned file sys- tems, the then dominant version control paradigm. In most DVCSs, a file is an ordered set of changes, the serial application of which leads to the current state. Changes are stamped by globally unique identifiers, which can be used to track the commit’s content across Figure 1: The pull request process. repositories. When integrating changes, the change sets can origi- nate from a local filesystem or a remote host; tools facilitate the ac- quisition and application of change sets on a local mirror. The dis- from. Github automatically discovers the commits to be merged tributed nature of DVCSs enables a pull-based development model, and presents them in the pull request. By default, pull requests are where changes are offered to a project repository through a network submitted to the base (“upstream” in Git parlance) repository for of project forks; it is up to the repository owner to accept or reject inspection. The inspection is either a code review of the commits the incoming pull requests. submitted with the pull request or a discussion about the features The purpose of distributed development is to enable a poten- introduced by the pull request. Any Github user can participate to tial contributor to submit a set of changes to a software project both types of inspection. As a result of the inspection, pull requests managed by a core team. The development models afforded by can be updated with new commits or be closed as redundant, unin- DVCSs are a superset of those in centralized version control envi- teresting or duplicate. In case of an update, the contributor creates ronments [31, 6]. With respect to receiving and processing external new commits in the forked repository, while Github automatically contributions, the following strategies can be employed with DVCs: updates the displayed commits. The code inspection can then be Shared resporitory. The core team shares the project’s repos- repeated on the refreshed commits. itory, with read and write permissions, with the contributors. To When the inspection process finishes and the pull requests are work, contributors clone it locally, modify its contents, potentially deemed satisfactory, the pull request can be merged. A pull request introducing new branches, and push their changes back to the cen- can only be merged by core team members. The versatility of Git tral one. To cope with multiple versions and multiple developers, enables pull requests to be merged in three ways, presented below larger projects usually adopt a branching model, i.e., an organized sorted by the amount of preservation of the original source code way to inspect and test contributions before those are merged to the properties: main development branch [7]. 1. Through Github facilities. Github can automatically verify Pull requests. The project’s main repository is not shared among whether a pull request can be merged without conflicts to the base potential contributors; instead, contributors fork (clone) the reposi- repository. When a merge is requested, Github will automatically tory and make their changes independent of each other. When a set apply the commits in the pull request and record the merge event. of changes is ready to be submitted to the main repository, they cre- All authorship and history information is maintained in the merged ate a pull request, which specifies a local branch to be merged with commits. a branch in the main repository. A member of the

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    11 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us