Had this been Kay's first mistake of this magnitude, it would indeed have been reasonable to expect Linus to have been more civilised. Anyone who has followed this more closely would know that this was nowhere near the first time Linus had issues with his code. Yet he did not appear to be interested in listening no matter what Linus told him.
The old writers' saw runs "Show, don't tell". It speaks to effective communication. It applies here.
Consider which is more effective in person - the phrase "I am angry" uttered in a calm tone of voice or profanity and insults in an angry tone of voice. One of those states anger. The other communicates anger.
Kalium, you bring up the strongest point in favor of defending and using verbally abusive language.
I've been through military basic training, and such language is routinely used because it is quite effective at communicating error by breaking down mental resistance and barriers to correction.
In that case, the potential for emotional harm is outweighed by the net reduction in the probability for physical harm on the battlefield if such lessons aren't learned absolutely.
Make no mistake: the kind of language Linus (and so many others in our community) uses can and does cause emotional harm, primarily to people who might be called 'thin skinned'. This is discriminatory against some personality types.
In the balance between using verbally abusive language to more effectively communicate error and not doing that, I believe there's no question: verbal abuse is wrong, and should be avoided, and not defended. There are other ways to accomplish the same thing, without all of the toxic side effects.
I agree, there are other methods to accomplish the same thing without the toxic side effects. That is not in question. The question is if those methods produce superior outcomes, as a lack of the side effects in question does not by itself represent a superior outcome.
Remember, the goal of an open source project is useful code. A friendly and emotionally supportive community is only desirable if it aids in achieving that goal.
This is, I think, a variant on the 'ends justify the means' argument. But sure, we can talk about that.
I concur that open source projects' primary and over-arching goal is and should be to produce good code.
When the leader of a project freely (though not so frequently in this case) uses verbally abusive language, that has the strong effect of limiting the diversity of potential contributors to the project.
I'm willing to assume that a more diverse project tends to be a project that will produce better code.
In this particular case, bad code wasn't included in the project. The abusive language did nothing to stop merge of bad code.
So did verbally abusing this developer somehow cause his/her future contributions to be of higher quality? I don't know the answer to that.
Or perhaps did this verbal abuse generally raise everyone else's code quality, because they didn't want to become a victim as well? Perhaps.
One thing I am certain of, though, is that such choices artificially and severely limit the possible side of the contributor pool, and that's bad.
An open, warm, inviting, inclusive, and friendly community that cannot author useful code is of immense social value but very little technical value.
I'm not willing to assume that a more diverse project and larger potential contributor pool will automatically produce better code. Not all contributors are of equal value. Some contributors are of net-negative value, particularly those like Kay who persist in such. It is highly desirable to limit the potential contributor pool to as few of those individuals as possible.
Size is not the sole meaningful measure of a contributor pool. Quality is equally - and often more - important.
When dealing with matters tangential to a core purpose, sometimes the ends do justify the means. When was the last time you thanked an open source developer for stopping development on features you needed (perhaps permanently so) in order to encourage the surrounding community to be nicer to one another?
The diversity that I am talking about has nothing to do with the variability of code quality. Like you, I want to produce and to consume the best possible code.
The diversity I'm talking about is in personality types. There's a lot of people, even on Hacker News, even in this thread, that would be excellent technical contributors to the Linux Kernel, except they have a personality type that requires them to spend more emotional energy dealing with verbal abuse, either directed at them, or just being flung about.
As you say, size isn't the most important measure of a contributor pool.
In my mind, angry, hateful language, especially if it is accepted by the whole, will greatly limit the amount of talent available.
Good development and merge practices has and will continue to keep bad code out.
And note, I have not said anything about being warm, friendly or inviting. I'm not necessarily suggesting those be specific goals.
Finally, nowhere have I suggested that anybody stop working on features, and instead 'encourage the surrounding community to be nicer to one another'.
A diversity of personality types doesn't guarantee better code either. I'm suggesting that there's a tradeoff to be had with the various aspects of open source that require time and energy. Spending an increased amount of time and energy on supporting a personality-diverse community (and less on other things, such as writing code) should not be assumed to automatically equate to better code.
There is a very real possibility that angry language results in an increased ability to ship code by discouraging more net-negative contributions than net-positive ones.