> Any sane cost function weighs between costs and benefits. If this guy
> was worth, say, 100 of your other programmers, perhaps you should
> tolerate up to 100 times more rudeness in compensation and still count
> yourself coming ahead.
There are three fallacies with this approach that make it wrong. The first one is the idea that there's some magic number that you can derive that gives you the worth of a person and eir contribution to a specific project or goal. There's a whole sociology course of reasons there, but a simpler one might be that it gets down to the 'mythical man-month' problem - you can't just hire another 100 programmers and make the project go 100 times faster, or even as fast.
Secondly, you're biasing our reactions by picking a large number. If Ulrich is worth 1.1 other programmers, what do you do?
However, what it really comes down to for me is that there are a bunch of groups - programmers, Red Hat, open source enthusiasts - who should just say "no" to antisocial behaviour. Calling people idiots or defining their work as a waste of time should never be excusable. If Ulrich was being sexist, defamatory or racist, would that still be OK (even if he was worth 100 other programmers)? I personally say no.
When we implicitly or explicitly excuse this kind of obnoxious behaviour, we make it acceptable. That to me is just not on. We can hardly say "show me the code" if we then scare everyone off who tries to contribute code. There are plenty of ways to deal with the bug reports that the EGLIBC people link to that would have been polite and helpful but still firm in his opinion and would have taken even less time to do than Ulrich expended on his inflammatory outbursts. We should learn better ways to interact, rather than excuse bad behaviour.