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