  Code churn and code velocity describe the evolution of a code base. Current
research quantifies and studies code churn and velocity at a high level of
abstraction, often at the overall project level or even at the level of an
entire company. We argue that such an approach ignores noticeable differences
among the subsystems of large projects. We conducted an exploratory study on
four BSD family operating systems: DragonFlyBSD, FreeBSD, NetBSD, and OpenBSD.
We mine 797,879 commits to characterize code churn in terms of the annual
growth rate, commit types, change type ratio, and size taxonomy of commits for
different subsystems (kernel, non-kernel, and mixed). We also investigate
differences among various code review periods, i.e., time-to-first-response,
time-to-accept, and time-to-merge, as indicators of code velocity. Our study
provides empirical evidence that quantifiable evolutionary code characteristics
at a global system scope fail to take into account significant individual
differences that exist at a subsystem level. We found that while there exist
similarities in the code base growth rate and distribution of commit types
(neutral, additive, and subtractive) across BSD subsystems, (a) most commits
contain kernel or non-kernel code exclusively, (b) kernel commits are larger
than non-kernel commits, and (c) code reviews for kernel code take longer than
non-kernel code.
