  While technical debt grows in absolute numbers as software systems evolve
over time, the density of technical debt (technical debt divided by lines of
code) is reduced in some cases. This can be explained by either the application
of refactorings or the development of new artifacts with limited Technical
Debt. In this paper we explore the second explanation, by investigating the
relation between the amount of Technical Debt in new code and the evolution of
Technical Debt in the system. To this end, we compare the Technical Debt
Density of new code with existing code, and we investigate which of the three
major types of code changes (additions, deletions and modifications) is
primarily responsible for changes in the evolution of Technical Debt density.
Furthermore, we study whether there is a relation between code quality
practices and the 'cleanness' of new code. To obtain the required data, we have
performed a large-scale case study on twenty-seven open-source software
projects by the Apache Software Foundation, analyzing 66,661 classes and 56,890
commits. The results suggest that writing "clean" (or at least "cleaner") new
code can be an efficient strategy for reducing Technical Debt Density, and thus
preventing software decay over time. The findings also suggest that projects
adopting an explicit policy for quality improvement, e.g. through discussions
on code quality in board meetings, are associated with a higher frequency of
cleaner new code commits. Therefore, we champion the establishment of processes
that monitor the density of Technical Debt of new code to control the
accumulation of Technical Debt in a software system.
