I understand why the Node.js circumstance induces further uncertainty in the implementation of a code of conduct, but I also think it demonstrates just how critical the issue is.
I don’t want to start a long discussion regarding the specifics of the Node.js case, other than to use it as an example of how easy it is to slip into a toxic environment. The developer in question had a long history of posting and supporting articles similar to the one that recently lead to the Google controversy — shitty arguments built out of shitty science that make bold conclusions whose immediate implications are the dismantling of any system trying to facility diversity. Ignoring the validity of these arguments, the ultimate conclusions are used to argue against the very existence of underrepresented groups in these communities, making it a very unwelcome place. At the same time the people making these arguments or supporting them hide behind mistaken calls to “free speech” (not relevant in a non-governmental setting) or “open discourse” (not relevant because of the asymmetric circumstances of the discussion. Long story short, these actions are classic dog whistles (actions easily ignored by all but the targeted parties).
What happened in the Node.js case is that numerous women who were getting into the Node.js community started complaining about the particular developer. And fairly, I would argue, given that I can’t imagine how can you feel that your contributions are considered fairly when the people in power to approve pull requests spend their free time sharing articles arguing that your efforts aren’t worthwhile. Enough people complained that a formal call for this voluntary resignation was made, the only possible resolution according to the Node.js organization bylaws. Of course the accused developer dissented and no one else in leadership had the power or desire to push him out otherwise.
I think that this highlights two very important points.
Firstly someone doesn’t have to physical or directly emotionally attack someone in the Stan community to make the community toxic. While we all know of people in academia who have gotten away with such atrocious activities, a different but similarly powerful toxicity is a vocal group of people consistently questioning the relevance of other groups and no one else in the community making it clear that such behavior is unacceptable. The immediate conclusion of this is that the intent of the code of conduct has to be enforced. When we see people making unacceptable claims on the Stan forums or issues list, even ones that seem mild, one of the devs has to respond noting that such behavior is not acceptable. Yes this will cause some people to leave, but I’d rather err in that direction rather than facilitating an healthy environment for underrepresented devs and potential devs.
This would all happen long before any calls for resignation or formal punishment of any kind is made.
Secondly this highlights the issue that it may be impossible to decouple Stan the project from some of the more prominent core developers. Andy’s blog is not under the purview of Stan — if extremely hypothetically he were to start posting papers making bad evolutionary psych arguments against female developers that would immediately reflect upon the Stan project. Even if he hasn’t done anything unacceptable within the confines of the GitHub pages or Discourse or even the weekly meetings, the damage would be done unless the Stan project not only was able to remove him but also put out a strong statement against that behavior. Same with me and my presumably private Twitter account, or the courses that we’re teaching that don’t have to be approved by the Stan project in any way. Consequently it very well may not be enough to limit behavior outside of “official” Stan media.
This second point also raises a serious issue about the ultimately sustainability of Stan. If some of us were to leave angrily or be forced out, Stan would very much become a different project. The name would be the same, but the evolution of the project could drastically in change just as much as if we forked the entire project. Which makes me less and less against a beneficial dictator (or board of dictators) for life approach, at least for high-level decisions like devs being asked to leave. If someone on the board became an issue the project might have to fork anyways, so what’s the difference?
Anyways, this stuff is hard and this stuff sucks but we have to do it or we leave ourselves open to these problems. The code of conduct didn’t cause the problems in the Node.js community — even though it ended up not being enforceable it allowed the identification of a toxic personality that was preventing people from underrepresented groups from contributing and incited a fork of the project to remove his influence. Without a code of conduct it’s likely that Node.js would have continued unforked but with a far more exclusive and toxic community about which even good devs would have shrugged and unfortunately accepted.
My take aways:
An unenforceable code of conduct is better than no code of conduct at all. If we get to the point where we have serious disagreement about enforcement then we’re already at a point where the entire project is threatened.
A legally valid, enforceable code of conduct with clear policies would be ideal, but also nigh impossible given our resources. In my opinion the argument that we have to wait for such an ideal to adopt any code of conduct is terrible given the above.
The spirit of the code of conduct has to be a serious concern of (at least) most of the Stan dev team and we have to be willing to make that clear by addressing any issues early and often. In particular, if complaints are made about dev behavior outside of formal Stan media then the Stan organization has to make a statement addressing the issue.
In that event it is unlikely we will have consensus and we’ll need some official voting procedure. While it would be great to have something more formal with set term lengths for voters and procedures for becoming a voter, an initial beneficial-dictators-for-life board would be a reasonable starting point. Again, if there is too much disagreement there then there are probably bigger issues for the project.