Resuming the discussion of establishing an LLVM code of conduct

Greetings all,

This has come up a few times, and I would like to resume the effort to establish an LLVM code of conduct.

First and foremost, many thanks to Philip Reames who sat down with me several months ago and worked through a number of suggestions that I’ve tried to incorporate into an updated patch with the draft text: http://reviews.llvm.org/D13741

I think his updates plus a few others go a long way to address some of the concerns raised in the previous discussions. The big issues I saw being raised (but in my words, I trust others to chime in with useful clarifications or corrections as needed):

First and foremost, this should not substantially change the community’s conduct. We have strong existing practice of keeping good behavior. I hope the wording now makes this reasonably clear.

There were also a number of things unclear or easily mistaken about the “reporting” process and what happens there. Philip in particular helped craft significant improvements here, and much of the credit is his. Notable things improved or addressed IMO:

  • Nothing should ever prevent the community from self-enforcing good behavior much as it has been for a long time.

  • When violations are reported, there may not have been any issue at all, in which case nothing happens.

  • Any issue may also have already been addressed much as our community has addressed issues on its own for many years. In those cases, the committee need not take any further action.

  • The committee will of course need to gather information from those involved and witnesses, and only make a decision with all of the information available. I think this is much more clear now.

  • Physical spaces may escalate the severity. Although I hope it never happens, I think it is more clear now that if this happens immediate steps will be taken to ensure everyone’s safety and law enforcement involved if necessary.

  • It is structured to make it clear who is on the advisory committee. We still have to select an advisory committee, etc., which is something I’m not trying to figure out here and now. I think once we have the framework in place, we can start working on that and adjust the framework if issues with it come up in the process.

This still isn’t a really formal thing with hard and fast rules. But I don’t think that is what the community needs. I do think they provide the framework the community needs to effectively handle and cope if issues come up. While I suspect it is impossible to get everyone 100% happy here, I think this is very close and a reasonable starting point which can be evolved as necessary if problems arise.

Thanks,
-Chandler

Greetings all,

This has come up a few times, and I would like to resume the effort to
establish an LLVM code of conduct.

Sincerely and pragmatically - what do you think will be different
after this is in place.. Bureaucracy is great, but what's broken or
pandemic that you're trying to fix?

From my side I can be a sarcastic smartass from time to time, but

overall I don't see that being a heavy burden.. (maybe I'm mistaken?)
Other than myself - very rarely you get some disagreements on the ML,
but has it ever been serious? Are these disagreements involving any
typical suspects? The job postings can be a bit OT, but don't seem to
soo frequent..

If one very good engineer is unintentionally/inadvertently causing
friction - how would you deal with that at a policy level which is
different from what happens today?

Personally I want a document that I can point people to and say 'this is what we expect of you if you interact with our community'.

Really simple case where this would have been useful was when a certain member of the Linus community used profanity on the list - which may be fine in their mailing lists but is certainly not in ours.

Cheers,
-Neil.

Sincerely and pragmatically - what do you think will be different
after this is in place.. Bureaucracy is great, but what's broken or
pandemic that you're trying to fix?

From the last discussion, I gather that it's an attempt to prevent damage before it can happen.
I'm quite sceptical about that. It's hard to do in general because you can't really foresee what people will do, and it will give trolls just another tool to work with; last time it was badly done because it tried to cover all bases and ended up being overspecific (judging from the comments, it's still happening; I can't see the text because the website requires Javascript and I cannot activate that on non-preapproved websites).

However, some people in the committee insist.
I suspect some want to protect the current cooperative tone, and some want to avoid another accusation of being unfair as certainly happened the last time a troll was evicted from the list.
I do not think the former can be achieved without inviting other kinds of damage, and to the latter I'd say that you can't evade responsibility for misdecisions is the same, whether you misdecide a specific case or misdecide the rules. Except that the latter has far more far-reaching consequences but people tend to feel the impact less...

From my side I can be a sarcastic smartass from time to time, but
overall I don't see that being a heavy burden.. (maybe I'm mistaken?)

It's all a question of perceived aggression.
Some people will perceive you to be a burden, some won't even notice, most will be somewhere in-between. It's more dependent on the reader's cultural and personal background than anything else.

Other than myself - very rarely you get some disagreements on the ML,
but has it ever been serious?

I think the last time this discussed, something like that came up once in the lifetime of the ML, and it was dealt with.

If one very good engineer is unintentionally/inadvertently causing
friction - how would you deal with that at a policy level which is
different from what happens today?

I have seen that happen in another community.
In the end, he was evicted. The reasoning was that even an excellent engineer does more damage than good if he's deterring a dozen people, some of which might be as good as him or grow into being as good as him. Also, letting him stay would mean that his behaviour would get copied.

So I'm generally in favor of having a code of conduct, but it should be short, vague enough to allow flexible reactions to unforeseen behavioural patterns, and concentrate more on intent and effect than on specific behaviours, so we don't end in a court system with lawyers and appeals and procedure in a community that simply has neither resources nor expertise to properly execute that.

That's just my 2 cents from the sideline; I had expected LLVM to become a significant part of my life so I did take sides last time this was discussed, but none of my expectations have materialized (due to reasons outside of the LLVM project) so I'm not going to vote this time, I'm just offering my observations and background knowledge.

Regards,
Jo

Chandler - I do not want to derail, hijack or change the topic of this
discussion - Would you be ok with me going into specific examples?

Does this work?

http://reviews.llvm.org/file/data/cbdfdhpm24f25l4xlxy2/PHID-FILE-of4akbarftxe7qdv6wq5/D13741.diff

cheers,
--renato

I think this is the right place for that.

I had some comments on the submission itself, but they were mostly
about wording, not the concepts.

cheers,
--renato

If everything else disappears, I think this is what should remain.

We don't want to accept "bad behaviour" because once it's accepted, it
propagates. The LKML is the best example. From our history, we have
done that remarkably well.

I just hope the new Code doesn't get abused by a few trolls to
undermine the very thing it's trying to promote. That's why I think
wording is very important here.

cheers,
--renato

We’ve been through a similar process in FreeBSD recently and I’ve learned a few lessons in the process. I can’t emphasise Renato’s point enough. It is absolutely vital to have outside review of a code of conduct. There are a lot of terms that are quite loaded in specific contexts and groups and it’s very easy for them to end up in a CoC if it’s not written by or reviewed members of those groups.

One of the key purposes of a CoC is to communicate the ideals of a community to outsiders (including outsiders of different nationalities and even those that don’t live in the San Francisco Bay Area). For this to work, it has to use the vocabulary that people outside of the community understand and be very careful to avoid ambiguous and loaded terminology.

David

In the interests of individual liberty and individual justice, I feel I must speak now.

The last sentence of the third paragraph bothers me:

Something like this is required, based on real problems that have existed in some other communities. If one LLVM contributor is attacking another on Facebook / Twitter / whatever, then it’s not acceptable for the LLVM community to simply say ‘it’s not on our mailing lists, it’s not our problem’.

Similarly, it’s hard to claim that a project is inclusive of group X if committer Y is attacking group X elsewhere in a way that associates the project with their statements (for example, soliciting LLVM-related consulting work from the same account) and the project is happy to permit this.

These are not hypothetical problems, they are ones that I have first-hand experience with (though, thankfully, not in this community). The code of conduct does need to provide a mechanism for addressing these, though the sanctions that can be employed (removal of commit rights, removal of mailing list access) are fairly mild. We don’t want to be in a situation where people can say ‘don’t get involved with LLVM, they hate people like you’ and we say ‘oh, that’s just an LLVM developer posting on his own site / social media thingy, it’s nothing to do with us. [S]He’s never used LLVM infrastructure to harass people like you, so it’s not our problem’.

David

Something like this is required, based on real problems that have existed in some other communities. If one LLVM contributor is attacking another on Facebook / Twitter / whatever, then it’s not acceptable for the LLVM community to simply say ‘it’s not on our mailing lists, it’s not our problem’.

Similarly, it’s hard to claim that a project is inclusive of group X if committer Y is attacking group X elsewhere in a way that associates the project with their statements (for example, soliciting LLVM-related consulting work from the same account) and the project is happy to permit this.

Let me get this straight... An example, if you allow me:

I'm against the ownership of firearms, and go at great lengths and
poorly choosing words in a discussion, which some could consider rude,
with person X about it. I know person X for decades and have earned
the right to offend him/her personally as they know I don't mean it
(could be a joke, and internal one even). This is a very strong
cultural point in many countries, including Brazil. The stronger two
people can offend each other and shrug, the stronger their bond is.

Completely unrelated, person Y subscribes to my posts on G+, and he is
pro-guns decide he's threatened by my strong opinions, and poor choice
of words on a completely separate forum. He then decides to ask the
committee to block me from the LLVM list on those merits.

This sounds utterly ridiculous to me, but the phrase, as it is, would
allow person Y to do that, and the committee to block me.

These are not hypothetical problems, they are ones that I have first-hand experience with (though, thankfully, not in this community). The code of conduct does need to provide a mechanism for addressing these, though the sanctions that can be employed (removal of commit rights, removal of mailing list access) are fairly mild.

In its current form, that phrase allows the exact same sanctions as
all the other issues.

We don’t want to be in a situation where people can say ‘don’t get involved with LLVM, they hate people like you’

Judging the group by the behaviour of one person outside of the group
is not just generalisation, but prejudice, and the very thing the code
of conduct is trying to curb. Wouldn't this person be better off our
community in the first place?

cheers,
--renato

Just for the sake of completeness, there are four main cases:

1. I interact with X outside LLVM, Y gets offended. The code has no
part in this whatsoever.

2. I interact with Y outside LLVM, Y gets offended. The code has no
part in this whatsoever.

3. I interact with Y outside LLVM, *about* their ability to perform as
an LLVM developer, Y gets offended. The code *may* have something to
do about it, but as you say, the sanctions *have* to be *way* less
serious.

4. I interact with Y inside LLVM, Y gets offended. That's what the
code is all about.

Makes sense?

--renato

Something like this is required, based on real problems that have existed in some other communities. If one LLVM contributor is attacking another on Facebook / Twitter / whatever, then it’s not acceptable for the LLVM community to simply say ‘it’s not on our mailing lists, it’s not our problem’.

Similarly, it’s hard to claim that a project is inclusive of group X if committer Y is attacking group X elsewhere in a way that associates the project with their statements (for example, soliciting LLVM-related consulting work from the same account) and the project is happy to permit this.

Let me get this straight... An example, if you allow me:

I'm against the ownership of firearms, and go at great lengths and
poorly choosing words in a discussion, which some could consider rude,
with person X about it. I know person X for decades and have earned
the right to offend him/her personally as they know I don't mean it
(could be a joke, and internal one even). This is a very strong
cultural point in many countries, including Brazil. The stronger two
people can offend each other and shrug, the stronger their bond is.

Completely unrelated, person Y subscribes to my posts on G+, and he is
pro-guns decide he's threatened by my strong opinions, and poor choice
of words on a completely separate forum. He then decides to ask the
committee to block me from the LLVM list on those merits.

This sounds utterly ridiculous to me, but the phrase, as it is, would
allow person Y to do that, and the committee to block me.

You’re conflating opinions about things with opinions about people (so is the current CoC, which is why the wording needs to be improved - a point that I think that we both strongly agree on). In the case of your example, if a person is going to be offended by opinions unrelated to either themselves or the subject at hand, then I’d agree that they are no great loss to the community.

Now let’s restructure your example a bit:

Developer X thinks that Brazilians are idiots and only ever get technical jobs because of nepotism. He’s perfectly civil to you on the LLVM lists, but then in the evenings posts on G+ with these opinions. These posts talk about how hard it is for him to have to work with Brazilians, because they’re just not up to his mental level.

Now, you’ve got a pretty thick skin and I’d imagine that you’d decide that he’s an idiot that whose negative opinion of you is worth as much as a positive opinion from some other people. But if some other Brazilians come to LLVM, see his name on the mailing lists, and from this find his G+ account, do you think that they’re going to perceive LLVM as a community that will welcome them?

Replace Brazilians with women or some other minority group in the above example. Would you want to be a member of a community that was happy to silently endorse these opinions?

These are not hypothetical problems, they are ones that I have first-hand experience with (though, thankfully, not in this community). The code of conduct does need to provide a mechanism for addressing these, though the sanctions that can be employed (removal of commit rights, removal of mailing list access) are fairly mild.

In its current form, that phrase allows the exact same sanctions as
all the other issues.

Which are pretty minor. The LLVM project doesn’t give access to much useful infrastructure to community members.

We don’t want to be in a situation where people can say ‘don’t get involved with LLVM, they hate people like you’

Judging the group by the behaviour of one person outside of the group
is not just generalisation, but prejudice, and the very thing the code
of conduct is trying to curb. Wouldn't this person be better off our
community in the first place?

Do you stop being a member of the LLVM community as soon as you stop posting on the mailing lists? Judging a community by the actions of its members is what humans do.

David

You’re conflating opinions about things with opinions about people (so is the current CoC, which is why the wording needs to be improved - a point that I think that we both strongly agree on). In the case of your example, if a person is going to be offended by opinions unrelated to either themselves or the subject at hand, then I’d agree that they are no great loss to the community.

Precisely.

Developer X thinks that Brazilians are idiots and only ever get technical jobs because of nepotism.

He's not too far off... :slight_smile:

Now, you’ve got a pretty thick skin and I’d imagine that you’d decide that he’s an idiot that whose negative opinion of you is worth as much as a positive opinion from some other people. But if some other Brazilians come to LLVM, see his name on the mailing lists, and from this find his G+ account, do you think that they’re going to perceive LLVM as a community that will welcome them?

I think they'd be generalising the behaviour of the community by the
behaviour of one person, idiot or not.

I'm a big advocate to let people use their own brains, which seems to
be out of fashion nowadays.

The best way to solve that problem is not taking any official action
against the bigot, but showing how much *not* like that we are by all
behaving nicely, as we do, in the lists and events.

Replace Brazilians with women or some other minority group in the above example. Would you want to be a member of a community that was happy to silently endorse these opinions?

You're conflating disregard with endorsement. :slight_smile:

Are we going to keep a list of all the idiots (including me) that
belong to this community? I have voiced many strong and negative
opinions about gun ownership, Donald Trump and government idiocy on G+
and I hope no one assumed that was personal or even that I was
generalising any of that. My opinion of your code will be no less if
you support any of those.

Which are pretty minor. The LLVM project doesn’t give access to much useful infrastructure to community members.

A ban on the mailing list could cost someone their jobs. When they're
rightfully enforced, that's fine, but when the result of troll code
abuse, it's most certainly not.

Do you stop being a member of the LLVM community as soon as you stop posting on the mailing lists? Judging a community by the actions of its members is what humans do.

I'm a member of so many communities, that it would be impossible for
me to behave like every other code of conduct enforces me to.

This is not just about judgement, but about how far can the code go.

cheers,
--renato

Is it so simple though?

For example - I generally find a minimal or moderate amount of
profanity be both acceptable and actually useful from time to time. On
a mailing list there's a ton of context and tone lost, but on a
youtube post or podcast you have a bit extra.. in person there's also
non-verbal communication.

If I flip off someone, which is typically considered some level of
moderately offensive, in the LLVM community - what then?

Is the list PG, PG-13, R or at what level do "we" adults all consider
"ok". Even on broadcast tv (in the US) you'll hear some profanity.
(context)
https://www.fcc.gov/consumers/guides/obscene-indecent-and-profane-broadcasts

Some people have pointed out that they don't like the R-rated style of
the LKML. Profanity and no holds barred just isn't for some people. I
can respect that, but personally I find it more funny and raw/honest.

What I'm trying to say - define offensive.. it will probably all come
down to a "reasonable person who is part of the community" - a noobie
could roll in and drop some 4 letter words and mean no harm.. that
could be on irc or the mailing list or... someone would probably let
him know what the community expects in that circumstance.. We don't
need to point him at some complicated *** wall of text describing blah
blah blah..

So using myself as an example - Above I censored myself, but any
reasonable person could probably figure out which word I meant...

Since David's my friend I'll pick on him for a minute - David C. I
think you're a F**** m*** f*****er - Should he be offended or do we
play a complicated game of guess what I meant.

Things not yet covered so far.... and this is super difficult to articulate...

On the list exists one person whom is an excellent engineer (not me),
but he sometimes comes across just on the left side of being a bully
(I hope not me). Never crossing the line - his attitude comes really
close, but probably never crosses the line of being pushy(guilty).
I've seen only a handful of people actually stand up against him,
because mostly his technical stuff is great and spot on. IMHO we just
all be a little bit tough and NO_ACTION_REQUIRED. With some written
policy in place - I could see this person then having to maybe hold
back his very valuable feedback, because sometimes you just have to
fight for it.. Pretty please don't restrict passionate people - when
you love something, you passionately need to defend it at times..
Sincere intentions, but strong words..

Is the list PG, PG-13, R or at what level do "we" adults all consider
"ok". Even on broadcast tv (in the US) you'll hear some profanity.
(context)
https://www.fcc.gov/consumers/guides/obscene-indecent-and-profane-broadcasts

Excellent context!

Some people have pointed out that they don't like the R-rated style of
the LKML. Profanity and no holds barred just isn't for some people. I
can respect that, but personally I find it more funny and raw/honest.

I don't care much about the swearing like "s***, I broke the bots
again", but I understand not everyone is like that, so I avoid to the
best of my abilities.

I can easily cope with "this code is a piece of s***", because
sometimes it really is. Some people take it personal, though, so it's
best if we all always avoid that kind of talk.

But there's nothing dubious about: "you are a piece of s*** for
writing this code". That is totally unacceptable.

Now, encoding this in the CoC is the hard part...

In the world there exists arbitrators/moderators - Why not define a
couple of "adults" who have demonstrated a history of strong and
reasonable character. People who can defuse situations and basically
be the guy which "we" trust to make good decisions. Elect 3 -
something pops up... we go to them to make a decision or help fix
stuff. It's low volume so shouldn't be a burden.. they would likely
help out anyway..

That's another point I had forgotten.

I don't think the people in this committee should be nominated, but
voted. This is more than just the LLVM Foundation doing stuff on the
side, this is out whole community, of which the foundation is only
part of.

I feel very strongly about that, even if I trust the people that get
nominated. Others might not, and that'd be against the very code we're
trying to uphold.

cheers,
--renato

For the FreeBSD equivalent, we are planning to have a mixture (the exact mix still to be decided - these things are *hard* and I feel that the LLVM Foundation has rushed this, as indicated by the replies in the thread) of people from the following categories:

- Nominated by the Core Team (there’s no direct LLVM equivalent, as there’s no elected leadership of the LLVM project)

- Directly elected from within the community

- Respected individuals coopted from outside of the community (to ensure that we are not producing an echo chamber - imagine a CoC committee drawn from LKML contributors to see how badly things could go if you don’t do this)

I hope that the LLVM Foundation will adopt a similar strategy. The other very important point is that members of this committee must be trained in handling harassment complaints. Most large employers offer this kind of training (I’m scheduled to go on the one offered here in a couple of weeks), and there are independent ones that the Foundation could pay for people to attend if they can not get this training from their employer.

David

- Nominated by the Core Team (there’s no direct LLVM equivalent, as there’s no elected leadership of the LLVM project)

I'd trust an elected leadership to nominate *some* people...

- Respected individuals coopted from outside of the community (to ensure that we are not producing an echo chamber - imagine a CoC committee drawn from LKML contributors to see how badly things could go if you don’t do this)

This can also go the wrong way. Bringing people with different
mindsets can alter how our community behaves, destroying what we all
agree is the (close to) perfect balance.

cheers,
--renato

From: "Renato Golin via llvm-dev" <llvm-dev@lists.llvm.org>
To: "C Bergström" <cbergstrom@pathscale.com>
Cc: "llvm-dev" <llvm-dev@lists.llvm.org>
Sent: Thursday, May 5, 2016 7:44:25 AM
Subject: Re: [llvm-dev] Resuming the discussion of establishing an LLVM code of conduct

> Is the list PG, PG-13, R or at what level do "we" adults all
> consider
> "ok". Even on broadcast tv (in the US) you'll hear some profanity.
> (context)
> https://www.fcc.gov/consumers/guides/obscene-indecent-and-profane-broadcasts

Excellent context!

> Some people have pointed out that they don't like the R-rated style
> of
> the LKML. Profanity and no holds barred just isn't for some people.
> I
> can respect that, but personally I find it more funny and
> raw/honest.

I don't care much about the swearing like "s***, I broke the bots
again", but I understand not everyone is like that, so I avoid to the
best of my abilities.

I can easily cope with "this code is a piece of s***", because
sometimes it really is. Some people take it personal, though, so it's
best if we all always avoid that kind of talk.

But there's nothing dubious about: "you are a piece of s*** for
writing this code". That is totally unacceptable.

I'd strongly prefer that we have a "no public profanity" policy here. The fact that this community maintains a professional decorum is essential to being able to treat community interaction as an expected part of LLVM-related work activities. Otherwise, to name one problem, such expectations might run afoul of laws and regulations governing the workplace environment. Yes, some profanity is benign, but I see no definitive way to draw that line, and frankly, there are no situations where it is required.

-Hal