Skip to content

Instantly share code, notes, and snippets.

@beemyfriend
Last active August 1, 2017 06:40
Show Gist options
  • Save beemyfriend/446c7de1844c1353240e4d52c07eb3eb to your computer and use it in GitHub Desktop.
Save beemyfriend/446c7de1844c1353240e4d52c07eb3eb to your computer and use it in GitHub Desktop.
RainbowR Stepper
<head>
<style>
p, h1, h2, div{
font-family: Georgia, Verdana, serif;
text-align: center;
padding: 0px 10px 0px 10px
}
html, body {;
width: 100%;
height: 100%;
min-height: 100%;
}
</style>
</head>
<body>
<h1>RainbowR Code of Conduct</h1>
</body>
<script src = 'https://rawgit.com/gka/d3-jetpack/master/build/d3v4%2Bjetpack.js'></script>
<script>
var body = d3.select('body');
var intro1 = 'Welcome to RainbowR, a community of R enthusiasts who identify as LGBTQ+. RainbowR seeks to cultivate a safe space for its members to discuss R and all things related to R. Part of cultivating a safe space is by promoting a positive ethos, discouraging harassment and providing a system where harassment can be reported and addressed. Therefore, before we take you to the sign-up page for the RainbowR slack team, we ask you to read through and agree to the following Code of Conduct.<br><br>Please click the screen to continue',
intro2 = 'While most people would agree that harassment is wrong, there is no clear consensus of what actions consist of harassment. This document does not intend to list every possible instance of harassment, but does take the stance that if a person feels that they are being harassed, then the harassment exists. The only exceptions to this are that we will not address complaints of reverse-isms such as reverse sexism, reverse racism, and cisphobia. We will also not police tone.',
intro3 = 'Instead of providing a long list of what can be defined as harassment, we provide a list of ‘Hard and Fast Rules, provide the contact information of the CoC Team to report instances of harassment, as well as provide a description of how the CoC Team plans on dealing with reports of harassment.';
var behave1 = '<b>Hard and Fast Rules:</b><br>Do not reveal a person\'s private information or expose private conversations to people who are not members of the RainbowR Slack group.',
behave2 = 'Be respectful of communication of boundaries, such as “leave me alone,” “go away,” or “I’m not discussing this with you.”',
behave3 = 'Do not intentionally refer to people in a way that rejects the validity of their gender identity; for instance, by using incorrect pronouns or forms of address (misgendering).',
behave4 = 'Gratuitous or off-topic sexual images or behaviour will not be accepted.',
behave5 = 'We will not tolerate racist, sexist, or transphobic conduct.',
behave6 = '<b>Impact Vs. Intent</b><br>',
behave7 = 'If you are unsure if something is appropriate behavior, it probably isn\'t. Each person you interact with can define where that line is for them. Impact matters more than intent. Ensuring that your behavior does not have a negative impact is your responsibility.';
var report1 = 'If you are experiencing abusive or harassing behavior, then report the issue by emailing the RainbowR CoC Team at: [email protected]',
report2 = 'You can also directly contact any member of the RainbowR CoC Team:',
report3 = '<b>CoC Team Member</b> | <b>Slack Handle</b><br> Ben | @plzbeemyfriend<br>Sadie | @sadie<br>';
var conseq1 = '<b>If a complaint of a member\'s actions reaches the RainbowR CoC Team, then they will judge the action based on:</b>',
conseq2 = 'Whether the member was given a proper explanation as to why he or she was being offensive.',
conseq3 = 'Whether the member provided a proper apology.',
conseq4 = 'Whether the member\'s action can be considered Trolling.',
conseq5 = '<b>If the member\'s actions were deemed offensive then:</b>',
conseq6 = 'If the action was considered trolling, then the member will be removed from the group immediately.',
conseq7 = 'Otherwise the member will be subject to the 3-Strike Rule:',
conseq8 = '<b>First occurence:</b> The member will receive a private reminder that the behavior is inappropriate according to our guidelines.',
conseq9 = '<b>Second occurrence:</b> The member will receive a private warning that any additional violations will result in removal from the community.',
conseq10 = '<b>Third occurrence:</b> We will delete the member\'s account.',
conseq11 = 'If you have any questions with regards to how the CoC Team handles reports of abuse, then please email the admins at: [email protected]';
var transTime = 750;
function newText(txt, func){
body.on('click', null);
body.append('p')
.html(txt)
.st({opacity: 0})
.transition().duration(transTime)
.st({opacity: 1})
.on('end', bodyClick);
function bodyClick(){body.on('click', func);}
}
function newBody(head, func){
body.on('click', null);
body.selectAll('p')
.transition()
.duration(2 * transTime)
.st({opacity: 0})
.remove();
body.selectAll('h2')
.transition()
.duration(2 * transTime)
.st({'opacity': 0})
.remove();
body.transition()
.delay(2 * transTime+1)
.on('end', newH2)
function newH2(){
body.append('h2')
.html(head)
.st({opacity: 0})
.transition()
.duration(transTime)
.st({opacity: 1})
.on('end', func)
}
}
function joinus(){
body.selectAll('p')
.transition()
.duration(2 * transTime)
.st({opacity: 0})
.remove();
body.selectAll('h2')
.transition()
.duration(2 * transTime)
.st({'opacity': 0})
.remove();
body.append('h2')
.html('Join Us!')
.st({opacity: 0})
.transition()
.delay(2*transTime+1)
.duration(2*transTime)
.st({opacity: 1})
body.append('p')
.html('You\'re almost there! Click on the button below to join RainbowR!')
.st({opacity: 0})
.transition()
.delay(2*transTime+1)
.duration(2*transTime)
.st({opacity: 1})
body.on('click', null)
body.append('div#rainbowr')
.append('img')
.st({opacity: 0})
.at({
src: 'https://github.com/beemyfriend/beemyfriend.github.io/blob/master/Projects/rainbowr_small_square.png?raw=true',
alt: 'A faboulous rainbow-colored R!',
title: 'A faboulous rainbow-colored R'
})
.transition()
.delay(2*transTime+1)
.duration(2*transTime)
.st({opacity: 1})
// link disactivated because I"m not sure if we're ready to go public yet
body.append('div#joinus')
.append('a')
.attr('href', '#')
.append('button')
.html('I agree to the Code of Conduct. Sign me up to RainbowR!')
.st({cursor: 'pointer'})
.st({opacity: 0})
.transition()
.delay(2*transTime+1)
.duration(2*transTime)
.st({opacity: 1})
}
function intro1f(){
newText(intro1, intro2f)
}
function intro2f(){
newText(intro2, intro3f)
}
function intro3f(){
newText(intro3, behavior)
}
function behavior(){
newBody('Behavior', behave1f)
}
function behave1f(){
newText(behave1, behave2f)
}
function behave2f(){
newText(behave2, behave3f)
}
function behave3f(){
newText(behave3, behave4f)
}
function behave4f(){
newText(behave4, behave5f)
}
function behave5f(){
newText(behave5, behave6f)
}
function behave6f(){
newText(behave6, behave7f)
}
function behave7f(){
newText(behave7, reporting)
}
function reporting(){
newBody('Reporting', report1f)
}
function report1f(){
newText(report1, report2f)
}
function report2f(){
newText(report2, report3f)
}
function report3f(){
newText(report3, consequences)
}
function consequences(){
newBody('Consequences', conseq1f)
}
function conseq1f(){
newText(conseq1, conseq2f)
}
function conseq2f(){
newText(conseq2, conseq3f)
}
function conseq3f(){
newText(conseq3, conseq4f)
}
function conseq4f(){
newText(conseq4, conseq5f)
}
function conseq5f(){
newText(conseq5, conseq6f)
}
function conseq6f(){
newText(conseq6, conseq7f)
}
function conseq7f(){
newText(conseq7, conseq8f)
}
function conseq8f(){
newText(conseq8, conseq9f)
}
function conseq9f(){
newText(conseq9, conseq10f)
}
function conseq10f(){
newText(conseq10, conseq11f)
}
function conseq11f(){
newText(conseq11, joinus)
}
intro1f();
</script>

Online Code of Conducts: Summary

Intro

This is a summary of the ideas that I read up on regarding Codes of Conduct (CoC). The goal of this summary is to understand what makes a good CoC in order to create one for the RainbowR slack group. I will do this by identifying the attributes of an effective CoC and by providing examples for each of the identified attributes. I will then conclude this summary by providing a draft of what I believe the RainbowR CoC should include According to the Geek Feminism wiki, an effective code of conduct should include:

  • Specific descriptions of common but unacceptable behavior.
  • Reporting instructions with contact information.
  • Information about how it may be enforced.
  • A clear demarcation between unacceptable behaviour (which may be reported per the reporting instructions and may have severe consequences for the perpetrator) and community guidelines such as general disagreement resolution.

Description of Unacceptable Behavior

With regards to defining acceptable and unacceptable behavior, CoCs can range from the vague as shown in Ruby's CoC: "Behaviour which can be reasonably considered harassment will not be tolerated." to the specific as in the Design Systems Slack's CoC: "Intentionally or repeatedly referring to people in a way that rejects the validity of their gender identity; for instance, by using incorrect pronouns or forms of address (misgendering)."

A vague list of acceptable and unacceptable behavior such as the one found in the Ruby CoC follows the idea that people inherently know and agree on what is 'good' and 'bad' behavior. The problem with this kind of thinking is that our idea of what is 'good' and 'bad' is very personal and dependent on factors such as geolocation, religion, and family upbringing. I believe that most people would agree that 'harassment' is wrong, but most people would not agree on what actions consist of harassment. A concrete example of how different ideas of a single concept can be is seen by how different US states define rape. Most people in the US believe rape is wrong, but there is actually no consensus as to what rape is. The differences get even greater once we look internationally.

A specific list of acceptable and unacceptable behavior such as the one found in the Design Systems Slack CoC follows the idea that it is best to be clear on what consists of 'good' and 'bad' behavior. Most of these type of CoCs make sure to mention that the list of unacceptable behavior is not exhaustive, but do in fact provide a long list of examples. The problem with this kind of CoC is that many people do not have the bandwidth to actually read the entire list and end up ignoring it entirely. Similar behavior can be seen with Terms of Service (ToS) contracts for most phone applications - people generally don't read them. This begs the questions: if the people who should be reading the CoC are not actually reading it, then what is the point of even including a CoC? Unlike a ToS contract, CoCs are not legally binding so there is no legal justification to including a CoC.

A great example of mixing the vague and specific interpretations of the CoC can be found in the Spatial Community. Their CoC provides a lit of 4 specific 'Hard and fast rules.' It then continues on to provide the vague, yet clear concept that "If you are unsure if something is appropriate behavior, it probably isn't. Each person you interact with can define where that line is for them. Impact matters more than intent. Ensuring that your behavior does not have a negative impact is your responsibility." The Spatial Community CoC does a great job, then, of defining very specific rules for the community, while also protecting its members from harassment by clarifying that if a person believes he or she is being harassed, then the community agrees with him or her.

The Rust CoC also does a great job of explaining that impact is more important than intent and states: "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." There is an emphasis on how easily members can be misinterpreted and that everyone can communicate an idea better. This is good because it focuses more on the action instead of the person and infers that even good people can mistakenly offend others.

I believe the RainbowR CoC should imitate the Spatial Community's CoC and the the Rust CoC by listing a few "hard and fast rules" as well as clarifying that impact and perception are prioritized over intent.

Reporting Procedures

Many CoCs do not include any instruction on what to do when a member acts offensively or inappropriately. One problem with these CoCs is that they put an extra burden on a victim of harassment by forcing him or her to figure out who to contact in order to report the harassment. It is not always clear who the admins of a particular group are and also not always clear the best method to contact them are.

The CoCs that do provide reporting instructions generally provide a point of contact. The Go Community CoC mentions a CoC Working Group with the purpose of de-escalating conflicts and trying to resolve issues to the satisfaction of all parties. The CoC provides the email address of all members of the Workng Group as well as an email dedicated solely to conduct related issues.

The Spatial Community provides a slack-specific reporting command that silently communicates a message to the admins of the group. The Design Systems Slack does an awesome job of guaranteeing that all requests for confidentiality are honored. I believe the RainbowR group should identify a few members to be part of a CoC Working Group and provide their contact information on the CoC. We should also provide a general email - [email protected] - that people can contact. It is important that the members of the CoC Working Group receive some sort of training in conflict resolution.

Enforcing CoC

There are some CoCs that explicitly state that the rules will not be enforced. For example, the GNOME CoC states 'There is no official enforcement of these principles, and this should not be interpreted like a legal document.' The reality, however, is that a CoC is enforceable within a community even if it is not a legal document. Admins have the right to kick people out of a slack group and GitHub retainers have a right to decline pull-requests. Explicitly stating that the CoC will not be enforced is explicitly stating that it doesn't matter how a person acts and negates the whole purpose of a CoC.

Most CoCs that do mention consequences and enforcement defer the actual consequences to the admins or anti-abuse team. For example, the Geek Feminism CoC states that 'if a participant engages in harassing behavior, the Geek Feminism Anti-Abuse Team may take any action they deem appropriate.' While such a stance may seem vague, it does give a sense that there will indeed be a consequence and that there is a team dedicated solely to handling abusive behavior.

The Go Community CoC does a great job of showing that they will react by providing a timeline for a response, providing a general outline of how the Working Group will handle a conduct-related issue, as well as listing the potential outcomes of their review process.

The Puppet Community CoC also does a great job of explaining how the community will enforce the CoC. A notable feature of their CoC is that it provides a '3-Strike' rule. The 3-strike rule provides a step-by-step explanation of how the first 3 offenses are handled. By the 3rd offense, the offending member is kicked out of the group. The Puppet CoC also makes a note stating that spammers (ie. trolls) are to be removed on the first offense.

I believe the RainbowR should adopt a 3-strike rule. A second option would be to provide an outline of how the CoC Working Group or admins will handle reports of abuse. It is unclear, however, what this outline should look like for the RainbowR community.

Acceptable Disputes vs. Unacceptable Abuse

It is almost as important to clarify what isn't unacceptable behavior. That is, what doesn't consist of harassment. The Geek Feminism CoC explicitly states that the community 'prioritizes marginalized people’s safety over privileged people’s comfort.' It also lists a number of commonly used ideas meant to devalue any women-only, lgbtq-only, or x-race-only groups.

There are very few examples of CoCs differentiating harassment and disagreement. I suggest we try to follow the example provided by the Geek Feminism CoC.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment