Software Product Line Evolution: the Linux Kernel

Software product lines promote explicit modeling of software variability and systematic reuse of underlying components. Evolution of software product lines occurs both in variability models and assets, such as source code. In this work, we did an empirical study that investigated evolution of the Linux kernel as an example of a product line.

We classified different types of edits, and answered questions about congruency of changes made by developers. We also discovered patterns for adding, removing, and updating features in the Linux kernel. As a result, the work presents a set of guidelines for tools that would support evolution of software product lines.

Project report [PDF]