
Linus Torvalds: Programs exist for their users - CJefferson
https://lkml.org/lkml/2012/3/8/495
======
jonhohle

      > Programs exist for their users
    

While this may be inferred from this discussion, this is not what Linus said
in this thread. He actually said:

    
    
      > The *only* reason for an OS kernel existing in the
      > first place is to serve user-space.
    

This is a much narrower definition without the philosophical implications of
the title.

Sometimes programs don't exist for their users. Take DRM for example - it is
explicitly against the user.

~~~
ahelwer
The DRM user is the publisher, not the user of the program itself.

~~~
nitrogen
I find myself growing tired of our trend of redefining words to make our
favorite clichés apply to our favorite companies.

Some examples:

"The customer is always right." -> "You're the product, not the customer."

"Software is made for users." -> "The publisher is the user, not you."

Sure, these things sound clever at first, but they only serve to increase our
acceptance of these encroachments upon the rights of consumers and
responsibilities of corporations by altering our vocabulary to fit these
practices. Let's just stick with the traditional definitions (e.g. user: "the
one sitting at the computer") and stop twisting words to accommodate things
like DRM and privacy-invasive tracking.

~~~
dredmorbius
I disagree with both your points.

This isn't a redefinition of words. It's a clarification of the true
situation. Again: if you're not paying for the product, _and somebody else is_
, then you're the product, and your use of a system or viewing content, etc.,
_is an intentional objective of the payer_. You'd be well advised to be aware
of this, because you're being manipulated.

And the fact that someone else is paying for the system doesn't make it right.
Just because I'm not paying for a DRM'd product (and very often you _do_ pay)
doesn't make it "right". In this case, usually, there are to goods in
question: the information good for which you are the customer, that's covered
by a DRM "service", for which the publisher is the customer.

There are also goods for which there is no intrinsic monetary market, or for
which the market is at best diffuse. Language is one such good (there are very
few people whose paycheck is based on maintaining, debugging, and extending
the English language, for example). Free Software is another, though there are
both paid and unpaid contributors. And you might well ask what the objectives
of those who _are_ actively contributing are (propagandists and marketing
types influence English, device manufacturers and standards promoters write
significant amounts of Free Software).

------
aptwebapps
An easy way to read the whole thread:

<http://markmail.org/thread/wwi2aynfiliqanil>

I don't understand why Mark Mail doesn't get more love. I wish they had better
SEO or something, it's so much easier to read a long thread on their site then
most mailing list archives.

~~~
mrud
I don't like it because it seems to have no threaded view. I really like gmane
much more for mailing list discussions -
[http://thread.gmane.org/gmane.linux.kernel/1245999/focus=126...](http://thread.gmane.org/gmane.linux.kernel/1245999/focus=1264170)

~~~
aptwebapps
Yeah, that is nice. Either one is a vast improvement over old-style list
archives.

~~~
dredmorbius
mbox and your own damned client.

~~~
aptwebapps
If you happen to already be subscribed to the mailing list in question, sure.

~~~
dredmorbius
There are list archives which provide mbox format archives. Mailman for
example.

------
dsr_
Leadership: communicate a clear mission and inspire others to want to do it.

Linus has it.

~~~
exim
I would add politeness. Not sure about Linus, though...

~~~
akira2501
Leadership doesn't require politeness. Fairness is probably what you really
want.

~~~
tsunamifury
I think this is a good point. I don't want people to be needlessly polite, I
want them to be truthful in a manner that is also respectful.

------
4ad
It's great that Linus is committed to supporting old binaries, too bad all
that effort is in vain because of the glibc disaster.

Linux can run statically compiled binaries from 1993, but not the Firefox
binaries from 2006.

~~~
malkia
wouldn't it be possible to still run them with some LD_xxx magic where the c++
shared libs are put in some folder and loaded from there? (It's really
userspace problem).

~~~
A1kmm
Yes - I've done that to produce more portable Linux binary installers where
static binaries would have caused other problems - I tested it for backwards
compatibility, but hopefully it will also improve forward compatibility.

One problem that you encounter if you do that is that glibc has an option to
disable support for older kernels in exchange for better performance, so you
lose backwards compatibility unless you are very careful about how you compile
glibc (it fails with an error that the kernel is too old).

------
dhconnelly
Is this the same?
[http://lkml.indiana.edu/hypermail/linux/kernel/1203.1/00491....](http://lkml.indiana.edu/hypermail/linux/kernel/1203.1/00491.html)

~~~
dhconnelly
wait, it's back up. but yeah, this is a mirror.

------
Negitivefrags
In my experience binary compatibility on linux is a train wreck. Ever tried to
get a binary compiled 5 years ago to run on a fresh install of linux?

Good luck.

If you still have the specific version of every shared library that it loaded
you _might_ be able to get it to work.

This isn't the fault of the kernel team though.

It is probably to be expected on platforms in which distributing source code
is the default option, but it makes the platform very hostile to closed source
applications, particularly games.

~~~
muuh-gnu
> This isn't the fault of the kernel team though.

It is the result of having no unified platform and library release
coordination, no long term plans, nothing, just chaos. Everybody just releases
when he is in the mood for it. And since nothing is complete when released,
devs further down the chain always go for the latest and greatest to get
additional functionality. And to upgrade app1, you have to upgrade lib1 which
triggers the updates of app2, app3, app4, lib3, etc. Sometimes you cant update
a simple app without updating the whole desktop. The Linux dependency net
appears nightmarish to everyone coming from Windows, where you have a
reliable, stable base system which doesnt change for a decade and every app
targets the same base system.

Linux, the kernel, is only running that great because it has a dictator. But
Linus' dictatorship ends at the kernel borders, he has little influence
outside. The Linux desktop also needs a dictator to massively slow down the
rate of uncoordinated changes and force-stabilize the ecosystem. I hoped that
Mark Shuttleworth could be that man, but he then introduced Unity... but even
with unity, Ubuntu is the only chance for the Linux desktop for having a
single defined set of libs attractive and influential enough for app devs as a
primary target so they can safely go with the library versions in Ubuntu,
instead of constantly chasing the latest and greatest versions from the
upstream.

~~~
reddit_clone
>everyone coming from Windows, where you have a reliable, stable base system
which doesnt change for a decade

Now, you are being plain funny. Haven't you heard of 'DLL Hell' in Windows
platform?.

You never had 'windows update' break your software for no reason?

~~~
muuh-gnu
I've never had to upgrade Windows (including all installed apps) to be able to
install some other random app.

On Linux, having to upgrade the distro (including getting a new desktop
environment force-installed) to get a new version of any random app is
established practice. Example: <http://esr.ibiblio.org/?p=3822>

~~~
acqq
If you claim that you "never had to upgrade Windows to be able to install some
other random app" you probably haven't used Windows much then. There are games
that need explicit version or newer of DirectX. You can't even produce from
the C or C++ sources the binary application that runs on any Windows XP with
the latest Visual Studio (11). Any C/C++ application built with Visual Studio
2010 won't run on Windows 2000 or XP prior to SP3. We developers try to build
the applications that run on as many targets as possible, but even MSFT
doesn't support us enough for that, seeing the older versions as the
competition to their newest "shiny thing." Which is not funny considering
millions and millions of users still running Windows XP.

See the various opinions on MSFT intentionally removing the binary
compatibility which already existed in their libraries here:

<http://news.ycombinator.com/item?id=3648209>

~~~
hythloday
Do you happen to know how many users are running Windows < XP/SP3? For our
install base (games company) it's less than 1%. Is there a compelling reason
not to upgrade to SP3 if you're on XP?

------
route66
The site is down, the content is (at least for me) not available in google
cache, so I suppose it's the same for others as well.

And yet it's the top story on HN right now. When do we start giving tl;dr's
for the headlines?

[EDIT] managed to find a mirror. This mail in the thread gives a bit more
context:
[http://lkml.indiana.edu/hypermail/linux/kernel/1203.1/00446....](http://lkml.indiana.edu/hypermail/linux/kernel/1203.1/00446.html)

~~~
Natsu
There's not even that much to TL;DR. Someone proposed a patch that would break
binary compatibility. There was some argument about having to keep "30+ years
of backwards compatibility."

Linus said the whole thing was dumb, the patch wasn't worth it, and that
programs exist for users, so we can't just break things for the hell of it and
expect people to use Linux.

------
famousactress
Linus is very consistent when it comes to these things. A similar thread from
a while back: <http://news.ycombinator.com/item?id=2372096>

------
cpeterso
In contrast, here is a thread about Debian, after much deliberation,
unanimously choosing to break kernel ABI compatibility with VMware. They
didn't want to increase the ABI number during a "freeze", even though they
broke the ABI.

<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=607368>

~~~
lambda
That's the difference between the user-space interface, and the kernel ABI.
The Linux kernel ABI has no compatibility guarantees. If you are linking to
the kernel, you are considered to be part of the kernel, and thus you are
expected to keep abreast of any ABI changes (preferably by getting your module
into the kernel tree, so that anyone changing the ABI can fix your code too).

The Debian kernel team tries to do a reasonable job of tracking kernel ABI
compatibility changes, and updating the number when the ABI does change, to
avoid having to recompile and reinstall everything for every patch to the
stable tree. In this case, they decided that the ABI change was only intended
for a single, in-tree module (KVM), and that they didn't have to increment the
ABI number for a change that shouldn't affect anything else.

This is really just an example of the Linux kernel developers' two approaches
to compatibility. For the kernel ABI, they make no guarantees whatsoever about
compatibility. For the user space interface, they are supposed to never, ever
change the interface in ways that will break existing programs, though there
are sometimes disagreements about what precisely constitutes this interface
and what is outside the bounds of it.

------
16s
I got a good laugh from this quote: "[Linux] is not some crazy drug-induced
microkernel"

~~~
ot
That sentence is a betrayal of UNIX's history:

 _There are two major products that came out of Berkeley: LSD and UNIX. We
don't believe this to be a coincidence._ (Jeremy S. Anderson)

~~~
mapleoin
I think it rather refers to MINIX.

~~~
abrahamsen
More specifically, it most likely refers to this discussion:

[http://groups.google.com/group/comp.os.minix/browse_frm/thre...](http://groups.google.com/group/comp.os.minix/browse_frm/thread/c25870d7a41696d2/f447530d082cd95d?#f447530d082cd95d)

Linus was a kid in 1992, and got scolded by one of the greatest icons of the
field. That could still sting 20 years later.

~~~
sixbrx
I always thought Linus gave better than he got in that argument, myself. He
was pretty brutal to Minix in a couple of places. BTW. love the reference to
"BSD detox" somewhere in that thread, it always gives me a chuckle.

~~~
sanderjd
Yeah GP seems to imply Linus lost that debate. Quite the contrary, Tannenbaum
titled his post "LINUX is obsolete", so the argument was fundamentally about
whether he was right about his title, or whether he was wrong - the last two
decades of history have pretty clearly proven him wrong.

------
groue
It's like reading a Plato book where Socrates is bullying the guests :-)

------
jmitcheson
Text-only google cache

[http://webcache.googleusercontent.com/search?q=cache:https:/...](http://webcache.googleusercontent.com/search?q=cache:https://lkml.org/lkml/2012/3/8/495&hl=en&rlz=1C1ASUT_enNZ386NZ386&biw=1366&bih=667&site=webhp&strip=1)

------
jiggy2011
Can anybody explain what this is approximately about?

~~~
phn
Well, the first guy is submitting a patch to the linux kernel source that
would make program binaries (executable files, sort of) compiled for an older
version of the kernel break. This same guy looks like he is about to argue
that it is not worth to maintain compatibility with 30 year old binaries.

And then Linus (the guy behind Linux) goes on to explain that the OS should
serve its users, and that keeping compatibility with existing programs, no
matter how old they are is of utmost importance for users to be able to use
that system.

I don't know if I helped, or if I addressed your doubts. I hope so :)

------
dustingetz
the full context of the quote provoking Linus's rant is extremely relevant
here:

    
    
      The current counting that we do gives the wrong numbers, in the
      edge cases.  To my knowledge a deleted sysfs directory has never
      returned nlink == 0.
    
      Keeping compatibility is easy enough that it looks like it is worth
      doing, but maintaining 30+ years of backwards compatibility is what
      nlink >1 in unix filesystem directories is.  I don't see any practical
      sense in keeping . and .. directories on disk or upping the unix
      nlink directory count because of them.  To me it looks like just one
      of those things you do.  Like hash directory entries so you can
      have a big directory and still be able to have a 32bit offset you
      can pass to lseek that is stable across renames and deletes.
    

to use PG's terms, Linus is arguing against this at DH0 or maybe DH1 here[1].
Maybe the above argument sucks, but Linus didn't refute it at all.

[1] <http://www.paulgraham.com/disagree.html>

~~~
icebraining
I disagree. He refuted the premise that breaking backward compatibility is OK
under certain conditions, because _"the only reason for an OS kernel existing
in the first place is to serve user-space."_ That alone refutes the whole
argument.

------
evanlong
Come on people the future is node.js and MongoDB. WE DON'T NEED KERNELS!!!
Async programming IS JUST SO MUCH FASTER!!!

------
caycep
This is straight out of the original Tron!

------
unicron
I reckon that "drug induced microkernel" was a stab at Tanenbaum :-)

~~~
radious
Pretty stupid stab, to be honest. Every major desktop/workstation operating
system uses microkernel or hybrid architecture (even NT, yeah, that's true; I
know that Linux thinks hybrid is another word for macro-). And it is like this
for some purpose. To my best knowledge being macrokernel makes Linux "huge and
bloated" like someone has once said.

~~~
andreime
<http://en.wikipedia.org/wiki/Microkernel> search Windows or NT. OS X, Linux
and NT don't use microkernels.

~~~
radious
NT and OS X use hybrid kernels (as well as Plan9). Linus believe that hybrid
is another term for monolithic, but rest of the world does not.

AFAIR micro- ones are used by QNX and Minix. Monolithic kernels are used by
Linux, *BSD (with an exception for Dragonfly, which uses hybrid kernel),
Solaris, AIX(?) and more SysV descendants.

~~~
gillianseed
< NT and OS X use hybrid kernels (as well as Plan9). Linus believe that hybrid
is another term for monolithic, but rest of the world does not.

Count me out of 'the rest of the world' then. Perhaps you can point me to the
what part of NT which would make it a hybrid kernel as opposed to Linux. I've
never seen any explanation of this.

------
rogerclark
that guy is such a turd

------
oxxx
<3

