Looking for a moderation process to enforce the CoC


It seems amazing when you have met such misunderstandings first time.

But it is usual thing in chat.
Actually in the chat it is common to loss up to 80% information.
There is psychological definition in my country:

  • communication funnel

I will try to demonstrate:
It is for voice comunication(for chats it is worse)

  • you want to say 100%
  • you make transformation to the language and say it 80%
  • the others hear you 70%
  • the others understand you 60% (for chat may be 30% I do not remember precisely)
  • it remains im memory 23%


That looks like an extremely negative blog on Scala 3 to me. In fact it were someone’s deliberate aim to sabotage the transition to Scala 3, I would compliment them on a brilliantly crafted blog post. I’m not accusing of you writing with such intention, and if you genuinely believe the propositions made in the blog post, then there was nothing wrong in making them.

However if no project that includes a single line of the five million lines of Scala code that you have touched has any chance of moving to Scala 3, then the prospects for Scala 3 are incredibly dire. You are clearly someone of way above average intelligence, what I can’t understand is how you do not see the negative implications of the post as I do.


I said it came across as hostile to me. Whether it was intended to be hostile, I don’t know. What this is is a statement about me, and an indication that others may also have experience things like that, not a statement about you.

In my reply I indicated how things came across to me, and what may have been causes of irritations rising. People getting irritated by behaviour isn’t a violation of the CoC, of course, but I sought to explain how I felt, and how others may have felt as well.

The tweet you point at is not one of those. Maybe there are some in one of your many deleted tweets, but I’m not going to try and dig through that. Maybe my feelings and how I experience things may have been to some extent unjustified, I don’t know.

That said, it certainly isn’t a statement or judgement about your intentions.

There was at least one time I’m certain you’ve left :joy: emotes on a bug. And again, that’s not at all a judgement on your intentions, but it is a statement that came across to me as mocking the language you were leaving.

I’m not offended by that, and I find myself again in a situation where I’m not sure how I managed to give you the impression I am. It did give me the impression you were advertising in a way that you were leaving.

For one, the comment I quoted earlier:

Actually, I don’t care. Please just stop pestering me. I am no longer interested in Scala.

led me to believe you didn’t want to have anything to do with scala or people in scala.

All in all, putting it all together, it came across to me as celebrating leaving, and mocking what you’re leaving behind. Whether or not that was your intent I don’t know. You say it isn’t. That’s why it may be useful to you to know that it did come across to at least me that – and that’s why I keep engaging, even while being called a liar who makes things up about you – because I believe you are a smart and kind person, who right now is hurt, and angry, and may not understand why people behave the way they do/did

Obviously, I’m not sure about other people, but I tend to assume that at least some people are somewhat like me, and when you said that you assumed that people were behaving the way the are because feathers were ruffled by fp for mortals, I wanted you to know that at least for me that didn’t count, and try to explain that.

I’m done with that now. This is me, explaining to you, the way your behaviour came across to me. Maybe that can be of value to you. Maybe you still only consider it an attack on your person. Either way, I genuinely wish you the best of luck with whatever you’re moving on to.


I’m not sure how fruitful it is fighting over how some things did or didn’t come across for some people. I think Martijn is right that that is how some interactions did come across for some people at that time. Perhaps you and Emily were misunderstood, but it might help explain how that ban came about.

You did give sarcastic emoji reactions to certain contributors, and did say that you didn’t want to be bothered about anything related to Scala. That’s already been established earlier in this thread. You might not intend that as “loudly yelling about leaving” or “not wanting anything to do with anyone or anything” but other people could have interpreted it that way.

I actually agree that your blog post wasn’t as negative as most people on Reddit made it out to be, and could even be interpreted as positive. But you and Emily did make a big stink about typelevel and lightbend in other Reddit threads, and you did express your joy about not having to write Scala in some public venues. Among others:

Of course, as Emily proved earlier (I wouldn’t call a post bulging with sarcasm “civilised discussion” and “reaching consensus”, by the way), screenshots can be taken out of context.


I think that moderators should decrease misunderstanding. They should prevent bad practice which increase it.

But I can see that conflict had been increasing.

And if we are discussing moderation process.
Is there something that a moderator have done wrong?
I think I saw it.
Is there practices that allow to avoid it?
I think yes.


May be it would be better to say

  • you are wrong, the migration will be as easy as it will be possible. I think 80% of code can be work as is (or something similar)

A negative blog is not automatically bad blog :wink:
The mistake is not a bad thing.
The bad thing is when someone do not learn on mistakes at all (indcluding its own mistakes)


Just for the record: my impression was very similar to Martijn’s. I’m entirely willing to believe that Sam didn’t intend to come across as hostile – but having only been involved as a fly on the wall reading the Gitter conversations, that was how it sounded to me.

Yes, that’s entirely subjective, and I don’t claim otherwise – but that’s kind of the point. Human conversation is always subjective. (If I got one conclusion from Linguistics and Cognition courses in college, that was it.) This stuff is always going to be difficult, and it isn’t the slightest bit unusual for both sides of an argument to each think that they are the offended party, and that they are being entirely civil themselves.

This is why I’d advocate that the primary mission for the moderators should be to cool things down, when possible. Yes, it’s good for us to put a good face on for those who are new to the community; yes, we desperately need to encourage diversity; yes, it’s sometimes necessary to slap down someone who is being genuinely trollish. But most of the time we’re going to be facing honest arguments between decent people who are losing perspective and not understanding how they are sounding to some others.

Hence, I’d recommend that the first step for moderators, as a rule of thumb, be to take somebody (sometimes multiple somebodies) aside privately, explain that this is sounding a bit heated, and ask them to knock it off…


If a moderator is a professional psychologist it will be very good idea.
But if someone privately get anwser like: take it elsewhere
I think it will be more bad than if it happen publicly.

So private conversation cannot replace good public warnings.


I am glad everyone are getting things off their chest but can I say that even though this conversation started well and was relevant it has gone off topic completely.

As first step lets agree to the approval of Sebastien’s new CoC as a good stepping stone to move things in the right direction.

Can I also suggest as a next step a review of who will be the moderators and what will be the process of moderation so that everyone knows what to expect with some transparency. Would it be an idea those who have genuine interest in having a valid CoC and moderation plan to get on a google hangout call and thrash it out?

Also can I say I am appalled to see how this thread was turned into playground for attacking people. It takes effort and time to do that so makes me wonder how people like to spend their time. Did these comments add value to coming up with a good CoC?

Can I just say that the best developers I have worked with are very opinionated. And not always do each others opinions align. Voicing you opinion is progress in my opinion its called collaboration. If I hated this I would have to quit every job I had and not be part of any community and go and hide in a corner by myself. So how on earth can @fommil blog post be taken as negative. When I read his blog to me it said I am excited to learn something new like Haskell (I get excited about new stuff so this resonated with me) and Scala 3 has cool stuff coming but it will have its problems migrating to it (As an active python developer this resonated with me to see python 2 to path to python 3 it needed patience :slight_smile:).

Seriously lets work towards a happier future for the good of everyone. It is important to show appreciation for every member of our community and be kind regardless of the size of contribution being made to the scala community now, in the past or the future. We are all human and have feelings.


All this thread has made clear to me is that the insecurity of the moderators has leaked down into the community, making people into noble white knights, defending Scala from its evil detractors. My point has been proven exactly; all frank talk of Scala’s quality is quickly shouted down by people who are “tired of the negativity”, who have internalized this insecurity. All people can say without being shouted down is “oh man, I’m so excited to program in Scala! Scala sure is the best guys. Where would we be without Scala, the best programming language ever?” And then, the posts shouting them down are liked by Lightbend and Scala Center employees! How can this be viewed as anything positive?

Regardless, Sam’s beef with Scala hasn’t really been about technology at all, so bringing up the Scala 3 post as an example is disingenuous. It’s been about the continuous problems he’s had with the community. Where were you when he brought Ensime under Typelevel, and then lost all of his contributors? When he reversed that decision, and was barraged with private insults? When he wrote a book on scalaz, and a typelevel founder attempted to use it to inflame sentiment against him publicly? When he was banned for an emoji reaction? How can you pretend like this isn’t a problem? This smacks of gaslighting to me.

He’s not moving to Haskell because “it’s a better language”. He’s moving there because he thinks the people in charge aren’t as toxic. End of story.

“Only 3 people have complained about the moderation” reminds me of Kitchen Nightmares, to be frank. “But the customers don’t complain!” And yet, people aren’t returning to the restaurant. People vote with their feet.


I wasn’t referring to your posts. I agree with you that most people here were having a civil discussion. I think that Martijn is one of those people, and so are you.


I would consider it but there needs to be some proposal from ScalaCenter/Lightbend of what it would entail (which I guess is the the goal of this thread)


I sugest.

  • there should be a list of bad practice
  • there should be a list of good pracice

We have such lists in my company.
It is difficult to me to make translation( language and culture are different).
But it is very simple to do on real example.
For example in this chat I can see:

  • personal attack
  • complains
  • spam
  • Evangelism marketing( here are very much evangelism I just wonder why )

In our personal list we have:

Every case in the list must have:

  • the conditions where it is bad
  • the most often example on practice
  • the list of indecators for that practice
  • the description why it is bad.
  • recommended behavior\answers for others

Every warning should have a link to such case, so the member can argue with indicators of bad practice.

In my practice We have only 13 cases. So when we had made such lists we forgot about discussion on that

The good list:

  • Believes that the interlocutor initially right ( It strongly decrease confrontation) :wink:
  • etc
    In my practice we have 10 cases of good practice :slight_smile:


Not trying to diminish what you are saying, but 70% of the things mentioned here are out of scope from Lightbend/Scala Center and rather seem to stem from the ongoing cats vs scalaz schism.

Like honestly I don’t see what moderators can do in this situation if these things are done in private between different Scala communities.

This is something that cats/scalaz need to figure out between themselves, evidently there is still a lot of bad blood here.

EDIT: It also appears that this ongoing fued between the communities are inflaming people even more than what would be usual.


You’re the only one saying that.


I can confirm most messages are about who is right.
But theme is how to do right :wink:

It is a real Kitchen Nightmares is not it?

I can understand discussing concrete examples to find out what can be done to improve such case in the future.

But I do not understand why we should watch the whole history of conflict and its continuation.


Given that it was a while ago, I certainly can’t find it. I will note that some may have been in the typelevel groups – I follow at least a dozen Scala Gitter channels more or less regularly, and it’s hard to keep track of what happens where, given that it’s largely the same people talking about related subjects. Certainly I’ve seen plenty of messages from you in the past month, but I don’t recall precisely what, where, when.

But this is largely beside the point, which is that I don’t have a horse in this race (and don’t even remember the topic(s) at hand), but one or two of your comments left me going, “Wow – that came across rather nasty”, enough so that that stuck with me a week or two later. I don’t recall what those comments were, or the details – I honestly didn’t care that much – but they made a substantial negative impression with me personally.

I’m not trying to assassinate your character, or anything like that – I think you’ve done good stuff, and it’s a shame that things have gone as they have. But you might want to consider that, when random bystanders like me are getting that sort of impression from your discourse, you may want to pay more attention to your rhetorical style…


I think you (Edmund) are misreading things. Actually, I think everyone is misreading things. Maybe I will, too, but as evidence I submit that despite a top level agreement that communities should be welcoming, there is extensive disagreement about particulars of everything. If most of us aren’t misreading things, why would one get so much disagreement despite apparently having pretty much the same goals?

My suspicion is that the problem boils down to inherent tradeoffs that are sufficiently subtle that it’s possible to be unaware of them; and to the extent that one is aware, the consequences are unpalatable. But not avoidable, at least not without squarely examining the issue and finding some creative way to avoid the issue. (Fair warning: I do not have solutions for these.)

I’m going to try to make these tradeoffs blatant.

The first tradeoff arises from the paradox of tolerance, which I will state as follows.

The Paradox of Intolerance: If you want to ensure a tolerant environment you cannot tolerate intolerance.

This paradox is really depressing. It suggests a proof that comprehensive tolerance is impossible. (I’ll assume everyone can see it.)

In order to avoid accepting the unpalatable conclusion that one supports being intolerant of some pretty okay people, it’s very tempting to (at least subconsciously) either demonize mild cases of intolerance as abhorrent (so you’re not being intolerant of “pretty okay people” but of “awful, toxic scum”); or to decide that the real virtue worth having is fortitude: if you can’t take the heat you should get out of the fire (without worrying overmuch about why things are on fire to begin with).

This brings us to the second point.

Moderators and users are just people: Policies are implemented by people, with all the limitations of perspective and emotion that go along with the human condition; and users are also people, again with the same manner of limitations.

Reliably generating desirable behavior out of noisy components is hard. We’re noisy components. We have limited perspective and often have difficult jobs to try to do with incomplete, unreliable information; and if we do poorly, our social standing may suffer (i.e. other people will blame us for it).

In particular, negative interactions are likely to occur and dominate the discussion (c.f. this thread!); but correcting them by moderation is fraught with peril because moderators also have limited perspectives and have an asymmetric power relationship with users (so that mistakes are less easily corrected by a user “pushing back”; they can’t push as hard).

It’s also quite depressing.

So, the task we face is really tough.

I think it’s worth acknowledging that and reflecting upon it for a while.

Even in real-life communities, creating a healthy environment is challenging, and that is with a whole bunch of instincts that aren’t nearly so strongly at play online.

And we can’t just give up, either. Scala has a community whether or not we decide there “should” be one.

We’re playing a game that’s impossible to win and which we can’t stop playing.

Unlike e.g. Pieter Hintjens, I don’t have clear ideas about how to solve these problems, just a hunch that since every extreme is shown to be bad (complete tolerance of arbitrarily bad intolerance => environment is awash with toxic negativity; complete intolerance of anything that smells like “intolerance” => pure groupthink with no room for expression of criticism to improve things; no moderation whatsoever => anarchy, disorder, chaos, noise; unrestrained moderation => dictatorship, well-meaning or not, with widespread fear regarding who will be the next target), the best answers involve some sort of reasonable compromise. And also a hunch that admitting the difficulty of the problem will help us evaluate potential solutions, as we’ll be more likely to have to express and deal with the downside associated with every proposal that is desired to achieve something positive.

There are a lot of strategies that have been tried to create some sort of intermediate solutions. I am not going to list any of them, but they’re worth noticing and thinking about in the context of the tradeoffs that they make.

I do have a few thoughts on the particulars.

  1. I agree with @gapjolly that we do need to go down the “how many milli-infractions equate a bannable offense” road because if we don’t, we both ask moderators to do an even more impossible job than usual (integrate milli-infractions and assess if some unspecified threshold has been crossed) and because it opens both the potential for abuse (moderator has a feeling about how bad it is that is shaped by personal biases or whatever but which doesn’t reflect reality and/or an “average” perspective on how bad it is) and the perception of abuse where none has happened (observers have a feeling that it’s not bad yet moderation happened, with no clear data to correct them). I don’t know whether milli-infractions should count, or whether behavior off of a venue covered by the CoC should still count against an individual when in the venue, but I am pretty sure that the actual rules should be stated clearly and that moderation should, to the extent possible, be enacted on the basis of verifiable facts, not vague feelings (even feelings shared by multiple moderators). We’re letting everyone down, moderators and users alike, when disciplinary action has to be enacted on the basis of a hunch because there isn’t anything more to go on.

  2. I agree that whatever the rules are, there are going to be corner-cases and moderators probably shouldn’t have to get official clarifications before acting, because some people cause major disruption by sitting right on the most problematic corners for as long as they can. But I think the discretion should be as narrow as possible given the potential downsides (i.e. moderator error + stifling intolerance of non-groupthink).

  3. I also agree that a free-for-all is a tremendously unreliable way to build a positive community. The default online is free-for-all; empirically, it rarely works. (In person there is a very strong “we will isolate you socially” and/or “I will punch you” counter-move to disruptive, antisocial behavior; free-for-alls work better there.)

  4. “If you don’t like it, try to make your own with different rules” is ultimately true but probably not productive to say, since at the point where a community forks like that, something’s gone really wrong. Also, it already happened with cats/scalaz, and in fact both sets of rules at least kinda work for the people in those communities. (One set may be better than the other, but neither is obviously an absolute disaster.) I think fostering a single community is a worthwhile goal, if at all possible.

  5. I think @fommil’s comment about rehabilitation (“Recovery Centers”) is incredibly important. If you look at objective measures of the effectiveness of the justice systems in, say, the U.S. vs. Scandinavia, the punishment-heavy one tends to score poorly (e.g. higher recidivism). Also, “If you do things that we think make the community less useful, we’ll try to help you improve so you can stay and we’re all better off!” is a way more welcoming message to everyone than, “If you’re bad, we’ll ban you.”

  6. We can write all the CoCs and rules about moderation that we want, but at the end of the day, someone has to actually implement it. If we expect particular people to do the job, we should listen very carefully to what they say about what does and doesn’t work for them. The CoC might be somewhat aspirational, but it shouldn’t be divorced widely from practice or you lose the transparency that both helps prevent mistakes or abuse, and helps prevent the impression of mistakes or abuse where there was none.

With all that said, I like @sjrd’s draft, but I don’t think it goes far enough. And I think a lot of useful things have been said in this discussion, but a lot of it seems to be taking the strategy of trial lawyers arguing their case without grappling head-on with the difficulties.


@sjrd I feel bad for you. Best wishes in dealing with this. My deepest sympathy.


@fommil I’ve been getting the same fairly negative impressions from you as @jducoeur and others have already stated here. I mean, we’re not making this up. At some point you’ve got to stop and consider that, indeed, what you said did come across as hostile to a good amount of people — and not just people directly involved with Scala, but also bystanders like me. I think this should be enough to make you reconsider the way you sometimes convey your opinions.

Since it seems we’re doing this: for one thing, you’ve left some mildly insulting comments on reddit. Such as this one about the Scala community as a whole:

I personally find the Scala community to be quite horrible, confirmed by many other authors of popular tools and libraries, which was a big reason for me to step down from ENSIME.

And later you felt appropriate to add:

Reddit is truly a playground of petty children.

Your comments on the thread in question have been deleted (I don’t know by whom), but there is a log of them on the internet archive.