I think a part of SO's problem is its size. There are many other smaller communities in the Stack Exchange network that seem to be more friendly. The size of SO prevents it from becoming a community as such, which manifests in the lack of shared norms and ethics which can then be meaningfully enacted in practice.