Building programs that use multiple programming languages is more complicated than the normal single-language case. By studying multilanguage build systems, what can we learn about build systems in general?
The answer is a set of common techniques for causing and solving build problems, and a possible explanation for why previous quantitative work has found that centralizing responsibility for the build system reduces overall build maintenance.
This paper is based on my master’s thesis.
Building software from source is often viewed as a “solved problem” by software engineers, as there are many mature, well-known tools and techniques. However, anecdotal evidence suggests that these tools often do not effectively address the complexities of building multilanguage software. To investigate this apparent problem, we have performed a qualitative study on a set of five multilanguage open source software packages. Surprisingly, we found build system problems that prevented us from building many of these packages out-of-the-box.
Our key finding is that there are commonalities among build problems that can be systematically addressed. In this paper, we describe the results of this exploratory study, identify a set of common build patterns and anti-patterns, and outline research directions for improving the build process. One such finding is that multilanguage packages avoid certain build problems by supporting compilation-free extension. As well, we find evidence that concerns from the application and implementation domains may “leak” into the build model, with both positive and negative effects on the resulting build systems.
Andrew Neitsch, Kenny Wong, and Michael W. Godfrey. “Build System Issues in Multilanguage Software”, Proceedings of the 2012 28th IEEE International Conference on Software Maintenance (ICSM 2012), Riva del Garda, Trento, Italy, September 2012. http://hdl.handle.net/10.1109/ICSM.2012.6405265