Personally, I think the suggested rewrite does a good job of defending the argument
for ranting:
http://catcode.com/comments/2015/cf20151101.html
Compared to the actual rant, it's deficient in explaining Linus's viewpoint in multiple ways:
- The phrases "The problem as I see it" and "I think", which I imagine Eisenburg added in an attempt to avoid jumping to conclusions or avoid making it personal or whatever, to me come off as hesitant or unsure. There is an authoritative rejection of the patch itself at the end, but still the revised post sounds like Linus is inviting people to post their opinions over whether the code is actually problematic or not. By contrast, the original post makes it clear that he is highly convinced that the code is bad and will need extremely persuasive evidence to change his mind. Now, you could say that it's rarely productive to solve problems by shutting down debate, and that he should invite opinions - but in truth, Linus probably would at least consider a sufficiently rigorous and detailed counterargument, and him clearly expressing the force of his opinion gives other people a signal that they should take the time to write such an argument, rather than being more brief (because they think Linus is hesitant and that that is sufficient), and then being promptly overruled, even if, given the chance, they could have persuaded him.
You might not see Eisenburg's version as hesitant yourself, but that's precisely the point - all language is ambiguous, but using reserved language errs on the side of having people think your opinion weaker than it is, while harsh language is the opposite.
Of course, the flipside is that someone who doesn't know Linus's history might well conclude that he's so angry as to be beyond reason, discouraging detailed rebuttals for the opposite reason. In fact, I think that is likely to happen in this case, and that therefore his post went too far - just because I am defending harsh language in general doesn't mean I agree exactly with his tone choices. There are certainly potential midpoints between the actual rant and Eisenburg's version that would clearly establish his position without being quite so mean. But hindsight is 20/20, and the problems with Eisenburg's version show the danger in general of being reserved in online text communication, given its low bandwidth.
- The rant also makes it clear that he thinks the whole idea of using such functions is bad, and that other authors writing somewhat similar code should also consider themselves warned, whereas Eisenburg's version makes it sound more like his complaint is specific to the case at hand - e.g. the especially poor formulation of the line criticized, compared to more elegant ways to use the overflow arithmetic functions, or the implementations of those functions.
- Nethercote explicitly noted that the rewritten version is much shorter, but actually it is missing two important factual details:
1. The claims that the code is not particularly safe, and inefficient even with "magical compiler support". (Eisenburg's version just says it's unclear and inefficient /without/ magic compiler support.)
2. The reason why Linus is pulling some random line to criticize out of a bug pull request containing many patches. Issues with pull requests are usually merge conflicts, so is there an unstated issue with that here? The actual rant makes it clear that the conflict just happened to make him notice that particular bit of code, which he found so distasteful that he felt he had to jump in.
By the way, I think Linus is full of crap: while the line at issue isn't great, the use of those overflow-arithmetic functions in general is a great idea, considering how easy it is to screw up a manual overflow check in C, and how ridiculously frequently this results in real security vulnerabilities (among other issues), including of course in Linux in the past. But that's mostly orthogonal to his manner of expression.