Exactly, the lines are blurry, and definitions are also not always generally agreed upon. To me, a library is also a program, just of a special/ specific type and with a specific use. As it's the OS kernel. But to be honest, I didn't pay that much attention to software stuff at uni, I'm a hardware guy at heart. So I get by on my definition - see above, computer type hardware needs a kernel with drivers plus some kind of UI (this whole collection is what I call the OS) to make the hardware usable, any code on top that can have parallel alternatives/ replacements isn't part of the OS, realising that loads of people use different and more or less differentiated views. So for me, drivers are part of the OS, including for file systems, and indeed, bash and vim aren't part of the OS - you can use csh, tcsh, nano, etc, but they are part of most distributions. It's perfectly fine if you stick to your definition, because that's not a problem as long as we're aware. And if we discuss a problem with a printer driver that doesn't work properly on any Linux system, it's still a Linux problem, no matter if it's part of the kernel or OS (my view) or not (other people's views)...