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.
展开▼