
Torvalds: Standards are paper. I use paper to wipe my butt every day. - statictype
https://bugzilla.redhat.com/show_bug.cgi?id=638477#c129
======
fleaflicker
That's a deceptive title. The real point is more important (but less
sensational):

 _Reality is what matters. When glibc changed memcpy, it created problems.
Saying "not my problem" is irresponsible when it hurts users._

~~~
d0m
That is something I don't like about Linus. He's so aggressive when he speaks;
it's insulting. Explaining to the guy the good attitude to have toward
backward compatibility and "not my problem" thing, is totally great. However,
doing it in a so harsh tone is just plainly aggressive and useless. In fact,
I'd argue that it is even less than useless as if someone talked to be like
that, I'd be even less reticent to try to help. Add to this the fact that
Linus, being well known and respected, simply demolished him. It's like if I
kicked my little 12 years old cousin' ass in front of everyone to make him
understand that we he did wasn't right. Good job Linus. I feel like posting on
this forum now.

~~~
antipaganda
You've got to understand that it is very hard for highly technically
proficient people to be nice to everyone. For someone at Linus's level, a LOT
of time is spent answering what seems like the worst kind of stupid questions.

This causes massive compassion fatigue. Take that into account, and it becomes
clear that Linus is not as big an asshole as you think.

~~~
joske2
I doubt that it has anything to do with technical proficiency. People like
Steve Wozniak, Alan Kay, Tim Berners-Lee don't have the reputation of being
assholes.

In general, sites like Hackernews or Stackoverflow wouldn't work at all if
smart people couldn't handle answering basic questions without being jerks.

~~~
dalore
For every non-asshole, you can find an asshole with technical proficiency.

For every Steve Wozniak there is a Steve Jobs.

~~~
kragen
You're incorrectly implying that Steve Jobs is technically proficient. He's an
electronics technician and a cult leader, not a hacker.

~~~
deltriggah
I've known people compensate for their technical shortcomings by playing nice
to everyone. Usually Engineers who happened to be Engineers by having a degree
but don't have the passion for it and just in for the money. Asshole ones are
the type that don't compromise just to be agreeable.

~~~
kragen
You may have posted this in the wrong subthread; we were talking about Steve
Wozniak, who's toward the top of the the 99th percentile both for niceness and
engineering passion, and Steve Jobs, who's such an asshole he cheated Woz on
contracts they were doing together and whose engineering skills are limited to
stuffing circuit boards.

------
ot
These fights between "specs lawyers" and "pragmatic" programmers are painfully
frequent. Reminds me of the ext4 controversy on the out-of-order metadata
synchronization.

Linus himself has already expressed his point of view many times, for example
here ([http://www.h-online.com/open/features/GCC-We-make-free-
softw...](http://www.h-online.com/open/features/GCC-We-make-free-software-
affordable-1066831.html?page=4)):

> Torvalds has his own take on this, which is that "For some reason, compiler
> developers seem to be far enough removed from 'real life' that they have a
> tendency to talk in terms of 'this is what the spec says' rather than 'this
> is a problem'."

I couldn't agree more.

~~~
bmj
Agreed. We have to produce a lot of paper doc in my domain, and in our bug
base, there's a section dedicated to spec bugs. Just cos it's in the spec
doesn't make it right.

~~~
kabdib
And the spec may be right, but it's still the wrong thing to do.

Applications are complex, fragile things. If you care about keeping them going
over time, you wind up kowtowing to a lot of workarounds. Welcome to the
software industry.

The attitude of "I can change library Z, be spec compliant and still sleep at
night even though the change took half an industry down" might be /correct/
but it is not going to retain customers. Do it enough, and you'll see users
flee.

~~~
mgkimsal
"Do it enough, and you'll see users flee."

Unless there's no where else for them to go. :)

~~~
kabdib
IBM was a master of this: Get a customer cornered and then bleed them. There
are modern versions of this, too (Oracle springs to mind).

"Nice business you have here. It 'ud be a shame if something were to . . .
/happen/ to it? Right?"

"Right, boss."

"Shaddap, I ain't talkin' to youse."

It's a successful, ancient business model.

------
chuhnk
"Bullshit. You clearly don't know what you're talking about."

Tells it like he sees it. I'm not going to argue with the man. He makes some
good points. The user really doesn't care what the underlying changes are as
long as everything continues to work, in this case it does not. Reading back
through the comments its clear Linus makes great suggestions which are left
unheard.

I like comment #222 <https://bugzilla.redhat.com/show_bug.cgi?id=638477#c222>

"Breaking existing binaries with a shared library update IS A BAD THING. How
hard can that be to understand? If you break binary compatibility, you need to
update the library major version number."

~~~
e40
This hit the product I work on and I agree 100%. We had to scramble for days
to fix this. (Find a test case, diagnose it, make the fix, release a patch.)
It was a pain in the ass. At least the solution was a 1 liner.

~~~
xilun0
explain how you fix any bug or change any implementation by still respecting
your side of a contractual interface without breaking said "binary
compatibility" when using this broken definition of "binary compatibility"

exposure of a random proprietary software bug written by morons does not imply
breakage of "binary compatibility". some free software developers have no time
to test their standard compliant library against all crappy proprietary
software ever written under the sun. if that makes you sad, at least you are
free to modify the fucking library for your own little use case, or even to
fork the library and maintain your fork with an explicit policy of never ever
changing externally observable behaviour (probably meaning you won't make any
change to said library (other than in comments) if you REALLY apply this
rule...), which happily glibc never had and hopefully never will have.

------
ximeng
Upstream glibc bug here:

<http://sources.redhat.com/bugzilla/show_bug.cgi?id=12518>

Assigned to the inimitable Ulrich Drepper, who comments:

"The existence of code written by people who should never have been allowed to
touch a keyboard cannot be allowed to prevent a correct implementation."

~~~
CamperBob
_"The existence of code written by people who should never have been allowed
to touch a keyboard cannot be allowed to prevent a correct implementation."_

Sounds like Drepper needs to read the standard C library spec (or else there's
a human-language barrier at work here). It is not _incorrect_ to map memcpy()
to memmove(). ("Be conservative in what you send, and liberal in what you
accept." -- Postel)

Can anyone imagine this debate happening inside Microsoft? This is why they
win.

~~~
xilun0
sounds like you misunderstood what Ulrich wrote

~~~
CamperBob
Could be. What's your interpretation?

Bear in mind that I'm an experienced developer, and consequently am reluctant
to call someone a "moron" who should "not be allowed to touch a keyboard" on
the basis of the occasional bug in their code.

Yes, confusing memcpy() and memmove() is a novice mistake, but I've done
dumber things, and it'd be nice if my users didn't have to pay the price. If
the OS or CRTL can save them from my error by rendering the error harmless
without any real downside, then it should do so.

------
famousactress
I think it's awesome how focused someone who works on the very lowest level of
the OS remains so focused on users, and their experience.

~~~
j2d2j2d2
You might also enjoy this "USE KDE!" rant from a bunch of years back.

[http://tech.slashdot.org/story/05/12/13/1340215/Torvalds-
Say...](http://tech.slashdot.org/story/05/12/13/1340215/Torvalds-Says-Use-KDE)

~~~
sudonim
I wonder what he thinks 5 years later? It seems like Gnome is the default on
most distros. Are the attitudes he describes still influencing Gnome?

~~~
streptomycin
[http://tech.slashdot.org/story/09/01/24/1842218/Linus-
Switch...](http://tech.slashdot.org/story/09/01/24/1842218/Linus-Switches-
From-KDE-To-Gnome)

------
DeusExMachina
Going down the thread I found this little gem in one of Linus' replies:

 _Why? Because _users_ are the only thing that makes software useful. Software
isn't useful on its own. You cannot say "this is the right thing to do" unless
you take users into account._

------
mjs
I find it interesting that Linus seems to have originally come across this
particular bug report as a user; he, too, was having a problem with Flash
player:

<https://bugzilla.redhat.com/show_bug.cgi?id=638477#c8>

"I see this as well. Sounds like clipping or some really bad sample rate
frequency conversion."

(It's only later that it becomes clear that this is due to a glibc
"regression".)

~~~
acqq
For the long history of how some glibc developers are enjoying to make _more_
problems to the users see also:

<http://www.tuxradar.com/content/debian-ditches-glibc-eglibc>

I consider all this a real attitude problem.

~~~
tptacek
The first bit of evidence linked to by that article is glibc's maintainer
complaining that he's being asked to improve the strfry() function, after a
detailed technical analysis. If you don't know what strfry() is, that response
does look unreasonable. But he's right! strfry() is, literally, a joke
function.

~~~
viraptor
Yet, it's there. I'd understand the reaction completely if it was an "It's
broken. Fix it." bug report.

But this one is "It's broken, this is how, this is data confirming it, this is
a patch and that's how it's fixing the issue." The work is done - review,
apply, release. Or if it's considered such a joke that it's not worth fixing,
just remove it completely.

~~~
tptacek
It's only broken if you don't get the joke. Asking someone to review and merge
a patch for strfry() is, if not unreasonable, then at least something that's
reasonable to say "no" to.

~~~
mukyu
He didn't just say no though.

When presented with a model bug report (includes good description, test cases,
and even a patch) he felt the need to change the function, but instead of
using the supplied patch he rewrites it himself and commits it without testing
it. It is still broken. When this is pointed out he gets angry and complains
about people wasting his time, when it was he that decided to waste his own
time rewriting it his own way and he was the one that still got it wrong.

Everyone would have been better off if he had taken the sensible path of "read
bug report", "confirm bug", "test patch", "commit patch" instead of arguing
and rewriting things out of spite.

------
s3graham
Kernighan & Pike:

    
    
        The ANSI C standard defines two functions: memcpy, which
        is fast but might overwrite memory if source and destination
        overlap; and memmove, which might be slower but will always
        be correct. The burden of choosing correctness over speed
        should not be placed upon the programmer; there should be
        only one function. Pretend there is, and always use memmove.
    

Shucks.

Also, static linking.

------
genera
Linus makes fine points, but it's asinine to say that standards don't matter.
His _entire_ contribution to the world could not exist without them.

~~~
exch
I couldn't agree more with this.

I may be overdoing it a bit here, but personally I don't agree with Torvald's
p.o.v. at all. While user experience is obviously important, allowing mistakes
like this to go unchallenged by simply providing a work-around just encourages
people to write broken software. Specs exist for a reason. Ignoring them is
not it.

I do this in my own software as well. If a user files a bug because input X
fails to process as expected -- and it turns out his/her input does not meet
the spec -- I do not supply a fix. Even if his/her supplied input is widely
used in 'the wild'. While this alienates a considerable user base, I refuse to
be part of the problem.

~~~
protomyth
If early web browsers has stuck to the spec and rejected all "bad" inputs,
then web probably would have been a better place today. Sometimes the user's
interests are in the future not in the now.

~~~
s3graham
Or maybe it would be as popular as gopher, and we'd all still be ftp'ing shit
around.

------
javert
A spec is a contract between programmers, and _in the long run_ , following
specs is good for users. Letting Adobe ignore specs and then bending over
backwards to accomodate them doesn't seem like a good policy.

And even if following the spec weren't better for users in the long term, it
_is_ technologically superior, and Fedora is free to choose the
technologically superior alternative over pleasing the masses if they want.
Despite what Linus suggests, there is no Ten Commandments of software that
dictate the rules here.

I guess Linus could have used this opportunity to convince a naysayer like me
why I'm wrong, but instead he was just insulting and didn't address the real
points at all.

(And FYI, I'm a diehard Linux user)

~~~
SoftwareMaven
So, glibc changes, breaks adobe, and it is adobe's fault? Even if adobe was
relying on bad behavior, it was glibc's bad behavior it was depending on.

These are the kinds of problems that finally convinced me to move from Linux
to OS X. I get the Unix without the egos (just the fanbois, but I can usually
ignore them ;).

~~~
kjhgfghjm
Adobe had a bug which worked because of a Bug in memcpy(), the bug was fixed
and Adobe's code broke.

win95 had a similar one with the game Civilisation, they actually put code
into win95 to detect the game and change the way the OS worked - doesn't sound
like a good solution

~~~
ot
I guess you are referring to this:

> I first heard about this from one of the developers of the hit game SimCity,
> who told me that there was a critical bug in his application: it used memory
> right after freeing it [...] the Windows developers, who disassembled
> SimCity, stepped through it in a debugger, found the bug, and added special
> code that checked if SimCity was running, and if it did, ran the memory
> allocator in a special mode in which you could still use memory after
> freeing it.

(from <http://www.joelonsoftware.com/articles/APIWar.html> )

------
yuvadam
You gotta _love_ Linus' writings.

~~~
dtby
I do wonder on what basis I must _love_ his writings.

I'm not a Linux guy, so I am out of the loop. What makes these writings so
lovable?

~~~
rjbond3rd
He's straightforward.

~~~
cema
And smart. This is an important ingredient.

------
guan
Linus: “I (obviously) always compile my own kernels”

------
bcl
I like comment 132 better -
<https://bugzilla.redhat.com/show_bug.cgi?id=638477#c132>

~~~
rwmj
Good, although that's also an argument for ditching C and using a decent high
level language instead.

------
tluyben2
Although I like the attitude on some level and in this case he is obviously
right, the problem with it is that our (and others I know) programmers feel
like cowboys after reading HN posts like this. 'Ruby master bla says I don't
need comments and documentation man!' 'Testing is sooo 00s; we use our
brains!' 'Specs and standards are paper, read Torvalds; he uses that in his
watercloset! Yeah he isn't talking about specs, but those are paper too!'.

------
vorg
Specs are great: Java and Scala both have specs. Not having a spec can be OK
if the language designer doesn't change things too often, and announces it
well in advance when they do, e.g. Python.

What's worst is, say, when the language "Product Manager" leads a
standardization committee that hasn't done anything for 7 years, yet often
changes the language implementation overnight so code samples in other
people's books and blogs no longer work.

~~~
pnathan
What language is that?

------
Confusion
Is this submission a deliberate attempt to make Linus look bad? The title is
not at all what his comment amounts to; it could be removed from comment post
without changing the meaning. I don't doubt you can find a multitude of quotes
of Linus in support of various, official or pragmatic, standards. He was just
polemizing.

~~~
statictype
It wasn't an attempt to make him look bad. I think many/most people here would
agree with the sentiment about standards vs actual usage. And that line was
delivered with classic Linus style - blunt and with the subtlety of a
chainsaw. That's why I chose it for the title.

------
marshray
Keep in mind the specs were written to standardize the behaviour that existed
at the time: there were implementations of memcpy that worked a bit faster
because they didn't have to test for overlapping regions. That's why there's a
separate memmove function in the first place.

So people saying that memcpy should work like memmove are really the ones
advocating for changing a spec that is currently quite explicit.

Enabling this type invalid behavior from app code is a classic example of
introducing dependencies on undocumented behavior. Over time these
dependencies accumulate in complex systems with the resulting effect of
_increasing_ software incompatibilities, not reducing them.

------
sriramk
The upstream glibc bug is worth reading too. My favorite bit 'Everyone is
interested in using the code idiots write'.

------
rcthompson
So, did anyone try out the workaround in comment 55? I tried it just for fun,
but Flash already doesn't crash for me, so I didn't see any difference.

------
rch
I don't use Flash on Linux.

But! what's interesting is how much I dislike the first sentence of comment
133.

------
abdd0e78
Linus himself has said that he has an ego the size of a small planet.

~~~
SoftwareMaven
Ego, _properly applied_ , changes the world.

~~~
raquo
Sometimes even to the better.

------
wazzupflow
Interesting; i wonder why more people don't get into Linux hacking.

------
dendory
Am I the only one that finds it amazing that in 2011 a mainstream Linux
distribution like Fedora is still having issues playing YouTube videos? I
mean... Linux on the desktop? wow...

~~~
code_duck
Yes, you're probably the only one thinking that, because the idea that there
is a problem with Youtube and Fedora is based in an inaccurate reading of this
article.

He said Youtube worked fine. It was compared to as a control. The problem was
with some other site using Flash.

------
known
Popular == Standard

------
srram
an analogy to the web: Quirks mode is a good thing

------
zeynel1
" _Standards are [just] paper._ "

He misunderstands how the world works. Standard is not just paper; standard is
the thing. From this site: [http://science1.wordpress.com/2007/04/26/matter-
does-not-exi...](http://science1.wordpress.com/2007/04/26/matter-does-not-
exist/)

    
    
        For physicists Newton’s atomic materialism is blinding. 
        It will take many generations of humans to perceive that 
        standard is the thing. There is no “physical” world  
        other than standards and density differentials.

------
intellection
Technical Aggression.

I prefer more people standing against intransient word & law. (Much is called
Standards, or Rights.)

Codes hold you.

Our support systems could allow critical viewpoints better.

------
binspace
Now we know Torvalds is regular.

