  Technical Debt is a metaphor used to describe the situation in which
long-term code quality is traded for short-term goals in software projects. In
recent years, the concept of self-admitted technical debt (SATD) was proposed,
which focuses on debt that is intentionally introduced and described by
developers. Although prior work has made important observations about admitted
technical debt in source code, little is known about SATD in build systems. In
this paper, we coin the term Self-Admitted Build Debt (SABD) and through a
qualitative analysis of 500 SABD comments in the Maven build system of 300
projects, we characterize SABD by location and rationale (reason and purpose).
Our results show that limitations in tools and libraries, and complexities of
dependency management are the most frequent causes, accounting for 49% and 23%
of the comments. We also find that developers often document SABD as issues to
be fixed later. To automate the detection of SABD rationale, we train
classifiers to label comments according to the surrounding document content.
The classifier performance is promising, achieving an F1-score of 0.67-0.75.
Finally, within 16 identified 'ready-to-be-addressed' SABD instances, the three
SABD submitted by pull requests and the five SABD submitted by issue reports
were resolved after developers were made aware. Our work presents the first
step towards understanding technical debt in build systems and opens up avenues
for future work, such as tool support to track and manage SABD backlogs.
