  Our study is focused on an evaluation of the maintainability characteristic
in the context of the long-term evolution of open-source software. According to
well established software quality models such as the ISO 9126 and the more
recent ISO 25010, maintainability remains among key quality characteristics
alongside performance, security and reliability. To achieve our objective, we
selected three complex, widely used target applications for which access to
their entire development history and source code was available. To enable
cross-application comparison, we restricted our selection to GUI-driven
software developed on the Java platform. We focused our examination on released
versions, resulting in 111 software releases included in our case study. These
covered more than 10 years of development for each of the applications. For
each version, we determined its maintainability using three distinct
quantitative models of varying complexity. We examined the relation between
software size and maintainability and studied the main drivers of important
changes to software maintainability. We contextualized our findings using
manual source code examination. We also carried out a finer grained evaluation
at package level to determine the distribution of maintainability issues within
application source code. Finally, we provided a cross-application analysis in
order to identify common as well as application-specific patterns.
