  One single code change can significantly influence a wide range of software
systems and their users. For example, 1) adding a new feature can spread
defects in several modules, while 2) changing an API method can improve the
performance of all client programs. Developers often may not clearly know
whether their or others' changes are influential at commit time. Rather, it
turns out to be influential after affecting many aspects of a system later.
This paper investigates influential software changes and proposes an approach
to identify them early, i.e., immediately when they are applied. We first
conduct a post-mortem analysis to discover existing influential changes by
using intuitions such as isolated changes and changes referred by other changes
in 10 open source projects. Then we re-categorize all identified changes
through an open-card sorting process. Subsequently, we conduct a survey with 89
developers to confirm our influential change categories. Finally, from our
ground truth we extract features, including metrics such as the complexity of
changes, terms in commit logs and file centrality in co-change graphs, to build
machine learning classifiers. The experiment results show that our prediction
model achieves overall with random samples 86.8% precision, 74% recall and
80.4% F-measure respectively.
