a long rebuttal to the Linux-is-the-engine fallacy (was: Re: that old GNU/Linux argument)
Marko Vojinovic
vvmarko at panet.co.yu
Sat Jul 26 22:40:34 UTC 2008
:-) I'll try to be just a little bit shorter. Though I may not succeed. ;-)
On Friday 25 July 2008 20:18, Alexandre Oliva wrote:
> On Jul 24, 2008, Marko Vojinovic <vvmarko at panet.co.yu> wrote:
> > the kernel "does the essential work" (actually, it communicates
> > further to the hardware that does the actual work, but that is
> > abstracted out).
>
> Nevermind that what you "essential work" here is hardly perceived as
> such by users. What do they care that there are multiple CPUs there
> that need a task scheduler, or how files or even filesystems are laid
> out on disk, or how interrupts and DMA are handled? They just want to
> browse the web, read their e-mail, play their movies and songs, write
> their texts, prepare their presentations, perform their
> High-Performance computations, run databases, serve out files, etc.
> *That*'s the essential work for *them*.
What the end-user sees as useful work is completely impossible without the
work done by the kernel (although it is hidden from the user). That is why it
is "essential".
> I'd concede to qualifying it as *an* essential part, but not as *the*
> essential part. In good teams, every member performs an essential
> task, and if you take any member out, the team gets a severe hit and
> may even become completely dysfunctional. Every member of such a team
> might claim to be the most important, because his/her removal would
> have such a severe impact, but the conclusion would be that *all* of
> them are *the* most important, and this doesn't make sense. I don't
> think that this is the kind of measuring stick we're looking for.
I am afraid that the relevance of any piece of system code is quite hard to
measure, as you indicated above. Take something out, the thing stops working.
However, I tried my best to argue that severity of the damage to the system
could be one possible measuring stick, although not perfect. By that
criterion, one could argue that bios or the bootloader are even more
essential than the kernel. However, the bios is not the part of an operating
system or a distro, so it doesn't get its name in there. The bootloader,
although completely crucial, is a fairly simple piece of code (compared to
the kernel or any other serious part of the system). This means it is quite
easy to code, needs no maintenence, and all in all, doesn't deserve its name
mentioned either (no offence to the grub developers :-) ). If you push the
car analogy, it would take part of ignition mechanism --- the key, the
battery and the electric motor to give initial torque to the engine. It's a
simple mechanism. However, once the engine is running, it is completely
useless until the next ignition event.
All this said, the kernel is the only completely essential component left. Of
course, the bare kernel with nothing else except the "hello world"
application is purely theoretical notion, but nevertheless has *nonzero*
usability (however academically small). But the system without a kernel
has *precisely zero* usability. The kernel is distinguished to be the only
component of an os with this "feature". And if one looks into the "why" of
this, one will find that this is because the kernel has a qualitatively most
important job to do in the os. That is why I consider the kernel to be the
sole single component worth mentioning in the name of the os or distro.
And this measuring stick (although imperfect) works, and as a result gives
some notion of "importance level" for the kernel vs the rest. Besides, that
is the only measuring stick I can think of. Evaluation of imporance of
something is always an ungrateful job. Of course, you could probably invent
another method of evaluation, a different measuring stick, to back up your
opinion on equal importance of GNU and the kernel. By the end of the day, it
all boils down to which argument is more intuitively appealing to the
majority of people. Please see below to the end of this post.
> > The parallel is simple --- the car engine is also the one "doing the
> > essential work" (converting fuel to mechanical --- ie. usable ---
> > energy).
>
> Converting fuel to mechanical energy is hardly what most people who
> purchase a car are interested in.
But that is what actually happens, whether people are interested to know or
not. Give fuel, get transport. A car is a device to convert one into the
other (but not vice-versa :-) ). But a car-savvy customer surely wants to
know how much horse-power does his new car have, time to accelerate from 0 to
100 mph, fuel consumption over 100 miles, etc. These are all properties of the
engine, and how efficiently it converts fuel to mechanical energy. I disagree
that customers are not interested in that. At least they should be. The
ignorant ones probably use Windows as well. :-)
> Very few people actually care that there is an engine in their car.
> Or a motor. Or both, for hybrids. Or propellers, jet propulsion,
> magnets and superconductors, magic powder, whatever.
Oh, you forgot the "squirrel in a barrel" type of drive. ;-) And the pedals,
(like on a bycicle), or barefooted drive (as in Flinstones). :-)
> Converting energy is not the purpose of a car, and it's hardly even a
> relevant part of the user experience. People buy cars to drive to
> places, not to convert fuel to mechanical energy.
But this conversion is the essential part of the process of "driving to
places". Ignoring that is, well, ignorant. Whenever you decide to travel out
of town, the first thing you need to do is to make sure you have enough fuel
for the trip. Given the distance of the place you wish to visit, you need one
of the engine parameters in order to calculate how much fuel to buy. If you
do not take care of that, you risk having major trouble once you're on the
road.
> Which is not to say that the engine is not relevant for today's cars.
> It is indeed very important. But, as you said yourself, many
> components are so important for a car to work that, if you take them
> out, it won't work any more, and the engine is not a part of the user
> experience that the user cares about. So how can we support the claim
> that the engine is the most important part?
See above. Without the engine, it is completely impossible to do something
useful with the car. If some other part is missing, it is *not completely*
impossible to do something useful. Not even remotely useful as driving it,
but you can (for example) use the working engine to help somebody else start
their car if their battery is dead. That is nonzero usefullness. The analogy
to the "hello world"+kernel example works to emphasize that point, as
academic as it is.
> Or, avoiding any imperfections introduced by the analogy, how could we
> support the claim that Linux is the most important part of a system of
> which it is a kernel?
See above.
> > Consider a simple situation --- take a Fedora distro, and remove all
> > GNU utilities. The system will lose much of its functionality, but
> > not all.
>
> Do you have any evidence to support this claim? I very much doubt it,
> and I invite you to give that a try.
:-) Sorry, but other than not having enough free time, I have to admit that I
am quite clumsy in doing any kind of experiment. That is one of the main
reasons why I am involved in theoretical research. ;-)
// The experimentalist is the person that doesn't know how to sum up a column
of numbers. The theoretician is the person that doesn't know how to tie his
shoes. // ;-)
> > Some hypothetical userspace program could still be able to
> > communicate to the kernel and do some useful work.
>
> Indeed, you could boot up the kernel and have it run this hypothetical
> program as init.
[snip]
> If you get a cluster of machines running
> Linux and this hypothetical program of yours (combined with this
> library it depends on, if any), you'll have a very good (and
> expensive) furnace :-)
You wouldn't believe, but I participated in an assembly of one precisely such
cluster in my Institute. Today it has 160 quad-core nodes, couple of hunderds
of terabytes storage space, a very very sophisticated and expensive master
switch, etc. It is assembled in five racks, and dissipates around 20 KW of
heat (that's an estimate, didn't measure it actually). :-) There is also a
nontrivial cooling system to keep the machine from frying itself dead.
It mostly does some path-integral calculations, which are considered by
general public to be utterly useless. So it is essentially one very big and
expensive furnace. ;-)
> Now... Would anyone still recognize that as this system we're talking
> about, that people mistakenly call Linux? Would a kid on Jurassic
> Park, looking at such a system, shout "hey, that's Linux!"? I doubt
> it.
Recognition is irrelevant. It *would be* Linux, because of the kernel used.
> == Defining features
>
> So let's think for a moment (or many moments) about what the defining
> features of this operating system are, what the common features shared
> by most recognizable instances of it are.
[snip]
> However, if we do not stop thinking just because we found an answer
> we're happy with, we're left with *nothing* as a defining feature.
> That's absurd, so something in the methodology we used must have been
> wrong. We must have been asking the wrong question, since the answer
> we got was 0, rather than 42 :-)
Basically I find all that was said in the snipped part quite correct. As I see
it, this was one attempt to define a "measuring stick" for evaluating what is
the most important component of the os or a distro. As Alexandre concluded,
it doesn't work, so it's a failed attempt (but I do give credit to Alexandre,
it is a very good try).
> == Impact of replacement
>
> So I propose that, instead of going about trying to determine one
> single component that makes the system what it is (we've already
> failed at that), we look at the system as a whole (as fuzzy as "whole"
> is defined), and then try to determine what impact, if any, the
> replacement of any of the components would have on a statistically
> significant sample of users of the system.
>
> The assumption being that, the larger the impact of replacing that one
> component, the further the system becomes notably different from what
> it is. IOW, a component that, if replaced, would make the system
> "very different" for "many users" would be regarded as more defining
> than a component that, if replaced, would hardly raise an eyebrow from
> any user. The more you (or rather many users) can tell there was a
> difference, the more defining the component is.
[snip]
> Summing it up, GNU is far more "irreplaceable" in the whole system
> than any other component, including the kernel Linux.
>
> Second to it is X, which happens to have been adopted early on to play
> this role in the GNU operating system.
This is a second try to define the "measuring stick", and one even more
interesting. I basically agree with everything said (and snipped). After two
readings, it seems ok to me, up to the fact that this kind of reasoning
implies that GNU is the *only* one to take the credit (or maybe GNU+X
combination), because the kernel itself is (more or less) easily replaceable
part of the system. I wish to congratulate Alexandre for the successful (ie.
consistent) construction of another "measuring stick".
So we basically have two approaches (so far). We agree (correct me if I am
wrong here) to give the name to the distro by giving appropriate credit to
the most important component of the system. There are two proposals on how to
evaluate this importance:
1) based on the amount of "essentiality" of given components, ie. how much of
a working system is left if a component is removed --- the winner here is the
kernel (with grub as a side-effect), and the distro name is "Fedora Linux";
2) based on the amount of "complexity" of given components, ie. how hard would
it be to replace a given component of the system without making serious
damage/difference --- the winner here is GNU (with X as a side-effect), and
the distro name is "Fedora GNU".
If nobody else suggests a third criterion, I suggest it's time to vote. Based
on which of the two criteria is more intutively appealing, it seems, because
both seem convincing (ie. it's a matter of taste). My vote is clear, I
believe Alexandre's is also. So far, 1:1. ;-)
Best, :-)
Marko
More information about the users
mailing list