Continuing the discussion from Rust beginner notes & questions:
Continuing the discussion from Rust beginner notes & questions:
This discussion thread hosts the replies to @peter_bertok’s discussion style. The purpose of this thread is to move to a theoretical discussion on what the role of flaming in feedback is, and should aim to result in a best-practices list of points on how the Rust community would prefer to handle disagreements and constructive negative feedback.
I think we can borrow some ideas from how the Rust RFCs are structured. They require to point out drawbacks and alternatives, you have to think about them. It’s a good anchor for discussing other opinions that people may have.
I appreciate that you are trying to learn concrete lessons from a very contentious thread
However, I am personally not quite sure what else needs to be discussed? The official Code of Conduct is pretty clear, and I don’t believe there exists a catch-all “discussion style” that will work for all people in all situations.
Excerpt from Code of Conduct
- Please be kind and courteous. There’s no need to be mean or rude.
- Respect that people have differences of opinion and that every design or implementation choice carries a trade-off and numerous costs. There is seldom a right answer.
- Please keep unstructured critique to a minimum. If you have solid ideas you want to experiment with, make a fork and see how it works.
Is there anything specific you are looking for?
(After all,the answer to “what is the role of flaming” is “we do not want any, within the Rust ecosystem”?)
As for my own behaviour in that thread:
I was obviously letting my temper get the better of me, and was called on it every time (as it should be). I hope I have taken it to heart sufficiently each time as well…
Agreed. I just mean for this topic to be a type of null-sink for others who may start to get off topic on any of the other discussion threads. Also, others, including Elon Musk apparently, do not see flaming as mean or rude. Instead, they see it as trying to help. Hence, this here becomes a discussion of when exactly criticism becomes mean.
The premise of the Rust Code of Conduct, and by extension, the entire “famously friendly” Rust community, is that flaming, in any shape or form, whether with good intentions or bad, is unpleasant to the person being “helped”, and thus likely to make them quit altogether.
The below is a bit abstract, but is is something that project maintainers have seen, or experienced themselves, countless times. You have probably seen it happen too.
If a thing is being “helpfully flamed”, the person who is being “helped” has already invested their time, energy and skill into creating something, thus improving the rust ecosystem. These are the kinds of contributions that make Rust great for everyone, and a kind of contributor that has already survived many hurdles.
Unfortunately, it is always easier to point out flaws/imperfections/opportunities-for-improvement in something, than it is to fix them. This assymmetry means that flame-helping is a fairly low-effort contribution, and can quickly feel unpleasant to the high-effort contributor who created the thing being criticized (especially if no positive alternatives are suggested)
“You made a thing, here is an itemised list of what is wrong with it” is incredibly draining.
After a couple of repeat flames (each probably individually ok-ish) the cumulative demotivation makes the high-effort contributor quit, leaving the project with one less high-effort contributor, because someone else chose to “help” in a low-effort (some would say: “lazy”) way.
Thanks for clarifying, I happen to agree with that. To go one step further, could you weigh in with your view on this post (also included above)?
The difference between harshly criticising “the language” and “the people who wrote it” is only a matter of directness.
It is unproductive to say only what you don’t like. Either:
A) add an alternative that you feel is better, and the reasons why (thus making it a high-effort contribution, and constructively furthering the discussion, or
B) provide a “lived experience” datapoint, “I keep running into X because Y, does anyone else do too?”, importantly: do so without being judgemental.
This helps to either uncover an overlooked use-case, or it shows that a trade-off in the design works differently than expected, and that some decisions might need to be reconsidered.
(Note: the trade-off is often “we didn’t have time to think-about/implement this yet”, so such feedback helps the authors to prioritize where the most value is for their effort.)
To expand on that with my views:
Try to balance negatives with positives. i.e “I found feature x to be very helpful, but feature y is proving troublesome”. Try to lead with the positive first. Optional to sandwich feedback with a trailing positive “I love x, but feature y needs work in ways a,b,and c, fortunately z looks great!”
Try to self-evaluate your arguments. i.e “I think we should change feature r, … thinking hard about it, I suspect if we did implement this change, would feature k still work as intended?”
I’m re-reading the code of conduct as self-inflicted penalty. It’s really amazing how perfectly, and efficiently, it addresses exactly what went wrong in the previous thread (including my own responses, I definitely wasn’t my best self, nor did I avoid sensitive issues…)
try to be your best self. In particular, avoid flirting with offensive or sensitive issues, particularly if they’re off-topic; this all too often leads to unnecessary fights, hurt feelings, and damaged trust; worse, it can drive people away from the community entirely.
And if someone takes issue with something you said or did, resist the urge to be defensive. Just stop doing what it was they complained about and apologize. Even if you feel you were misinterpreted or unfairly accused, chances are good there was something you could’ve communicated better — remember that it’s your responsibility to make your fellow Rustaceans comfortable.
It’s so accurate, it could have been a prophecy!
I don’t know if this helps, specially since I’m fairly new to this community and I didn’t participate in that particular thread. Lemme know if I’m being redundant with one of you.
I think the most important thing in a community that wants to foster cooperation and participation is to… put yourself in the shoes of the other one. Like “What if I made this project? How would I like to be told about Issue X?” Or… “Why did they say that? Hm. There must be something they care about that I’m not noticing.”. Thoughts like that.
Just assuming good intentions helps a lot. One always thinks one has good intentions. Doing the same for others helps you understand them and if both sides help each other out with this process, communication will be that much better.
(PS: sorry, my writing feels a bit sloppy. It’s very late, but I didn’t want this idea to drift away in the night. Thanks for your patience )
One thing which I have started practicing when interacting with… less than nice people on mailing lists is to purposely de-escalate discussions.
Only reply to the parts of the e-mail that actually matter. Compliment people for the nice parts of their e-mail before adding your point on top of it. Force yourself to use “and” or “in addition” in places where you would spontaneously use “but” or “however”.
Some people sound like they want to pick a fight anytime they open their mouth, but we make the world a better place by ignoring the provocation and focusing on the useful/productive part of the discussion.
Of course, in moderated spaces like the Rust forums, we have the extra option of calling the mods for help, but 1/moderation is not available on all Internet communication channels and 2/authority wears out when used too heavily (as people start to feel deprived of their freedom of expression and reacting very negatively to it).
These are good things pretty much anytime. In particular, it works really well when someone is a bit moody and “just” not feeling happy, and they need to be able to reframe their view in a positive way.
I feel that in The Thread, the problem was something different: I felt peter_bertok felt he owed it to the community to list all the things that he saw wrong with Rust. (Indeed, coming from good intentions!) I think peter_bertok felt that he was being constructive and useful, and I don’t think positively-phrased responses help to change that view.
But to stop that downward-spiralling process, I think it might be best to stop and halt the thread and point out that not everyone is taking it in a good way, and requesting that the person in question go through the code of conduct again before proceeding with the thread.
I saw that the Wikipedia article on flaming, mentions “miscommunication caused by the lack of social cues”. It can be useful to add more emojis to the conversation to make it more lively and personal. That can help frame criticism as being amicable.
I am with you on that. Emojis convey emotions and tone pretty well. That’s not to say we can overuse them, though.
Yep, try to prioritise quality over quantity when using emojis. But, at the moment the status quo is not to use them at all, which can be a lost opportunity.
Also, I noticed that some don’t use personal messages where it would have been proper. A reply can either be made on the thread, to a new linked topic, or to a chosen list of individuals. The latter can be used to speak directly to someone when it’s not needed to broadcast the message on the open thread.
I would like some official guidance on personal messages. On some fora (including Reddit), etiquette is to ask a user if it’s okay to send them a personal message, before sending that message. I presumed it was the same here.
I am interested in understanding why no one asked participants in that thread to review the code of conduct. As far as I can tell, the only reference to the code is in post 145 by @bgeron, well after the thread had spiraled into meta-discussion.
I don’t have a great reason myself; I was trying to limit my contributions and mostly just try to understand what Peter Bertok was trying to say rather than respond directly to his claims. I also didn’t know whether there were any explicit code violations occurring, and rather than review the code, I waited for someone “more knowledgeable” to make that call.
One reason not to refer to the code is that doing so may seem accusatory, making the recipients of the message more defensive. This could actually make their behavior worse, especially if (as in the case of some posts in the thread) the initial behavior was only a borderline case of code-breaking. One way to soften the perceived negativity is to be self-deprecating and take a share of the blame, but that’s not really something anyone can do who hasn’t actually contributed to the conversation (even if the person stepping in is a moderator).
I also don’t know if Peter Bertok (or, to be fair, anyone else in the thread who hasn’t explicitly mentioned doing so) has actually read the code. I don’t think the forum infrastructure really pushes new users to familiarize themselves with the code, does it? I don’t actually remember being encouraged to do so. Having read Jeff Atwood’s posts about Discourse, I expect there must be some way to configure the software to require or at least strongly encourage reading it.
So I think my key takeaway from the original thread is: can we use the code more proactively, both to inculcate new users and to defuse emotional conversations?
My suggestion is to private message the link to the code of conduct to someone who may be (borderline) breaking it. That will be better than seeming to accuse them by linking it in the open.
Private messaging can be a great idea. (I’m repeating my wish for moderators to clarify that it’s okay to send people private messages out of the blue. )
When there are clear CoC violations, I think I believe it should be okay to remind the community of the CoC explicitly in the public thread, as long as you do so in a constructive and non-accusatory way. I think it wouldn’t hurt people’s feelings too much and it can help stop a thread from spiralling like this. What do you think?