SJW here. Private communication works well if the problem is specific people behaving badly in private, and public ostracism is, in fact, inappropriate. But usually the goal is to establish a changed social norm, and to combat an existing one, which needs to be done in public; ostracizing an individual is not the goal (and, to be clear, isn't a good thing!).
Someone brought up the example of Ben Noordhuis and node.js elsewhere in this thread. Assuming for the sake of argument that Ben's behavior was something that you didn't want in the world, it's not enough to message him in private and say "Hey, this was wrong for these reasons." That gets you change within the node community (well, provided it's Ben acting), but not anywhere else. Meanwhile, if you object in public and write a blog post about it... do you think io.js is going to risk rejecting a pull request about gendered pronouns now? Or any other equally large, somewhat-overlapping language community?
I would definitely agree with the criticism that the blog post should have tried harder not to look like an attack on Ben as a person. But it reads to me like it wasn't the intention; it was an attack on anyone who acts in the same way.