A Large-Scale Empirical Study of the Relationship between Build Technology and Build Maintenance Shane McIntosh Ahmed E. Hassan Bram Adams Meiyappan Nagappan Audris Mockus
A Large-Scale Empirical Study of the Relationship between Build
Technology and Build Maintenance
ShaneMcIntosh
Ahmed E. Hassan
BramAdams
MeiyappanNagappan
Audris Mockus
What is a build system?Source code
2
What is a build system?Source code
2
Deliverable
3
.tex
.c
.cc
.o
.o
.dvi
Build systems describe how sources are translated into deliverables
.a
.exe
.deb
4) Publishresults
1) Listen forchanges
2) Buildchanges
3) Executetests
ContinuousIntegration:Enabled by
the build system
4
“...nothing can be said to be certain, except death and taxes”
- Benjamin Franklin
The Build “Tax”
An Empirical Study of Build Maintenance EffortS. McIntosh, B. Adams, T. H. D. Nguyen, Y. Kamei, A. E. Hassan
[ICSE 2011]
Up to 27% of source changes require build
changes, too!
5
Teams even migrate to different build technologies
6
...But does build technology really influence build
maintenance activity?
7
Low-Level
Abstraction-Based
Low-level scripts generated from
project metadata
Framework-Driven
Assumes standard project layout and
dependencies
8
MakeRake
Autotools
Dependency Management
Automatically manages 3rd-party API dependencies
File-level dependencies are explicitly declared
Low-Level
Abstraction-Based
File-level dependencies are explicitly declared
Low-level scripts generated from
project metadata
Framework-Driven
Assumes standard project layout and
dependencies
9
MakeRake
Autotools
Dependency Management
Automatically manages 3rd-party API dependencies
Low-Level
Abstraction-Based
File-level dependencies are explicitly declared
Low-level scripts generated from
project metadata
Framework-Driven
Assumes standard project layout and
dependencies
10
MakeRake
Autotools
Dependency Management
Automatically manages 3rd-party API dependencies
Low-Level
Abstraction-Based
File-level dependencies are explicitly declared
Low-level scripts generated from
project metadata
Framework-Driven
Assumes standard project layout and
dependencies
11
MakeRake
Autotools
Dependency Management
Automatically manages 3rd-party API dependencies
Low-Level
Abstraction-Based
File-level dependencies are explicitly declared
Low-level scripts generated from
project metadata
Framework-Driven
Assumes standard project layout and
dependencies
12
MakeRake
Autotools
Dependency Management
Automatically manages 3rd-party API dependencies
Amassing and indexing a large sample of version
control systemsTowards the census of public
source code historyA. Mockus [MSR 2009]
Mining a Large-Scale Corpus
843,976 source code repositories!
13
Amassing and indexing a large sample of version
control systemsTowards the census of public
source code historyA. Mockus [MSR 2009]
repo.or.cz
Software ForgesMining a Large-
Scale Corpus
843,976 source code repositories!
13
Amassing and indexing a large sample of version
control systemsTowards the census of public
source code historyA. Mockus [MSR 2009]
repo.or.cz
Software Forges
Software Ecosystems
Mining a Large-Scale Corpus
843,976 source code repositories!
13
Amassing and indexing a large sample of version
control systemsTowards the census of public
source code historyA. Mockus [MSR 2009]
repo.or.cz
Software Forges
Software Ecosystems
Large Projects
Mining a Large-Scale Corpus
843,976 source code repositories!
13
Low−level Abstraction Frame Dependency
0
100
200
Ant Jam Makefile Rake SCons Autotools CMake Maven Bundler Ivy
Build
chu
rn ra
teFramework builds tend to churn most repo.or.cz
Software Forges
14
−0.2
0.2
0.4
0.6
0.8
1.0
1.2
Apache − Ant vs. Maven Debian − Make vs. Autotools GNU − Make vs. Autotools
Logi
cal c
oupl
ing
Source code coupling is tightest with framework
and abstraction
Low-level Abstraction
Software Ecosystems
15
Low-level Framework Low-level Abstraction
●
●
●
● ●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
● ●●
●●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
0.05
0.10
0.15
0.20
2006 2008 2010
Build
aut
hor r
atio
Android
●
●
●
●
●
● ●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●● ●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●● ●
●
●
0.4
0.5
0.6
0.7
2000 2004 2008
Build
aut
hor r
atio
GNOME
●
●●
●●
●●
●
● ●
●
● ●
●
●
●
● ●●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●
● ●
●●
● ●●
●
●●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●●●
●
●
●●
●●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
● ●
●●●
●
●●●
●●
●
●●
●
●●
●
●
●
●●
●●
●
●●
●
●
●
●
●
●
●
●●●
● ●●
●
●
●
●
●●
0.25
0.50
0.75
1.00
1996 2000 2004 2008 2012
Build
aut
hor r
atio
PostgreSQL
●
●
●●
●
●
●●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●● ●
●
●
●●
●
●●
●●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●●
0.00
0.25
0.50
0.75
1.00
2000 2004 2008 2012
Build
aut
hor r
atio
KDE
AutotoolsAuthorshipdecreases
Large Projects
16
Migration helps!
●
●
●
● ●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
● ●●
●●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
0.05
0.10
0.15
0.20
2006 2008 2010
Build
aut
hor r
atio
Android
●
●
●
●
●
● ●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●● ●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●● ●
●
●
0.4
0.5
0.6
0.7
2000 2004 2008
Build
aut
hor r
atio
GNOME
●
●●
●●
●●
●
● ●
●
● ●
●
●
●
● ●●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●
● ●
●●
● ●●
●
●●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●●●
●
●
●●
●●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
● ●
●●●
●
●●●
●●
●
●●
●
●●
●
●
●
●●
●●
●
●●
●
●
●
●
●
●
●
●●●
● ●●
●
●
●
●
●●
0.25
0.50
0.75
1.00
1996 2000 2004 2008 2012
Build
aut
hor r
atio
PostgreSQL
●
●
●●
●
●
●●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●● ●
●
●
●●
●
●●
●●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●●
0.00
0.25
0.50
0.75
1.00
2000 2004 2008 2012
Build
aut
hor r
atio
KDE
AutotoolsAuthorshipdecreases
Large Projects
Teams dedicate build experts to help cope
with the build tax16
Migration helps!