Looking for a moderation process to enforce the CoC

Dear community,

Edit: this message was sent on behalf of the entire moderation team.

Through recent events and some people calling out to it [1], we–the moderation team–have realized that we’ve been lacking a good process for moderation in the channels covered by the Scala Code of Conduct. Until now, individual people have been moderating in a mostly “informal” way, without a known structure. While this way of doing things usually works fine for small isolated infringements, it is problematic for dealing with larger or recurrent issues. It is also difficult when it comes to justifying decisions to moderated users, as we’ve discovered, or when a member of the community wants to appeal moderation acts.

We would like to remedy this situation, which means finding a good process for moderation, giving a framework to moderators to address isolated cases as well as larger problems.

As a discussion starter, here is a draft of what we could do to at least solve the accountability problem, i.e., that when a person feels they have been wrongly moderated, that the moderation team can tell them why:

  • Small infringements are handled as already described in the Code of Conduct (warn, kick, ban) by individual moderators, at their discretion, with a private explanation to the infringer. A ban issued this way cannot exceed a fixed, known amount of time (24h?).
  • Each such moderation action is logged in a way that is accessible only to the moderation team, including the action taken and the reason, included citation of the problematic exchange.
    • Any member of the community can, at any time, request a copy of the log concerning them.
    • For privacy reasons, the log is never disclosed to anyone outside the moderation team, unless upon express request, in writing, by the concerned member.
    • Log entries are deleted after a fixed, known amount of time (6 months?), or earlier at the discretion of the moderation team.
  • The moderation team can discuss in private recurrent or larger cases of infringement. A collective decision by the moderation team may lead to bans longer than 24 hours, including indefinite bans. The decision must be motivated by logged infringements.
  • Such a decision is communicated in private to the concerned person.
  • A person may appeal moderation acts concerning themselves, whether small ones performed by a single moderator or large ones performed by a collective decision, to the moderation team.

Although the above should provide a fix for the accountability of the moderators, it does not give a clear path to ensure every member is treated equally. It probably deserves further refinement.

We would like to hear from you if you have specific suggestions for improvements, preferably motivated by previous experience (such as in other communities).

[1] A member of the community was temporarily banned from the scala/contributors gitter channel by a moderator (on an individual decision, as we are used to doing). From there, the matter quickly escalated beyond what an individual moderator could handle, and the moderator asked counsel to the moderation team. We had a lot of internal discussion to try to come up with a better process, which distracted us from the immediate case in front of us. We wish we had resolved it more quickly, and then taken the more general discussion public sooner. Since the ban was never intended to be permanent in the first place, and certainly not to go on for so long, it has now been lifted.


I think this is a good first pass. A couple of thoughts, some of which may be redundant with what you’re already doing:

All moderation actions should be communicated to the concerned person. (Which might be what you meant, but the order of bullet points makes it look like that might just be for larger cases.)

More importantly (and harder): the moderator should be prepared to engage with the concerned person, at least a little – to listen to and record their rationale if they present one. In an ideal case (although this is sometimes hard enough that I don’t think it can be required) to provide a bit of guidance how they could avoid making the same mistake in the future.

I’d also recommend that the moderation team occasionally do a collective retrospective, if you’re not already doing so – go through the moderation log together, talk about the general pattern of problems, and think about whether there are CoC clarifications that could be teased out.


I really appreciate the work being done to avoid the absolute mess that the case(s) which inited that post was.

The proposed process seems good, especially the reciprocity in it: members of the community are accountable, and so are moderators. As a long time member of FLOSS community, I can asses that you really need to prevent both abusive users to spoil the community, but also abusive moderators to fight private crusades against people they just don’t like even if they clearly stay in the boundsof the CoC.
There’s a whole literature about how human community evolve and need to prevent themself from abusive actors (who will naturally search political power). I can advise to read almost anything written by Peter Hinjens, as is experience with FLOSS community is easely transposable. I have a sweet heart for “The psychopath code” (freely readable here: https://legacy.gitbook.com/book/hintjens/psychopathcode/details), but " Social Architecture" (https://legacy.gitbook.com/book/hintjens/social-architecture/details) is the most relevant one. And almost a dozen blog post and memories relevant to ZeroMQ community, and of course the C4.1 process (http://hintjens.com/blog:93).
I also like other more broad reference: “Too Late for the Pebbles to Vote, Part 1” (and following) (https://status451.com/2016/08/09/too-late-for-the-pebbles-to-vote-part-1/) and the very good “Geeks, MOPs, and sociopaths in subculture evolution” (https://meaningness.com/metablog/geeks-mops-sociopaths).

Also: a public apology (hell, even some private ones) for the mess that handling of the above cases was would seem appropriate. Everybody can make errors, especially in face of new, complex problems and even more for social ones. We don’t ask anybody to be right the first time! Especially between adults, who know that life, and social constructions, especially on the internet, are fragile and prompt to bubble and explode.
But when something goes awfully wrongly for some unexpected and out of reach reasons, it is OK to just ask for pardon to the poor victim in the story. That’s also what make social interactions work.


These processes seem helpful!

One minor point of order: logs should not be deleted for as long as they are relevant to some moderation action or the potential for moderation; if someone is still banned, their logs should still be around so they can not just request but also receive a copy of the log concerning them. That is, the long-term ban shouldn’t just be motivated by the logged infringements but supported by the logged infringements in the system.

Also, I want to note that the CoC is much clearer about what to do in cases of rare extreme behavior than pervasive mild-but-negative behavior. It is not clear to me that the warn/kick/ban escalation pattern is a good model to follow for anything but relatively extreme behavior; if the CoC is intended to mean that, say, 45 mildly negative interactions add up to one offense worthy of kicking, we should say so. Or we should say what the history-dependence really is. Otherwise this will end up as a gray area which is very hard to keep consistent across moderators, and one where users cannot form a reliable model of what is expected of them.

(But that is a different point than the moderation process you’re presenting here.)


Yeah, it’s hard to nail down precisely how many milli-infractions equate a bannable offense :slight_smile: I don’t think we need to go there. The CoC is not jurisprudence, it’s about codifying the standard for what we consider acceptable conduct in our forums. Our shared goal as a community is to further Scala, and that includes creating a welcoming atmosphere where we can have effective knowledge transfer and collaboration on the relevant subject matter.

Consider the hypothetical case of someone, who does not share this goal, repeatedly acting against the interests of the community – even if this person carefully stays within the letter of the CoC. It is my opinion that they don’t have the right to use our own forums against us, and that we are free to exclude them. We invest time and energy in making these forums useful and friendly to the community, and we will not let that energy be diverted. Participation is a privilege subject to the CoC (as well as our discretion, within our legal right), not some inalienable right.


Can you clarify who “we” and “our” represents in your statement? I’m can’t tell if it means scala-center, EPFL, LightBend, contributors, or maybe community?

1 Like

This. Moderators need broad discretion to remove people from the bus if they’re bothering people. If you think it’s unfair you’re welcome to start your own. It’s not like the internet is running out of chat rooms.


link to Scala Code of Conduct: https://www.scala-lang.org/conduct/

it should provide clearer guidance on how community members can contact moderators. ticket on that: https://github.com/scala/scala-lang/issues/953


I was hoping to speak for “us” who agree that the CoC is a good thing, and that they are a necessary tool to “defend the investment” represented by the countless hours and the thankless work by the moderators, whether on Lightbend payroll, someone else’s, or as volunteers, that is essential in creating a community that people can enjoy and collaborate in freely.

Mostly, though, I believe the CoC should be invisible, and it certainly shouldn’t stand in the way of (critical) technical discussion (you can be critical without being an asshole – as recently discovered in the linux community).

This is a collective undertaking between so many parties, with Lightbend of course being my employer as well as a few others involved here.

There’s always going to be a minority that wants absolute freedom to say whatever they please. Fine, go create your own and see how that goes.

I’m happy to clarify more, if needed.


I was very happy to see the initial post here. I’m sorry to say I feel disgusted to see some of the responses (so far unfortunately both by Adriaan).

First to be clear, because there’s so much tribalism in Scala, I’m not friends with people being banned, nor am I part of any online Scala tribe/org, nor do I ever even use the chat rooms. I don’t have this opinion nor am I posting this due to some affiliation. I said I don’t use the chat rooms but I do want the freedom to and I used to feel welcome to up until the recent Lightbend behaviour and definately not now after Adriaan’s responses. That’s why I’m posting this.

There’s always going to be a minority that wants absolute freedom to say whatever they please. Fine, go create your own and see how that goes.

How is this a “welcoming atmosphere”? That reads pretty aggressively and dismissively to me. I wouldn’t feel comfortable participating in a space where someone who talks like that has the power (and demonstrated willingness) to ban, support the banning of, or encourage the banning of people for pretty much speaking the exact same way. tpolecat expressed the same sentiment without the derision which is I think model behaviour:

Moderators need broad discretion to remove people from the bus if they’re bothering people. If you think it’s unfair you’re welcome to start your own. It’s not like the internet is running out of chat rooms.

And related:

it’s hard to nail down precisely how many milli-infractions equate a bannable offense. I don’t think we need to go there.

No it’s not. It’s zero. You do need to go there because that’s exactly what created this mess in the first place. Being tolerant and diverse also means accepting or at least working with things you don’t like. You don’t get to hold all the power and then ban people who aren’t violating the CoC or causing anyone trouble because you don’t like them or something about them. If someone does something you don’t like but it’s not a CoC violation then you don’t get to use that. If it’s a problem, just ammend the CoC and fairly say “everyone, we agreed this was a bit of problem, these are the new rules”. What you absolutely cannot have is two people performing the same action with one getting banned (the final milli-infraction!) and one not. Screenshots will appear on social media, other people in the room will talk on social media and it will become known throught The Land that Scala is run by tyrrants who use the CoC as a weapon when they have the personal desire. Then people like myself will then get very riled up and so will others would might be thinking about participating - it’s damaging to the community. If someone’s going to get banned we should be pointing at the CoC and some demonstration of violation; hating on a non-human entity is fine as it becomes a choice of adhere|leave|ammend(-the-coc). We should not be pointing to people and their arbitrary discression and their “oh trust me there’s context, they added an emoji on github” ridiculousness because then banning results in hating on human entities (erm people), distrusting the fair use of power, and before long: feeling scared to participate lest you anger a mod even though you’re adhering to the CoC; all of which are bad outcomes for everyone.

In summary, I suggest we:

  • have the same rules for everyone
  • take away the power, or at least make it much harder, for mods to ban people who aren’t breaking any rules
  • get the people with the power to start speaking with respect and empathy

I suspect it’s intended to be, and that the intent is that people who insist on being allowed to say anything they want are indeed unwelcome – particularly if what they want they want to say amounts to being a douchebag for a significant part of the time. I personally agree that creating a welcoming atmosphere for people who insist in being a douchebag is not the best moderation policy.

The problem with that is that qualifying “being an utter douchebag” is difficult to qualify and to an extent subjective.

So either you can’t have the rule that people being utter douchebags aren’t welcome, or you can’t have all your rules be fully objective and measurable.That’s one of the core problems.


You can disagree with a reason, but please do not say that there is no CoC violation, that moderators are banning on a whim without reason, or that it is ridiculousness. I do not want to get into the specifics of that exact case, as this thread is about a broader discussion, and not about the merits of that moderation action, but I will say this much: emoji reactions on GitHub can express a wide range of emotions, and moderating someone for using one to express emotions which deride a contributor is not “arbitrary discretion” or “ridiculousness”. Again, you can disagree with reasons, and you can disagree about whether or not something violates the CoC, but don’t claim the reasons don’t exist.

You seem to have gone into this with the assumption that in the recent events to which you (and the original post) refer, there was no CoC violation, the moderators were mad with power, and that the problem was that any moderation occurred at all. Yet actually regarding the comment stated, your message seems to indicate that any number of very small violations of the CoC should be allowed, with no consequences. This is a somewhat odd position to take, and I don’t think you’ll find many people agreeing with you that unlimited small infractions should be allowed without consequence.

Your reply seems to diverge from a complaint about the suggested or intended guidelines to a complaint about a particular moderation action and the moderators involved with it. This thread is not meant (I do not believe) to discuss a particular moderation action, and replying as if these statements are a description of those certain moderation actions, and then attacking them as such, does not help the discussion. In their second paragraph, @adriaanm even says “[c]onsider the hypothetical case of someone,” clearly indicating that the comment is not in reference to a particular event or action that actually occurred.

If you take @adriaanm’s statement as one about general behaviour, then I think it is quite reasonable. There are some minorly unpleasant behaviours which are not a monumental problem, but if repeated regularly and consistently, lead to an unpleasant and unwelcoming environment. I think that I agree that it is difficult to say exactly how many of those individual small unpleasantries are a bannable offense, and that attempting to put a number on it does not help anything.

It is a welcoming atmosphere in that it states that negative behaviours are explicitly unwelcome. If people have absolute freedom to say whatever they please, then they can say very unwelcoming things. @adriaanm is saying (I don’t want to put words in their mouth, but I’m fairly certain I am correct here) that there are certain things one cannot say—namely unwelcoming things—and that if someone wishes to say those things, they are not welcome and can instead create their own community.


I do feel it would be helpful to have a summary of the posting issues. What are the main infractions of the code? How many posters are we talking about. What exactly are we really talking about? Are these infractors insulting contributors, are they insulting inexperienced developers, are they making posts that are considered racist, sexist or homophobic? Are they making posts that some people find offensive on religious grounds? Are they being “too negative” about Scala?

Moderators may be making totally reasonable, fair, impartial and compassionate decisions, but if the whole discussion is in vague, obtuse, elliptical terms, its not surprising if some people start to develop a Kafkaesque paranoia.


Let us not forget that this introspection began because a contributor was banned without being given a reason or timeline. Both of these failures (no reason and no timeline) are addressed by Sebastien’s proposal. The proposed process is therefore strictly better than the old arrangement and should be a no-brainer to approve it.

Recovery Centers

As a maintainer of multiple successful projects, I have received a lot of abusive comments directed at me personally, and I’ve burnt out because of the demands on my time. But that’s not something the Scala moderation team gets involved with, because it never happens in Scala channels, and although we have “police” we have no “recovery centers” or even the knowledge with how to deal with that, increasingly common, situation. It’s something I’d like the community to consider, instead of focusing on crime and punishment.

What Everybody Agrees

Everybody is in agreement that attacks on somebody’s character / race / gender / orientation / religion / etc should receive a ban in that room and that moderators should point out when discussions are inappropriate before it escalates: e.g. there was a discussion in May about race and religion that was clearly misplaced in scala/contributors that made a lot of people uncomfortable, but a lack of moderators meant it continued for much longer than it should have.


The most important questions are therefore: how should moderators measure “negativity toward Scala”, and how much should they enforce it? I believe measurement can only be achieved by having a representative group of diverse peers who can reach consensus on a case-by-case basis. If the moderators are a tightly knit group of friends with similar demographics then it is only inevitable that a kind of “old boy’s club” will be created with strong biases and cultural misinterpretation of intent. Inappropriate bans are hard for a community to forgive, and alienate contributors, so erring on the side of best intentions should always be preferred.


I believe that overstepping a room’s rules can be handled in a non-confrontational way: contacting people privately to ask how they are doing (i.e. de-escalation with empathy), or by peers responding with “that’s not the kind of thing that makes me want to continue this discussion” (i.e. a withdrawal of interest).

In contrast, the authoritarian approach (threatening punishment / exclusion) may be cathartic for the moderators, but it generates fear and bitterness. “Wrong thinkers” (who are likely to be passionate about Scala) find themselves excluded and unwelcome, leading to tribalism and an overall negative perception of Scala in industry.


I believe measurement can only be achieved by having a representative group of diverse peers who can reach consensus on a case-by-case basis

Great point … To me in addition to implementing Sebastien’s proposal it would be good to see the moderator team expanded to a larger team for sure to make better and more impartial decisions that is fair. This will achieve greater transparency to the process also and avoid any negative consequence to decisions.

1 Like

I don’t necessarily have a problem with moderators having discretion. Nor do I think that adding more rules to the CoC, or enforcing more rules in the CoC can really solve any problem that we’re having w.r.t moderation.

The fact is, this means very little. The moderation currently going on is discouraging valuable contributions from people who are being entirely silent on the matter. Just because they’re not interested in loudly complaining about Scala or trolling doesn’t mean they don’t feel uncomfortable because of the tone of the moderation. They’re gone, and they’re leaving and they’re sticking around silently on the sidelines, because they don’t want anything to do with you.

And adding more moderators cannot solve the issues we have with the existing moderators. If you have four good moderators, and one bad moderator, you are in a strictly worse situation than if you had only four good moderators.

Scala’s moderators have proven themselves to be overly insecure, to the point that snark about any topic but the language is fine, and criticism of the language or especially the language’s direction is almost outright banned. I’m sure this statement will provoke disagreement; I’d like to hear some disagreement from people who aren’t either involved in Lightbend, involved in the compiler’s development, or trying to be one of those two.

I think there’s room for a lot more cooperation in the Scala community. A few people on one side are being deliberately annoying, a few people on another side are being insecure about their technology, and most people are remaining silent out of fear. Is that how it has to be? Does anyone have to waste time suggesting that we remove features from Scala that are integral to it, or would require untenable migration work? Does anyone have to waste time replying and getting worked up?

At the end, what all of this manifests in is an inability for people to talk honestly about Scala’s quality. Some people who know what’s good about it are focusing on the negatives, and some people who know little about it are stifling discussion.

It’s time to talk about the elephant in the room. The moderation problem cannot be solved by any other measure; we need moderators to have full discretion, and not be overly legalized with useless rules that will be ignored anyway unless convenient.

There are moderators who need to be replaced. Which ones? From what I can tell, all of them. We need these people away from the public, making valuable technical contributions where they can do no further damage to the community.

I’m not saying this to piss anybody off, or to say anyone is a “bad person”, but because I’m astonished that nobody has said it yet. It’s amazing to me that such an obvious measure has gone unmentioned, and it can only point to what extent the community has been gagged and bound by those currently in power.

And don’t tell me “this isn’t helpful”. I can see that response already brewing. It’s a useless set of words. If we want to solve the problem instead of just being able to tell people “well, we tried everything”, this is the path we need to go down.

Edit: I say this partially out of sympathy for the moderators. At least one of Scala’s moderators has expressed previously how stressful the occupation is for them, in the presence of criticism; perhaps this is a sign that it’s just not a good fit.


Agree. I welcome these changes.


It has been my impression that snark is not acceptable, about any topic. It is possible I have not been around long enough, but I don’t think I have seen much of any snark that is just allowed and ignored by moderators.


I cannot articulate a response to this, other than abject confusion.

Suggesting that some or all of the moderation team should be replaced is not inherently unreasonable (regardless of whether or not I agree with it); however the phrase “we need these people away from the public” does not have great connotations in my mind. It implies that not only should they not be moderators, they should essentially be banned/evicted from the community, which seems very wrong.

100% agreed

I agree that this should definitely not be the first choice of action. However, if someone does not change their behaviour after being asked to stop in a less confrontational way, at some point there is no choice but to threaten (and eventually perform) some form of disciplinary action.


Thanks for clarifying my message – fully agreed with the more eloquent version you wrote :blush:

1 Like

I think CoC has a significant shortcoming.

It has the same rules for very different things.
There are

  • synchronous \ asynchronous communication(chat\forum)
  • local\global(team\corporate) group

For example chat has hard disadvantage(if it works correctly and everybody are reading its message immediately):
Every message breaks concentration.

If someone is working on really hard task, 8 message per day can significantly decrease his performance.

Why should some team have to allow such performance degradation?

For example we have very hard requirement on our corporate chat.
We use it for:

  • send really important alert
  • find people
  • organize local\private chat

Furthermore we have strong limit on private chat:
If you are not able to make decision within 3 message you should switch to voice conversation(skype, telephone, etc)

Of course we have team\rooms chats without such rules we are not robots :slight_smile:

It seems that misunderstanding occurs when people do not understand, why someone can make some joke\critics\news while other can not make it in the chat.

The CoC says we all equals. But it is a lie and it is a life :slight_smile:

An external man is not equal with team member even if he really wants to be equal with one .
Equality can be achieved only with same qualifications or works.

Whether you’re a regular contributor or a newcomer, we care about making this community a welcoming and safe place for you and we’ve got your back.

So there is confrontation.

  • one side: You distracting me from my work, are you Steve Jobs :slight_smile:
  • on other side: You declare equality, so why do you break your declaration

I think such confrontation can be reduced if we add more clear requirements to members and message of the chat.

1 Like