Wednesday, August 15, 2007

Why Kernels don't matter:

In the vast world of UNIX-like environments we are confronted with users who will make a statement such as "I run Linux" and honestly think that is the all encompassing term for the environment they know and love but this ultimately bothers me for the simple fact that kernels no longer matter and what these users need to understand is the its GNU that needs to receive the credit. Now please, before you spam my inbox with "Power to Tux" emails just hear me out.

Lets take into account the only thing that 95% of users are only concerned with three aspects of a kernel:
1) does it support my hardware?
2) is it secure?
3) is it stable?
And by no means in that order but lets just address them in the order listed.

Does it support my hardware? Well that all depends on which kernel you are looking at but in reality of the current state of mainstream kernel development, it is more likely than not that all of your hardware is fully supported with exception only to wireless chipsets simply because the whimsical world of open source wifi is a cruel and unusual whore. Also, a notable point about hardware is simply that if you just purchased the latest and greatest hardware it is more likely than not that the current development version of the kernel of your choice supports it even if the latest stable release does not and yes this isn't wonderful news, but good things come to those who wait. One last thing to mention about hardware support is that in the event that one open source kernel supports hardware, all the rest (mainstream) do as well.

Is it secure? In short, Yes. Every mainstream and widely accepted system kernel today has a level of security that is acceptable enough to at least a large group of followers. Does this mean "Install, run, secure"? No, of course not. A kernel can only be so secure by default and still be deemed usable. This will raise the question, "but how do I make it secure?" and the answer is ancient and often used to torment new users but simply: "Read the Manual" and this is not meant to be clever, snide, or coy but is sincere in the fact that contributors spend hours documenting software so please do not allow their efforts to go in vain.

Is it stable? That is honestly a question that I can not answer for you because the definition of the word 'stable' in the software universe appears to be translated very loosely. Is it "Microsoft stable?" Yes, and then some. I will be willing to bet that any *n?x style kernel you use will be more stable than anything The Blue Empire will wrap up and try to sell you. Is it "debian GNU stable?" That is more likely not to be the case, but at the same time many people find the debian definition of "stable" to be far too strict (I find it to be perfect, but its all a matter of opinion).

Now that all three main concerns have been addressed where to go from here? Well, how about clearing up how kernel's don't matter? OK.

When you boot into your "Linux" installation you are actually booting into "GNU/Linux" which is in fact just a port of the GNU userspace to the Linux kernel. "Is there any other port?" Yes, many. The GNU/OpenSolaris port, the debian GNU/kfreebsd port, the debian GNU/Hurd port, and the debian GNU/NetBSD port are all prime examples. These are quite possibly not all the examples, but my knowledge of the debian GNU world is more intimate than my knowledge of other GNU communities/project. If the average user was to sit down to any of these kernel ports of the GNU userspace they would more likely than not know the difference simply because "the kernel does not matter."

Now, allow me to retort against myself and attempt to offer food for thought. Kernels do matter, it matters very much so if your kernel is capable of many things including POSIX compliance for semaphore capabilities, pthreads, and other important features that are necessary for porting applications. Your kernel also matters in the sense of resource management, if it has a sufficiently fast network stack (and more importantly is that something you are worried about), if it has an efficient process scheduler, if it can multitask without excessive overhead, if it can allocate memory in a timely manner and continue to manage memory efficiently, etc... There are many aspects of a kernel that must be taken into account in selecting one that is "for you", but again .... these things do not matter to the average user and thus "Kernel's don't matter."

This has been yet another random babbling brought to you in part by a very bored 'Me' ... hope you enjoyed.