CI is becoming widely used on GitHub: 75% of projects
that use pull requests heavily also use CI, either in hosted
services (e.g., Travis-CI [25]) or in standalone setups [14].
Pull Request Evaluation: As described above, evaluating
pull requests is a complex iterative process involving many
stakeholders. Recently, researchers have started investigating
the pull request workflow in GitHub [11], [14], [21], [22],
trying to understand which factors influence pull request ac-
ceptance (i.e., decision to merge) and latency (i.e., evaluation
time). However, (i) these effects are not yet well understood
(e.g., results from different studies often diverge, as discussed
below); and (ii) pull request evaluation has not been studied
in the context of CI.
Pull request acceptance has been studied by Gousios et
al. [11], [14] and Tsay et al. [21], [22]. For example, using
machine learning techniques, Gousios et al. [11] found that
pull requests touching actively developed (hot) parts of the
system are preferentially accepted. In contrast, based on results
from a regression modeling study, Tsay et al. [21] argue that
the strength of the social connection between the submitter and
integrators is the determining factor of pull request acceptance.
In a follow-up qualitative study, Gousios et al. [14] found that
target area hotness, existence of tests, and overall code quality
are recognized as important determinants of pull request
acceptance by GitHub integrators taking part in their survey.
In the same qualitative study [14], the authors also asked
survey respondents to: (i) rate several predefined factors by
perceived importance to pull request latency; and (ii) list
additional determinants of latency, if any. The following
ranking of predefined factors emerged (in decreasing order):
project area hotness, existence of tests in the project, presence
of tests in the pull request, pull request churn (i.e., number
of changed lines), the submitter’s track record, number of
discussion comments, and number of commits. Among the
many other self-identified factors, only reviewer availability
and pull request complexity are recognized by at least 5%
of their respondents. These factors, perceived to be important,
differ significantly from those data mined in an earlier machine
learning experiment (three classes: merged within one hour;
one day; the rest) by the same authors [11], i.e., the submit-
ter’s track record, the project size and its test coverage, and
the project’s openness to external contributors (in decreasing
importance order).
Hypotheses: In this paper we focus on pull request latency, the
understudied and arguably more complex of the two facets of
pull request evaluation. The literature reviewed above revealed
that maintaining software quality and handling a high volume
of incoming pull requests are the top priorities of integrators,
who subscribe to a complex evaluation process, involving code
review and automatic testing. Even though prior work [11],
[14], [21], [22] has identified several social and technical
factors that influence pull request evaluation, as discussed
above, we believe the intricacies of this process are not yet
accurately captured. Still, to establish a baseline (and replicate
previous results), we hypothesize:
H1. Previously-identified social and technical factors influ-
ence pull request latency in expected ways.
There is recurring support for the importance of process
factors to team outcomes in the empirical software engineering
literature, e.g., [2], [16]. Focusing on the integrator workflow,
we expect a multitude of process-related factors to influence
pull request latency, e.g., current workload and availability of
reviewers, pull request description quality (akin to the quality
of issue reports said to impact the issues’ resolution time [7],
[27]), and the integrators’ responsiveness (in recent work [23]
we found that pull request submitters may become discour-
aged by unresponsive integrators, leading to communication
breakdown and conflict). We hypothesize:
H2. Process-related factors have a significant impact on pull
request latency.
The general literature on CI suggests that the continuous
application of quality control checks speeds up overall de-
velopment, and ultimately improves software quality [8]. On
GitHub, the integration of CI in the pull request workflow
should enable project members to find integration errors more
quickly, tightening the feedback loop. Based on reported
widespread use of CI and the importance of testing related
factors [14], [17], [21], we expect that CI will play a prominent
role in the pull request evaluation process, enabling integrators
to better deal with general issues of scale. We posit:
H3. CI is a dominant factor of pull request latency.
III. METHODS AND DATA
Dataset and Preprocessing
: We compose a sample of GitHub
projects that make heavy use of pull requests and CI. In this
preliminary study we only consider projects using Travis-CI,
1
the most popular CI service on GitHub, integrated into the pull
request workflow [25]. Using the 10/11/2014 GHTorrent [10],
[12] dump, we identify candidate non-forked projects that
received at least 1000 pull requests in total, and were written
in Ruby, Python, JavaScript, Java, and C++, the most popular
languages on GitHub.
2
Then, we identify which of these
projects use Travis-CI, with our previous techniques [25].
Finally, in trying to assemble a relatively balanced data set, we
further select, from among these, the top ten projects (ranked
by number of pull requests) for each programming language.
3
For each project, we further extract data about incoming pull
requests, received after 01/01/2010 and closed by the time of
data collection (January 2015; i.e., we ignore pull requests
that are still open), from GHTorrent (metadata, e.g., number
of comments) and the GitHub API (description title, body, and
actual contents of the pull request, i.e., diffs). For each pull
request, we extract data about the automatic builds from the
Travis-CI API [25]. Lastly, we identify the integrators as those
project members that closed others’ issues or pull requests,
using GHTorrent. We also perform identity merging [24].
1
https://travis-ci.com
2
http://githut.info/
3
We only select five projects for C++ and Java due to insufficient samples.