  Modern software systems, such as Spark, are usually written in multiple
programming languages (PLs). Besides benefiting from code reuse, such systems
can also take advantages of specific PLs to implement certain features, to meet
various quality needs, and to improve development efficiency. In this context,
a change to such systems may need to modify source files written in different
PLs. We define a multi-programming-language commit (MPLC) in a version control
system (e.g., Git) as a commit that involves modified source files written in
two or more PLs. To our knowledge, the phenomenon of MPLCs in software
development has not been explored yet. In light of the potential impact of
MPLCs on development difficulty and software quality, we performed an empirical
study to understand the state of MPLCs, their change complexity, as well as
their impact on open time of issues and bug proneness of source files in
real-life software projects. By exploring the MPLCs in 20 non-trivial Apache
projects with 205,994 commits, we obtained the following findings: (1) 9% of
the commits from all the projects are MPLCs, and the proportion of MPLCs in 80%
of the projects goes to a relatively stable level; (2) more than 90% of the
MPLCs from all the projects involve source files written in two PLs; (3) the
change complexity of MPLCs is significantly higher than that of non-MPLCs in
all projects; (4) issues fixed in MPLCs take significantly longer to be
resolved than issues fixed in non-MPLCs in 80% of the projects; and (5) source
files that have been modified in MPLCs tend to be more bug-prone than source
files that have never been modified in MPLCs. These findings provide
practitioners with useful insights on the architecture design and quality
management of software systems written in multiple PLs.
