The Linux kernel as a case study in software evolution

Ayelet Israeli, Dror G. Feitelson*

*Corresponding author for this work

Research output: Contribution to journalArticlepeer-review

101 Scopus citations


We use 810 versions of the Linux kernel, released over a period of 14 years, to characterize the system's evolution, using Lehman's laws of software evolution as a basis. We investigate different possible interpretations of these laws, as reflected by different metrics that can be used to quantify them. For example, system growth has traditionally been quantified using lines of code or number of functions, but functional growth of an operating system like Linux can also be quantified using the number of system calls. In addition we use the availability of the source code to track metrics, such as McCabe's cyclomatic complexity, that have not been tracked across so many versions previously. We find that the data supports several of Lehman's laws, mainly those concerned with growth and with the stability of the process. We also make some novel observations, e.g. that the average complexity of functions is decreasing with time, but this is mainly due to the addition of many small functions.

Original languageAmerican English
Pages (from-to)485-501
Number of pages17
JournalJournal of Systems and Software
Issue number3
StatePublished - Mar 2010


  • Lehman's laws
  • Linux kernel
  • Software evolution


Dive into the research topics of 'The Linux kernel as a case study in software evolution'. Together they form a unique fingerprint.

Cite this