I don't think there's a native English speaker in the world who reads the phrase "<x> is garbage" and interprets that literally as "this is just a metaphor for deciding not to use something and thus throwing it out." No, there's always vitriol, and the writer knows that, which is why they say it like that--because they're feeling vitriolic.
I'm sure you can imagine equally accurate ways to reject code contributions; it doesn't really take any creativity. When you say that the "true meaning" is lost, what you're really saying is the true meaning was to make the contributor feel bad. If you want to defend that, go ahead, but that intent needs to be out in the open, not hidden behind the plausible deniability of words.
The vitriol is the most important part of the message. If they don’t feel bad about what they’ve done what reason do they have not to do it again?
Without the vitriol you solve only the most immediate problem, when the true intention of calling something g garbage is to prevent many future problems. You learn nothing from being politely shoed off.
If the person you are criticising gives any kind of shit at all about doing a good job, they will supply their own 'feeling bad' when you demonstrate that they haven't done a good job. In this case, you adding vitriol is unnecessary.
If the person you are criticising doesn't give any kind of shit, then your vitriol will make them feel bad and dislike you, but it isn't going to improve their code quality, because they still don't care. (And if they answer to you directly, they are likely less motivated to do well next time now that you have acted like a prick)
If the person is not able to discern the difference between good and bad code, then it is useful to them if you can explain what it is that you are mad about when reviewing the code, but again in this case, vitriol without understanding just makes you seem like an arsehole to work with.
Are you arguing that it's impossible to learn without feeling bad about yourself? As in, you must feel personally ashamed and hurt, or else you're going to make the mistake again? If not, you're probably going to have to explain your position a little more, because that's how I'm reading it right now.
Note, this can't be some abstract equivalence between "feel bad" and "know you made a mistake," because if that's what you meant, then we're back to the vitriol being unnecessary.
Look back on your life. Do you remember the individual lessons in school? Unlikely. Do you remember the time you got sent to the principals office or the time you got yelled at for breaking a lamp or having a party? Much more likely. Lessons bundled with strong emotions make far better memories.
You learned pretty much everything that you are doing right now and I am fairly certain that 99% or more of that was learned without you feeling bad about yourself.
I for one can't remember a single lesson from school, yet I can still recall some of the stuff I learned and apply it, despite nobody yelling at me for doing it wrong at some point.
Being upfront and honest about stuff is all nice and good but when I give a code review or get one, I find it far better to constructively discuss stuff and not yell at people or insult them for whatever reason. Linus did not even ask why it was done that way, he did not have all the info. Would you prefer being instulted for doing something the "wrong" way, eventhough you had a perfectly good reason for doing it that way? Even if you knew it was "wrong" but there just isn't a good solution and you are just trying to fix the problem at hand?
For sure. The proximate lesson was 'make sure not to trust teacher X or administrator Z; those two are assholes who don't pay attention and just try to solve problems in whatever way is most personally convenient without caring about anyone else or what really happened or fairness.' It was an effective more general lesson in (a) what never to do if you want people to like or trust you, and (b) what to watch out for before trusting someone in a position of authority.
Well I don't remember any of that. Never was sent to the office, don't recall breaking anything save for one of my own plates recently. I do recall a few lessons though. Parties are more of a blur to me. If I recall something with strong emotions any other significant information will be lost. I am definitely personally not capable of learning from someone yelling at me. I will just feel remorse or awful about myself. That is not productive.
Being torn into and being called a moron, useless, pathetic, etc. leaves deep trauma that will bleed into other areas of your life. Even if you're tough and think you've brushed it off.
The idea that we're duty-bound to inflict emotional cruelty on people when we think they've made a mistake is probably the cause of most of the suffering we see in the world.
You can tell someone that their code is very bad and make sure they get it, without trying to twist the thumbscrews and make sure that they feel rotten to their very core.
I'm sure you can imagine equally accurate ways to reject code contributions; it doesn't really take any creativity. When you say that the "true meaning" is lost, what you're really saying is the true meaning was to make the contributor feel bad. If you want to defend that, go ahead, but that intent needs to be out in the open, not hidden behind the plausible deniability of words.