As much as I hate the pussyfooting, heartwarmingly tender posture of the peace loving, criticism avoiding please don't shout and be quiet crowd:
When we do make mistakes, just point them out politely, there is no need to shout.
and regardless of how much I love the tough, impolite, harsh and rough posture of the flaming crowd:
The common refrain (enumerated in "Why Shout?") is "Can't we all just get along?" The answer is no. No, we cannot. Indeed, every community I've seen in which people "just get along" (usually through strict moderation) degenerates into a feel-good circlejerk devoid of any useful critique. You need only look at a place like DeviantArt to see this in action.
The alternative to this is a community in which criticism is largely unmoderated, inevitably leading to scathing critiques and outright flames.
I think there is a third way.
Disregarding the classical flame concept, which by definition contains personal insults, I propose a new classification:
a) technical flames, where mistakes are pointed out in a rough or hostile manner with no time wasting for politeness (note that in the example the insults are given to the technical contents, not to the person arguing for them) and
b) personal flames, where no technical content is given.
Couldn't a moderation system take care of the latter while allowing the former?
I believe it could. It just needs the proper moderators. Of course there will be controversial content and you have to draw the line somewhere, but just by doing nothing when unsure, that is, by allowing the content stepping on the line, everything should be okay.
I also believe it would be desirable. I'd rephrase the "there's no need to shout" for "there's no need to call somebody an idiot just because he is one". Just let the facts show him as one if you feel that kind of urge. It's harder, but a lot classier.