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.
The major results were also published as an ICSM paper.
Software build systems are often viewed as a solved problem by software engineers, since there are many mature tools and techniques for implementing them. However, existing tools and techniques focus on building single-language software and do not necessarily scale to building multilanguage software. An exploratory qualitative study of five open-source multilanguage software packages finds significant issues in getting these packages to build at all.
The key finding of this thesis is that there are commonalities among build problems that could be systematically addressed. A comparative analysis of the five case studies produces a set of build patterns and anti-patterns, some of which could also apply to single-language software. One such finding is that multilanguage packages may avoid certain build problems by supporting build-free extension. As well, there is evidence that abstractions from the application and implementation domains may “leak” into the build system, with both positive and negative effects.
Andrew Neitsch. Build System Issues in Multilanguage Software, Master’s thesis, University of Alberta, 2012. http://hdl.handle.net/10402/era.28641