Meta-discussion on keeping topics here focused and amicable

I definitely do not think that people here are being mean on purpose. I understand their frustration, and acknowledge that is partly due to my fault; especially what you just wrote (in the quoted text), which is something I have to work on.

I agree on that. I cannot force people to take my ideas seriously (or any ideas for that matter). I need to be working on the way I present my ideas, I believe; but, I also believe that this community is somewhat a-priori dismissive of many such ideas (being close minded), and that often leads me to my commenting style, as I’m trying to make people actually consider my propositions and evoke their attention.

What I do take partly as an insult are comments similar to that of yours (or approval of these comments) by people unlike you that have never (or almost never) engaged in conversation with me. If one think I’m wrong I would expect them to either correct me (which I prefer) or ignore me. That’s how I strive to behave – I don’t just go and trash someone’s opinion posted somewhere else – be it another post or their blog – without explaining why I find it wrong.

I do contribute my code to other projects – for instance, Scoverage’s gradle plugin – but it’s hard contributing to such a complex project as Dotty, which is an entirely new compiler for a highly rich language (which goes to show how talented are the people working on it).

One more thing to consider. If people who are not experts in Scala but are not beginners either – such that they cannot contribute meaningfully to the core of the language – find it difficult to comprehend and reason about its features, perhaps they are too complex? Perhaps part of the “short circuit communication” we’re discussing here is somewhat rooted in the lack of clarity regarding many core concepts in the language?

I don’t post often here, but I used to be a community moderator for Scala at a time when we were still figuring out what inclusion meant. I’m not going to directly address any of your points, but instead ask several questions (to each and every member of this mailing list):

  • Are people not understanding the nuance of your opinion or do they disagree about the priority + “gravity” you assign to each point? I find most of my arguments are really about the later, and it’s easy to mistake for the former.
  • Do you feel like others are able to freely contribute their ideas to the discussion? Are the items being discussed relevant to everyone on the list, or the agenda of one or two individuals? Being “inclusive” is not just “Not being mean”. It’s allowing others to express their opinions, and finding the voice of each individual within the community.
  • Do you feel like you know the vision and direction for the project you’re discussing? Scala 3’s vision is expressed here? How many of your arguments are inline with this vision?

These are the questions I ask myself before posting on a public technical discourse channel.


It can be surprisingly and offensively, if somebody really completely believe in COC:

  • We are committed to providing a friendly, safe and welcoming environment for all…

Actually it is not so, if someone has not deserved enough respect he can be affected by micro coc violation. And there is as more risk as more actively he behaves.

This case is canonical.

Attempt to regularly attract moderators for micro coc violation is a mistake because such person highly likely will be considered as source of noise.

So I think the best way is just to not have illusions

I like the next advice:

1 Like

The problem is that people do these things intuitively, and the “rules” aren’t accessible to declarative knowledge, at least not without an awful lot of introspection (and even that is unlikely to be reliable).

Of course, not everyone has the same intuition, and the intuition evolved in the social setting of small in-person groups, which isn’t where it’s being applied now. So this isn’t a terribly reliable way to run things. But it’s hard to think of another alternative, given the kind of creature that we are.

The best strategy I can offer is to echo @rgwilton with slightly different wording:

  1. Be courteous and respectful when posting
  2. Be resilient and open-minded when reading answers

As with any implementation of a communications protocol, this sort of “strict writer, relaxed reader” policy will generally get one a pretty long way.


New ways of doing things have a cost in learning new skills and possibly changing old code. These costs can be substantial. So it’s actually appropriate to be “closed-minded” in the sense that one must fairly weight these costs.

This substantially raises the bar for how good an idea has to be to merit serious consideration, regardless of how it’s presented.

Design is difficult. Designing something simple but useful is especially difficult, because the interaction between individually simple features can yield a mess. (Example: goto is simple–just go somewhere else in the code; loops are simple–just do something over and over…goto into the middle of a loop is…AAAAAAAaaaa!!!)

So one should be prepared to accept that many aspects of language design require a great deal of expertise. It isn’t necessarily the case, but one should keep in mind that it may be in any particular case.


I think there is a notion in this discussion where one needs to have a high level of expertise in Scala and its internals, perhaps along with deep formal education in CS, in order to be able to discuss features – their motive, design, usage, etc.

It’s not about complexity more than it is about familiarly with non trivial and often undocumented concepts. If the average Scala developer cannot fully comprehend some of its features due to this lack of familiarity, then I’d argue that these features are unapproachable / unintuitive / not simple enough.

One example for such a feature are type members; the discussion on opaque types have led to a sub-discussion that focused on the meaning / semantics of type members. I believe that the gist of the discussion is a confusion of terminology, where on the one hand there is DOT’s view of things (which I’m not familiar with), and on the other hand there is the traditional OOP “abstract vs concrete” view, which is expressed in the official documentation.

It’s hard maintaining fruitful discussions when there isn’t a clear source of truth.

1 Like

Well, we’re now off-topic because we’re discussing language details while supposedly in a thread about keeping topics focused and amiable…my intent was to give a justification for why it’s good to keep an open mind about the value of one’s suggestions.

And you are making a different point than I am. I was talking about feature interactions. This does almost by definition require a high level of expertise in Scala because you have to consider every potential interaction.

There are other areas–the type system, for instance–where a sophisticated theoretical underpinning can be necessary in order to preserve simple rules and properties for users. For instance, Java, I would argue, botched its handling of variance with generics. It’s both convoluted and incomplete, leading one to battle with the compiler at one turn, only to have to give up compiler support entirely at the next. This is the kind of result I would expect when one approaches such things without the requisite expertise and/or mindset. It’s fine if you don’t have deep formal education in CS, but you’d better have something or you’re inordinately likely to say obvious, sensible-sounding things that have significant flaws.

Some topics don’t, by construction, have this kind of flaw. (Choice of keyword, for instance.) But it’s easy to make a language that contains a such a vast number of individually easy-to-understand pieces that you cannot understand the language. So even in simple cases if there’s anything more to learn, there’s the possibility that greater expertise will reveal that this would be a bad move.

Fundamentally it boils down to respecting others’ intelligence and hard work, and also respecting different styles of solving problems.

When due diligence is performed in understanding the current state of affairs, proposals or criticisms based on that understanding should be (and generally are) welcome.

So, yes, sometimes things are unnecessarily complicated, and sometimes people are change-averse when they shouldn’t be; but automatically assuming that objections are for these reasons (instead of e.g. a failure to account for differing tastes, or an incomplete understanding) is not a good way to promote amicable discussion.


Correct, that is my fault. I was trying to make a different point that is indirectly related to this one.

What I was trying to say is that it is not uncommon for discussions in this forum to end up in something like “this is just the way things work”, or “I have tried experimenting with that which you are proposing in the past and have reached a dead-end”; but these are not very constructive arguments, and they do not help reach an agreement.

When this is coming from core contributors in response to non-core contributors who try and gain a deeper understanding of the reasoning behind some decisions, or try and give feedback to correct a proposal, this kind of dismissal is unwelcoming.

It feels as if it’s impossible to be involved in these discussions unless one has the secret knowledge that only the core contributors exhibit. Not to say that they purposely hide it; it’s more likely that it requires hard work to make it accessible. Still, it makes it hard to feel included when such clarity that is required in order to be involved is missing.


Perhaps try reading more, searching harder.

A lot of things you have asked about or complained are hidden are things I’ve learned by doing just this, without using any special access.


I believe I’m pretty proficient at searching the web, and I often find myself browsing old discussions from other sites or reading (free) academical papers.

The problem is in cases where references or hints are not provided, or when it is the case of someone’s own personal experience which there’s nowhere I could read about.

Given that principle, when inappropriately applied, gave us the mess that was the HTML non-standards, it might not be the best example :slight_smile:

It’s also not terribly relevant, as the issue was not that one person said something that could be considered inappropriate - it’s that the post was countersigned in the form of likes by so many people. Mistakes happen, and that’s ok. When someone makes a mistake, and a large number of participants agree with that mistake, it’s an indication of a more systemic issue.

I’m truly glad that this was the case for you. This has not been the case universally, and I’ve personally run into situations where the “why don’t you just …” was infeasible without knowledge that would have required digging about in the compiler internals to access. Also undocumented but clarified later, was that it was never intended as a genuine suggestion, it was a way to say, “we’re not doing this, discussion over”, without actually having to come out and say that.

More generally, there’s been a strong thread of victim blaming in this thread. When the newcomer points out that the community is not nearly as welcoming as the CoC promises, and is downright hostile at times, “ur doing it wrong” is not a constructive response, no matter how prettily it’s phrased.

That out of the way, I haven’t be participating in this thread as much as I’d like because I’ve got a nasty head cold, and dealing with this and a headache is more than I’m up to an the moment. I’m going to go back to bed for a couple hours, so lag in responses is not due to intentional rudeness, I’m simply not going to see them.


Everyone comes to this forum, or any forum, the same: a stranger. Nobody has any preconceived notions of you, or knows who you are, for better or worse.

What people think of you is entirely self-created: by the content of your posts, your choice of words, the attitude you show, and your actions. @eyalroth has certainly made an impression on people here; not everyone may speak up, but everyone observes.

@jducoeur, @Ichoran, @odersky, and others are among the kindest, most patient people you will find in any online community. If these folks are telling you that you are doing something wrong, it’s worth a listen.

Lastly, when receiving feedback, the correct thing to do is to thank the person providing feedback, accept it, and think about how you can make use of it. That is all. Getting into arguments with those providing feedback is the absolute worst thing you can do; this is especially true if the feedback is that you are too argumentative!


FWIW, although I agree that this is good advice in general, I am always open to argument. Issues worth talking about at all are usually complex, and there are many ways to make errors, and many ways in which points can be incomplete in important ways.

I am, time permitting, always happy to dig into such things more deeply so long as the discussion has reasonable potential to be productive.

1 Like

Yes, right, it is a more systemic issue.

The question is: what is the systemic issue?

This is a fair point. The CoC is a little too rosy in its proclamation of “friendly, safe, and welcoming environment for all”. In particular, it isn’t intended to promise that this will remain true forever regardless of your behavior. (You can tell that it isn’t intended to promise that because people can be banned, which is absolutely not welcoming.)

So, being a little more realistic, the idea of the CoC is to promote friendliness, safety, and the welcoming of new participants. It’s also there to catch and clean up messes if behavior gets too hostile or inappropriate on any side. But there remains considerable latitude for people to be people, as there must be if the forum isn’t to end up as an immense mess of enforcement actions without anyone actually discussing programming.

Now it’s entirely true that the community could and should be more welcoming, but we need to set realistic expectations.

The overall goal should be a positive environment for interaction for everyone. If someone is rubbing other the wrong way a lot, that isn’t meeting the goal. If people are then unpleasant back, that’s also not meeting the goal.

In order to have more beneficial outcomes for everyone, there is a better strategy than waiting until people erupt in frustration and then trying to solve everything with moderation actions.

That is, you talk to the person whose interactions seem to not be received well, and see if you and they can figure out a way to structure their interactions in a way that more people benefit from. You may also need to talk to the people who are responding inappropriately, to try to get them to deliver feedback in a more constructive way.

But I categorically disagree that it is “victim blaming” to try to help people understand why they seem to have aroused an atypical amount of ire, and to offer suggestions to make them and the rest of the community be better able to take advantage of what the other has to offer.


(I’m going to treat this as off-topic and/or a topic for another thread, but I do just want to register that this was not how I interpreted the interaction. The issue at hand was what type of solution should be sought, not a simple “go away without saying so”. One could expand this into a discussion of amicability and the importance of clarity, but I’d rather not right now.)

This goes the same for you, and I believe you’re failing to acknowledge that. It really seem odd to me that you’re giving me this kind of feedback when you never bothered to correct me or help me understand how my arguments are wrong.

In fact, the first and only time you ever responded to me directly was on my first thread here. That thread wasn’t particularly long, and I remember the comments being quite polite and welcoming, even though many did not share my views; that is, except for your response, which was borderline insulting (“i don’t think anyone can help you lol”). I remember interpreting your response as a slightly more polite way of saying “well, that’s your problem. git gud”.

You’re basically saying “you’re in the wrong, and since that wrong is that you argue too much, don’t bother trying to argue that you’re not wrong”. This is a tautological argument that further demonstrates how incapable you are of receiving feedback. I have acknowledged my wrongs in here and I will try working on them, but that doesn’t mean you’re not in the wrong either; again, communication goes both ways.

I don’t really like commenting on what I think about individuals in public, but since you brought these individuals up as support for your arguments, I’ll respond.

Being polite when mutual respect is already established and there’s a strong basis for agreement on various topics, is not really a brainer in my opinion. What I value more is being able to stay polite even when these are absent.

I think me and @jducoeur have a lot of disagreements and we often find each other overly argumentative and missing each others’ points, but that is no crime. I would never condemn him for this.

I believe that @odersky has over time found my arguments irrelevant and stopped responding to them (that is mostly apparent to me in the discussions regarding implicits). That is unfortunate for me, especially considering that I highly value his opinion and intellect, and since he is one of the core contributes of this language. But that is no crime, and there’s no reason for me to condemn him for this.

Given that I would not consider condemning them in public, especially not in a case in which they have been targeted by behavior that violates the CoC, I find it a bit offensive that they do not share this same ethical code as I do.

I’m not sure why you brought @Ichoran into your argument. I don’t see him supporting your arguments (at least not publicly). I find him behaving in an extremely welcoming manner, being mostly open for interesting discussions, and able to remain fairly patient with my argumentative tone (which I acknowledge as my fault).


[Not directed to any particular individual]

Whilst I think that giving feedback on individual behaviour can be helpful for them, I encourage that such feedback be given directly to the individual in private. Of course, I also recommend that such feedback be framed in a positive manner - that is just common courtesy.



I think it is a very good advice in general.
When you are in different camps, it is helpful just to stop in time.
If you have tasted a dish in a restaurant and you dislike it. Will it be helpful if a cook says you that it is very delicious and you must eat it again.
The interesting question is who should stop first. if someone cannot just stop(because it is a personal question) he always can say something like:

  • I disagree with you argumentation it seems destructive we can discuss it privately if you like.

After all it is not very good to have long tit-for-tat debates with mirror negative argumentation.

I couldn’t agree more, and I find it extremely unwelcoming to receive such feedback in here publicly, and what’s more is that this feedback is responded positively (“liked”) by moderators and core community members.

I think it would be helpful to have a list of bad practice in COC which someone can give a link to to stop tit-for-tat debates without losing his face.

1 Like