Get it straight because as the article stands, it's unresearched garbage.
Get it straight because as the article stands, it's unresearched garbage.
Perhaps this is just the operating systems course I took in college talking, but I recall that an operating system is defined not by the programs in user space, but rather by how everything is handled behind the scenes; in kernel space.
Process management, threads, interprocess communication, memory management, the file system structure, input/output, network primitives... Aren't these responsibilities of the operating system? All of these programs and low level interfaces are provided by the operating system, and thus by Linux and not by the GNU utilities.
Your statement is pretty condescending. I'm not sure what I said to deserve that.
"The OS is way more than the kernel. Device drivers for example. Compilers..."
Your first sentence makes a broad generalization. As far as device drivers go; the operating system provides the interface for such drivers to be programmed and work together with other devices in a way that should be transparent to the programmer. This is part of the I/O system that an OS should provide. Classic OS responsibility, but not "way more than the kernel". The interfaces are provided by the kernel.
As far as compilers go, I obviously agree they are a necessary component of any extensible platform; but they are not 'technically' ran in user-land. They ARE application/user programs! They are not part of the operating system.
If you insist on playing the "technicality" card here, you can't have it both ways.
Perhaps some people consider the kernel to be the OS and the userland to be whatever else. I am much more bent towards the thought of an actual distribution being the OS, and the underlying kernel being just one part of the OS as a whole.
> Process management, threads, interprocess communication, memory management, the file system structure, input/output, network primitives... Aren't these responsibilities of the operating system?
they are, and they don't need to be in the kernel, which would be enough to say that a kernel is not an OS.
Even ignoring stuff like user space drivers/FS/network/threads, you usually use some user space APIs to interface with the kernel.
And maybe you need something to actually be able to launch programs, an init system, some login process etc..
FWIW, the definition I had in school(s) was more loose, on the likes of "the OS provides the basic functionalities to run and control programs".
There are tons of devices that run Linux that don't include GNU tools.
I've personally ported Linux to devices that didn't run any GNU userland at all, yet that had a recognizable Linux/Unix-y interface.
For many applications, the differences in kernel will in fact matter more in terms of portability than the userland will - I've written more than one application where I had to deal with differences between BSD vs. Linux kernels, for example, but where the userland didn't matter one iota.
Hmm. Does anyone know if someone has tried to make a Linux dist based on the similar tools the BSD world have?
I realize they probably would have to be modified quite heavily considering the architechture of BSD, but I've seen stranger things done in computing :)
A world of Android-devices disagree with your definition of "useless". And so does my router and NAS (which both comes with Busybox, not GNU tools).