What are the contents of this monolithic code base?
I understand processor architecture support, security, and virtualization, but I can't imagine that being more than 600,000 lines or so.
What are the historic & current reason drivers are included in the kernel code base?
Do those 15+ million lines include every single driver for every piece of hardware ever? If so, that then begs the question, why are drivers embedded in the kernel and not separate packages that are auto-detected and installed from hardware IDs?
Is the size of the code base an issue for storage-constrained or memory-constrained devices?
It seems it would bloat the kernel size for space-constrained ARM devices if all that was embedded. Are a lot of lines culled by the preprocessor? Call me crazy, but I can't imagine a machine needing that much logic to run what I understand is the roles of a kernel.
Is there evidence that the size will be an issue in 50+ years due to it's seemingly ever-growing nature?
Including drivers means it will grow as hardware is made.
EDIT: For those thinking this is the nature of kernels, after some research I realized it isn't always. A kernel is not required to be this large, as Carnegie Mellon's microkernel Mach was listed as an example 'usually under 10,000 lines of code'
make menuconfigto see how much of the code can be enabled/disabled prior to building.