It's strange isn't it? When people do the same in places like this community (and other communities) they're immedietly downvoted or dismissed, unless they're someone held in similar esteem to Linus.
I think even here, where politeness is one of the stated goals of the community, people will forgive someone for being very direct (but not mean) if they're also insightful. My gut feeling says that if this conversation happened here and both parties were unknown people, Linus' posts would have gotten voted way up, because he's just so right.
But an attitude combined with less than excellent technical insight is, of course, going to get posts downvoted into oblivion. Well, -4, anyway.
I feel his raw response is reasonable there: the submitted patch stands against what has been tried and discussed for years. Developers ought to know the turf they tread on, instead of second-quessing.
On the other hand, I've seen him trying to strong-arm his view in another case in just the same manner. Only here he had no technical (nor organizational) argument, beyond, ``it's easier to hack glibc than make Adobe fix Flash Player and make developers read man pages of memmove(3) and memcpy(3)''.
I remember reading parts of that thread at the time, and being impressed at Linus standing up for end users. The background is important to understand his point of view: glibc was changed to in theory improve performance, but it broke flash audio and Linus couldn't see any performance improvement when he benchmarked it. So, his stance was to revert back to the working code. (Which come to think of it, is a very similar stance to this article.)
No he did not benchmark. Thus my remark on no technical argument.
Linus stipulated that the number of CPU instructions retired stays the same, so there will be no sizeable improvement of performance. That's hand-waving, not a benchmark. Somebody else posted a micro-benchmark showing better performance in his particular case.
((in the glibc discussion)) Linus stood for users in the short term (works here and now). Not for good development practices (read manuals, fix bugs, use modern hardware facilities -- here HAS_FAST_COPY_BACKWARD CPU feature).
EDIT:
nb., the ratio of instructions retired to CPU clock ticks depends on caching issues & such -- thus a particular memory access pattern will perform better than other. That's indicated by the HAS_FAST_COPY_BACKWARD CPU feature.
EDIT 2:
I'm aware I'm making risky remarks here; Linus have worked at Transmeta for several years, so he knows way more about CPU design and internals than I do.
>((in the glibc discussion)) Linus stood for users in the short term (works here and now). Not for good development practices (read manuals, fix bugs, use modern hardware facilities -- here HAS_FAST_COPY_BACKWARD CPU feature).
If you're creating an API(i.e. glibc) that everyone and their brother uses, it's a bad idea to break binary comparability in an update. You might be able to get away with it for a full version number change, but for point updates, it's a bad idea. If you're going to change it, add a new function.
You don't break binary compatibility in a major component without an extremely good reason(i.e. it doesn't work anymore). Forcing everyone to recode or even recompile to work with an OS-level component is just idiotic.
> If you're creating an API(i.e. glibc) that everyone and their brother uses, it's a bad idea to break binary comparability in an update.
Nobody argues for breaking binary compatibility. Because that's not the case there. Both functions remain perfectly compatible with client applications -- unless those apps are buggy themselves.
What got changed was an implementation detail -- order of bytes copying. Think of it as of a private member or method of an object, if you're an OOP head. Must be untouchable by outer code, and the outer code must not rely on its internal behavior.
Certain applications were making a silent assumption about the internal workings of the function -- and they used the wrong function. Working around that is not keeping binary compatibility; that's promoting bugs. [0]
> If you're going to change it, add a new function.
That's the current state of affairs. The memmove(3) vs. memcpy(3) distinction was created decades ago for this very reason. memcpy(3) may take extra optimization, because it makes no assumption about relation of source & target memory regions. memmove(3) may be easier to use, because it performs the right thing if the source & target memory overlap. The developer picks either. There's no other difference between them -- especially in the API. The best thing is, replacing one with another takes nothing -- you just change function name; arguments are exactly the same. Perhaps for the very reason of ease of replacing one with another.
From the man pages:
The memmove() function copies n bytes from memory area src to memory area dest. The memory areas may overlap:
The memcpy() function copies n bytes from memory area src to memory area dest. The memory areas must not overlap.
See? Nothing confusing there.
----
[0] A few years ago everybody and their brother were deriding Microsoft for pushing hacks into Windows XP to remain backward compatible with selected application -- like memory allocation workaround for the SimCity game. They did unsound engineering for business reasons -- increasing adoption rate of Windows XP. Now don't ask us to backpedal on that, and push bug compatibility into opensourece software. Don't ask for cart before the horse -- Flash Player before any non-buggy program. Don't ask Linux to follow in every footstep of Microsoft -- let's learn from mistakes.
please also note, the memcpy(3) and memmove(3) functions aren't glibc's invention. They aren't specific to GNU, Linux or glibc. You'll find the functions in every modern UNIX and similar OS, no matter if based on glibc or some other system libraries.
Again, from the man page:
CONFORMING TO
SVr4, 4.3BSD, C89, C99, POSIX.1-2001.
>A few years ago everybody and their brother were deriding Microsoft for pushing hacks into Windows XP to remain backward compatible with selected application -- like memory allocation workaround for the SimCity game. They did unsound engineering for business reasons -- increasing adoption rate of Windows XP. Now don't ask us to backpedal on that, and push bug compatibility into opensourece software. Don't ask for cart before the horse -- Flash Player before any non-buggy program. Don't ask Linux to follow in every footstep of Microsoft -- let's learn from mistakes.
You do realize that the reason MS was derided for that is because MS doesn't believe in backwards compatibility at all, right? They updated their API completely, which broke Simcity, then they went and added hacks to make it run. They had two more correct options. Either tell Maxis that it's their problem and that they needed to fix it, or actually maintain backwards compatibility.
Linux strives to maintain backwards compatibility, unless they absolutely must break it. This means that you maintain buggy behavior if it's used commonly. I work on multiplatform code, and moving to new Linux versions is almost trivially simple for us-99% of the time, we just have to turn on the new compiler and OS combination, and just build it. Most of the time, any actual porting efforts are done because there are new OS features that we can leverage for performance.
You have completely misstated the problem with SimCity.
"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, a major no-no that happened to work OK on DOS but would not work under Windows"
Still, the benchmark was for one particular case, and inconclusive (as in, ``testing can show X, but not lack of X'' ). Doesn't invalidate the finding of Ma Ling, comment #99, who got improvement in another testcase.
It's not strange at all. Linus has earned his credibility. Some people in this community have too (pg, joshu, patio11, it's a long list). But people are downvoted when they act like they've earned credibility when they haven't.
It seems you've missed my point. I don't doubt everyone you've listed has earned their credibility. What I'm trying to ask is "Why do you need to have earned credibility before you can be brutally honest with people?"
Because various forms of textual peacocking are frequently used by people who have no status, or knowledge, in a particular domain to try and appear as if they do.
This is part of what a system like karma tries to address, if you see a comment that seems accurate, but is delivered in a very direct or even slightly annoyed tone by a user with high karma, you assume that this user is held in high esteem by others and while their comment may not be elegant, it should be taken to heart.
Additionally, in the hacker sphere, it seems that many of the top hackers are also VERY busy with their projects. Thus, they may
have less time to spend prettying up a comment. The goal is to share knowledge or information in the most efficient manner. Not to share knowledge without worrying about hurting feelings.
Meanwhile, a direct comment from a new user with no standing in the community is likely to be met with some distrust or skepticism, even if wholly accurate. That user has not earned a status in the community. They have two options: 1) be brutally direct with all their comments and wait for people to realize they are frequently right, just inelegant. 2) start at least initially with more of a 'hearts and minds' campaign with their comments and build status in a more traditional method, slowly letting more of their actual personality come through in their comments.
Hmm, I'm somewhat surprised to hear this description of karma. Does this mean people click through on a username to discover their karma score before deciding if they should believe or agree with what has been written?
It seems pretty clear to me that karma mostly measures the amount of time spent commenting. An interesting metric, but not one I would look to to predict comment quality.
There have been times that I personally have seen a less-than-elegant comment from a new (to me) username. So, I check out the persons profile, look at their karma, other comments, submissions, etc., and then reply/vote/whatever.
Not very frequently, but one or two times a month maybe.
I think the idea is that being curt is a mild evil that is tolerable if the information contained has a high probability of being valuable. But if the person being curt (or even rude) has no particular bearing/merit in the listener/reader's mind, it just comes off as pushy or presumptuous, sometimes to the point where you are tempted to ignore what's being said altogether.
It's not ideal, but I think the basic version is: I trust you enough to put up with your "brutal" honesty, vs. who are you and why are you being a dick?
Because that's how people know that you know what you're talking about. I've seen many factually incorrect, heavily upvoted posts here on HN, and credibility is part of what lets me identify good material. For example, there was a post in the last few weeks about DNS -- I knew that davidu's answer was the one to trust, even though others were more upvoted.
Speaking as a scientist, "don't think about it, don't care about it, just trust someone" is contrary to my nature.
I was born with a burning desire to understand. Everything. I just wish I could locate a group of like-minded people to work with. I've been somewhat dismayed to find that "the real world" consists mostly of people whose sole ambition (or sole reality) is to fulfill their current role, without ever analyzing what it is they are doing or striving to improve the overall project.
Status is very important. I wish it weren't so. At my last job, I was using EC2 to devise solutions to problems that they truly believed were technically unsolvable --- but no one would listen to me, because I was a newcomer. Their faith in the senior technical engineer was absolute and unwavering, and the senior technical engineer believed it was unsolvable, so therefore it was, for all intents and purposes, unsolvable. (After all, nothing ever came of my research, because no one cared enough to listen, or had time to think about something other than their current, immediate goal.)
Worse, they even became offended when I tried to research the "unsolvable" problem in my own spare time. Status really sucks.
I feel the same way about understanding things, but I don't have the time to understand every concept in the world from first principles. Nobody does.
When there's a discussion on DNS, I like to know what's going on, but I can't take 2 years to go learn everything there is to know DNS (Well, I could, but I'm not going to). Luckily I know there is someone here who has done this, and until I have more or better information, I'm going to trust him. It's a necessary shortcut.
Status often does suck, but it's a necessary evil. There is too much information out there -- filters of some kind are necessary, and status is more reliable than most
If you're going to state an opinion, you ought to give some justification. Linus can use as his justification the experience he has gained from running a major open-source project. Someone who has not run a major open-source project cannot use that justification. If pg wants to talk about starting a successful company, he can use as a reference his experience starting that thing he sold to Yahoo! for loadsamoney, et cetera.
It's not really about credibility, it's about status. Bad behavior -- and being this rude is bad behavior -- is much more tolerated in high status individuals, in every type of community. Just like (extreme example) how senators and Goldman Sachs CEOs can walk away with a slap on the wrist and a little bad press, where you or I would go straight to jail.
If it were just about the value of the information conveyed, people would do their own research when a person is "brutally honest" with them, and decide whether or not that information itself is credible.
The confusion lies in the fact that in a community like HN, that worships logic (and also success), those things that make you "credible" are what make you a high-status individual. That means even the statements those high status people make which are NOT credible themselves will be accepted, or only gently rebuffed. (Which is a big reason why you don't see much criticism of pg here, or when you do, it's very respectful, vs other authors, even when he writes something ridiculous.)
I would tolerate it because I think that's how he needs to act to keep the project from becoming a POS. Being nice/courteous often gets you design by committee results.
Also, I might be swayed by his credibility, but what he's saying sounds reasonable.
I don't think anyone has really argued about WHAT he said. It's just a question of how he says it. There are many, much politer (and probably more effective) ways to say the same thing.
Well that was part of what I was saying - being able to reprimand effectively is part of what makes him a good leader for this thing. Being excessively polite and sugar coating everything doesn't instill the same desire to do things right next time. I think he's acting exactly as he needs to.
You're creating a strawman -- there's a big gulf between "being rude" and "being excessively polite." On top of that, I've never seen any proof that suggests that leaders who create shame & embarrassment & anger work better than leaders who inspire.
>"(Which is a big reason why you don't see much criticism of pg here, or when you do, it's very respectful, vs other authors, even when he writes something ridiculous.)"
If you think someone is being ridiculous why don't you say something.
People don't do it because it is counter productive. Respected people have their supporters. Unless you first bury your argument in adequately respectful terms it will get downvoted. Regardless of content.
You cannot say "The Linus rant about C++ is just wrong". You need to first blather on about why Linus is a great guy but has his limited perspective and from that perspective he is correct. However there is a world outside of that perspective where he is wrong.
If I posted the Linus rant on C++ I'd just be called an idiot. Nobody would worry about my perspective because, to my knowledge, I don't have any supporters to appease.
It is just politics. It affects tech communities as much as anywhere else. People get invested in their side. If you challenge their side then you must be sneaky about it.
>You cannot say "The Linus rant about C++ is just wrong". You need to first blather on about why Linus is a great guy but has his limited perspective and from that perspective he is correct.
You may think that you have to appease people.
If you posted "The Linus rant about C++ is just wrong" then I would down vote you. Why is it wrong, why is it a rant, what's wrong about it - that's what gets my vote.
I thought we were building a Brave New World here away from political double-speaking and ass-licking and endless regurgitation of memes. Please don't give in.
>>"those high status people make which are NOT credible themselves will be accepted, or only gently rebuffed"
If you spoke up then your story of 'people with particular status not being challenged at all' was lacking. It's probably a form of hyperbole but it was your evidence that I was trusting to make the assumption about your action. I'll try to be more careful.
It's not so much "tolerated" as just a form of abusive willy-waving that powerful people can get away with. If Linus behaved like that in real life with real people he'd likely get punched in the mouth, repeatedly. It's amusing to read him doing it to other people but he is still behaving like a dick.
>But people are downvoted when they act like they've earned credibility when they haven't.
I downvote when people don't add to the conversation; when I consider them to be wrong or misleading (or when we had comment scores if they're comments seemed over-rated).
Personally I don't find anything wrong with the comment made there - the chap is just asking that things aren't done without a proper rationale. Doesn't seem brusque, harsh or patronising to me.
It is not strange at all. The purpose of kernel hackers is to build best OS possible and communication is a tool. If it has to be blunt and direct so be it.
HN on the other hand is the place where people come for communication and it is primary purpose, or secondary to - you know - news, but still very high on the list.
When Zed Shaw says stuff here, I think sometimes it's up-voted and some times it's down-voted. Sometimes the up-voted stuff is good and sometimes times the down-voted stuff is bad.
In ways, I think that relationship is better. Zed has carved-out the position of being celebrity who's not automatically respected. Being a curmudgeon myself, I respect him more for this...
Also, I've seen some high karma folks here still get -4's (back when karm was visible).
I guess people (especially smart ones) don't like being told they're wrong by anyone who they consider inferior even if that person is right. By inferior I mean anyone who can't immediately prove that they're superior by listing a bunch of amazing achievements.