Random theory time: People who are harmful to the project, should be removed from the project. If you're not a company but an "open" project that can't fire people, you pretty much have to do this my making them not want to say. So if someone causes enough trouble, just pile on the verbal abuse until they get fed up and leave.
I think this is another false dichotomy. It's quite possible to efficiently limit the damage someone can cause to a project without resorting to verbal abuse.
Most simply, refuse to merge their stuff unless it has quality. You don't have to hold their hand; say: "You are making the same mistakes over and over again. Your stuff isn't going to get merged, and we're not going to spend any time explaining to you why."