An Exploratory Study of the Pull-based Software Development Model

by Gousios, Georgios and Pinzger, Martin and Deursen, Arie van

You can get a pre-print version from here.
You can view the publisher's page here.
See the paper's associated code repository: gousiosg/pullreqs

This paper received a nomination for the "ACM SIGSOFT distinguished paper" award

Abstract

The advent of distributed version control systems has led to the development of a new paradigm for distributed software development; instead of pushing changes to a central repository, developers pull them from other repositories and merge them locally. Various code hosting sites, notably Github, have tapped on the opportunity to facilitate pull-based development by offering workflow support tools, such as code reviewing systems and integrated issue trackers. In this work, we explore how pull-based software development works, first on the GHTorrent corpus and then on a carefully selected sample of 291 projects. We find that the pull request model offers fast turnaround, increased opportunities for community engagement and decreased time to incorporate contributions. We show that a relatively small number of factors affect both the decision to merge a pull request and the time to process it. We also examine the reasons for pull request rejection and find that technical ones are only a small minority.

Bibtex record

@inproceedings{GPD14,
  author = {Gousios, Georgios and Pinzger, Martin and Deursen, Arie van},
  title = {An Exploratory Study of the Pull-based Software Development Model},
  booktitle = {Proceedings of the 36th International Conference on Software Engineering},
  year = {2014},
  series = {ICSE},
  isbn = {978-1-4503-2756-5},
  location = {Hyderabad, India},
  pages = {345--355},
  numpages = {11},
  doi = {10.1145/2568225.2568260},
  acmid = {2568260},
  publisher = {ACM},
  address = {New York, NY, USA},
  keywords = {Pull-based development, distributed software development, empirical software engineering, pull request},
  speakerdeck = {2c6de050ce430131e1db2aa9d004a740},
  url = {/pub/exploration-pullreqs.pdf},
  nomination = {ACM SIGSOFT distinguished paper},
  github = {gousiosg/pullreqs}
}

Presentation

The paper