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}
}