Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

A spec is a contract between programmers and in the long run, it's better (for users and programmers) to follow specs and expect others to follow them, rather than to let others break them willy-nilly and just bend over backwards to accomodate.

Oh, but I guess since this point requires actual thinking to understand, it's not in the realm of reality...



I understand your point and the purist programmer in me agrees but maintaining compatibility in the face of horribly broken software is how Microsoft managed to get on top with windows. If you've ever spent time reading The Old New Thing ( http://blogs.msdn.com/b/oldnewthing/ ) you'd realize the lengths MS went to to make sure that even when they improved things, they didn't break bad software, and how much that meant for people adopting the platform.

Seems to me kind of an important thing to recognize in this kind of discussion.


Thanks for the thoughtful response.

I sort of agree with you but I think what you're saying applies to a different context.

As the person who was rudely lambasted by Linus pointed out, Fedora is not there to "get on top." It shouldn't be trying to go by the same metrics that Windows goes by. And this isn't an issue of supporting legacy software; if Fedora makes a particular decision, Adobe can just update their software to follow suit.


> Fedora is not there to "get on top."

What's the goal of Fedora? To satisfy intellectual purity or to make sure software runs for it's end users?


Honestly, isn't it more for the former? I mean, nobody pays for Fedora. AFAIK people work on it for fun and/or because they personally like to use the distro and see it improved.

I know in some ways Fedora is a testing ground for Red Hat, and if that's the "purpose" of Fedora, then the reason for doing anything shouldn't be "user experience" but "being a testing ground for Red Hat." Which may lead to the same thing, but is not the same thing.

I mean, there really is no 11th Commandment that says "Software is all about the user." No, it's about whatever the programmer(s) making the software want it to be about.


And I agree with you, but Linus is still right that the user is more important. When a Fedora user sees that Fedora is broken, all the user knows is that Fedora is inferior to other things.

So in a way, it is about supporting legacy software.


But there is no moral commandment that "the user is more important." The goal of software is the goal of its developers; it's up to them. Someone very well could say, "this software is an exercise in intellectual purity." Or, "this software is to scratch the developers' particular itches, which may or may not be the same thing as satisfying most users."

Maybe Fedora in particular has a mission statement that says, "The user is most important," but I'm not aware of it. I'm certain that's not the case for the distro I use (Arch Linux) :-)


They have two quotes on their front page:

"Since its first version, in 2003, Red Hat's Fedora Linux has been the best place to track what's on the leading edge of Linux and open source software." — Jason Brooks, eweek.com

"Fedora has [...] released an amazingly rock-solid operating system." — Jack Wallen, TechRepublic.com

Are either of those quotes truly true if the developers are okay with breaking existing functionality?


I don't see it as "breaking existing functionality." I see it as "improving functionality." Albeit at the expense of Flash temporarily not working. Is it worthwile to pay that expense? For some software, yes, for some software, no. The point is that there is no solid rule here that is true for every software project ( in this case, every Linux distribution).

"Since its first version, in 2003, Red Hat's Fedora Linux has been the best place to track what's on the leading edge of Linux and open source software." — Jason Brooks, eweek.com

I personally would consider something like Arch Linux to be much more on the leading edge, and they would definitely not hesitate to improve their software at the expense of something possibly not working on somebody's system until they get the new update.

Case in point: Arch Linux was the first to switch to Python 3 from Python 2. A long time after that probably should have happened everywhere. And everybody whined a lot about how it was "too soon" and lots of software would break. Personally, I haven't had any problems with that transition on Arch Linux. Did it break things for some people, temporarily? Yes. Did it move forward the state of the Arch Linux operating system and, honestly, Python 3 adoption in general? Certainly yes.

If Linus had been on their forum yelling IT'S ALL ABOUT THE USER and telling people their attitude is stupid, maybe it wouldn't have happened. (Actually, he would have just gotten ostracized from the community.) In fact, they did get a huge amount of flak, but they stood up to it anyway.


So what, if the spec says "jump off a cliff", you'd do it?

Linus explains in-depth why the distinction between memcpy and memmove is arcane and useless nowadays, shows how glibc's over-engineering crap actually hurts performance instead of helping, and that being a tight-ass (ie. doing /more/ than the spec) just makes the situation worse for everyone.

Are you all seriously thinking that Linus doesn't know about performance? He's not Miguel, dammit...


Why not change the spec to work right?


That takes time. What do you do in the meantime?


So what, if the spec says "jump off a cliff", you'd do it?

This isn't relevant to the technical issues at hand; it's just an insult. Exactly what I was trying to criticize Linus for doing. (That was actually the point of my comment.)

Are you all seriously thinking that Linus doesn't know about performance?

No, that's completely unrelated to anything I said.

I'm not familiar with the history of glibc here. I didn't read anything except the single comment from Linus that was linked to. And I'm only addressing the comments he made in that post.

You have not addressed what I actually said, at all.

I'm thoroughtly disgusted with the way I've been treated here, especially the number of downvotes I've gotten. What happened to the hacker news ethic of voting up things you like, but only voting down when someone is rude or malicious? Unbelievably, I'm now actually at negative votes. I guess I ought to take this as a signal that my comment was a disservice to this community, and consider that maybe I'm not wanted here.

By the way, I'm not interested in continuing this thread.


> I'm thoroughtly disgusted with the way I've been treated here, especially the number of downvotes I've gotten.

The first sentence of your post that is being downvoted is okay; it contributes something to the conversation:

> A spec is a contract between programmers and in the long run, it's better (for users and programmers) to follow specs and expect others to follow them, rather than to let others break them willy-nilly and just bend over backwards to accomodate.

I believe your second sentence is the reason you're being downvoted:

> Oh, but I guess since this point requires actual thinking to understand, it's not in the realm of reality...

That sentence is sarcastic, insulting to people's intelligence, and contributes nothing to the conversation. If you lose that attitude, I think your contributions would be better received.


Wait a minute, I think you're misunderstanding the intent of the sentence you're criticizing.

I was parodying Linus.

I was making the point that that's exactly what you should not do.


Not really. Linus's comment was direct and to the point: your attitude does not make sense and I don't like it. And here's why my way is better:...

Your comment was a passive-aggressive declation of stupidity in the other party.

The two are not the same.


Your comment was a passive-aggressive declation of stupidity in the other party.

Well, that is exactly how I perceived Linus' comment, which is why my comment came across that way.

Clearly I was wrong, but I thought everyone would find it obvious that Linus' reply was pretty much unacceptable (and thus understand the point I was trying to make... which was not a passive-agressive declaration of stupidity in the other party, despite how it came across).

As least in the comment that was linked to, all he does is "yell" (all caps) at the person he's attacking, and although he presents an argument, it doesn't address the things his attackee actually said; I (personally) found it to be thoroughly unsatisfying in an intellectual/technical sense.


Uhm, have you actually read the whole thread? This Andre guy was being an obnoxious rigid pedantic idiot and Linus was trying to help all the other people to just the the damn thing to work. I think behavior like this Andre guy's is not criticized enough in the industry - it's toxic attitudes like that that poison the whole environment, and I applaud Linus for not tolerating bullshit, in no uncertain terms - even in the 'position of authority' he's in.


Uhm, have you actually read the whole thread?

No, I in fact have not; I just looked at Andre's last comment and Linus' flaming response which did not address his points and was very rude.

You may be right that Andre was being a pedantic, obnoxious, rigid idiot. I have no idea, I didn't read the thread. My only point is that "THE USER IS ALL THAT MATTERS" is not a valid software principle and that rather than communicate anything useful, Linus just yelled at people (in the particular commen that was linked to from HN).


I was baffled as to how you could make a dozen comments in this thread and be so consistently dead wrong, but with this confession it makes sense — you simply have no idea what you're talking about.

Even worse, you aren't interested in getting a clue by reading the damn material.


I never wanted to spend the time reading the 100+ comments in the original thread; while it would be interesting and enjoyable to do so, I have other things that are higher priority right now.

However, I was pissed off by one of Linus' comments (which, taken by itself was pretty ridiculous), and made a comment on HN about it.

My comment was sarcastic in a way that I think was misunderstood and made many people angry. Many insults were hurled my way, and I tried to defend myself, resulting in an ever-worsening spiral. It's pretty much just become a massive shitfest.

I wish people hadn't been so quick to attack myself and my character (yourself included). This kind of thing is definitely contributing to the decline of HN, which is something being discussed lately (as always, I guess). And, yes, I'm contributing to it too by even trying to defend myself, or maybe by defending myself too aggressively.

I can understand if you read the whole 100+ thread and then point out that what I'm talking about is completely unrelated. That's true, but I wasn't talking about the whole discussion; just picking at a bit of unreasonable rudeness on Linus's part that failed to make any intellectually worthwile point. And I stand by that: the individual comment I was picking at (i.e., the one linked from this HN post) was pretty ridiculous.


You didn't communicate that very well then. Remember that no one can see your expression when you're typing on the internet :)


Yeah, that's good advice. I mean, I thought what I was saying was obvious in context, but in essence, not everybody had the same context as I did.


>What happened to the hacker news ethic of voting up things you like, but only voting down when someone is rude or malicious?

That has never been the ethic here: http://news.ycombinator.net/item?id=117171 http://news.ycombinator.com/item?id=392347


Ah... thanks for correcting me, and I must say, I'm very surprised to find that I was wrong about this.

EDIT: Well, on second thought, notice that in both cases, although pg stated the he thought downvotes should be used to express disagreement, more upvotes were given to other commentors that though downvotes should only be used to boo rudeness (which is my personal opinion, as well). So I think maybe there is a division in the community on how this is supposed to be done.

Actually, the experience I was just whining about is case in point for why some people think downvotes should only be used to boo rudeness. I think a lot of people downvoted me just because there was a response to me that was strongly worded, even though it was (in my opinion) not really even relevant.


What happened to the hacker news ethic of voting up things you like, but only voting down when someone is rude or malicious

If you intend this as defense, you'd best go back and look at your posts. You've been plenty rude, and arguably at least a little malicious.


I intentionally parodied Linus in my comment about "ignoring reality" to demonstrate how one should not act, but I think some people missed that that was a parody. If you're talking about something else, please let me know, because I have not been "arguably malicious," and I'd be surprised if you can find an instance where I'd been rude (except perhaps in defense against someone else's rudeness.. if you're talking about stuff in my past history).


Seeing this purely as a spec v pragmatism issue isn't going to get us anywhere. There is just no way around looking at each case individually. There are specs that are pie in the sky, outdated, flawed compromises or reflections of vested interests. But there is also a huge amount of lock-in and lost productivity resulting from lack or disregard of specs (e.g IE6). I see no way to be principled on that one.


> Seeing this purely as a spec v pragmatism issue isn't going to get us anywhere.

That's because it's not.

The spec ( http://pubs.opengroup.org/onlinepubs/009695399/functions/mem... ) explicitly states, "If copying takes place between objects that overlap, the behavior is undefined."

Which means the real debate is between two technically valid interpretations of the spec: one that arbitrarily breaks existing software for no discernible benefit✻, and one that does not.

(✻ Unless, for ideological reasons, one believes that breaking said software is the benefit, in which case this is still a sneaky and passive-aggressive way to go about it.)

It's even fair to cast this particular debate as nonsense vs. pragmatism, because that's what it is.


"Passive aggressive" hits the nail on the head.

If someone truly believes you should break software that made bad assumptions about memcpy, as a matter of engineering principle, then just stick this at the top of memcpy and be done with it:

  if((src <= dest && src+len >= dest) || (dest <= src && dest+len >= src))
    abort(); /* valid - spec says behaviour is undefined */


DAMN LIBC DEVS BROKE MY ABUTTING memcpyS!

;)


Thanks. This is an insightful comment and, yes, I see your point and agree with it.


This ideal is completely irrelevant here - the change Linus and many people are asking for here (aliasing memcpy to memmove) explicitly does <i>not</i> violate the spec; all the spec says is that memcpy is not <i>guaranteed</i> to work when the memory segments overlap.

The conflict here is between going above and beyond the call of the standards and in so doing encouraging expectations of that extra functionality in all software, or implementing only the bare minimum specified by the standards and in so doing breaking software as actually written. Given that this change involved literally checking for the relation between the source and destination address, and copying upward in one case and downward in the other (in so doing, implementing a function which is <i>also</i> required in the standard) adding this functionality to the de facto standard does not significantly increase the barrier to entry for new developers.

I think the ideal solution would be a note in the standard hinting that memcpy can be implemented with memmove, or even better, a deprecation of memcpy in favor of memmove with memcpy being in the interim aliased to memmove, but standards changes are always a pain.


Contracts are written and signed. Specs should wikied.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: