Skip to content
This repository has been archived by the owner on Jan 20, 2022. It is now read-only.

Approving FCOP for Typelevel projects #74

Closed
jdegoes opened this issue May 13, 2017 · 123 comments
Closed

Approving FCOP for Typelevel projects #74

jdegoes opened this issue May 13, 2017 · 123 comments

Comments

@jdegoes
Copy link

jdegoes commented May 13, 2017

I'd like to submit the Fantasyland Code of Professionalism (FCOP) for review, with the goal of obtaining approval for its use in new and existing Typelevel projects.

As with the Scala Code of Conduct, FCOP explicitly lists encouraged behavior (including showing empathy and treating everyone with professional courtesy), and contains both a strong anti-harassment clause and explicit protections for members of socially marginalized groups.

The goal of this ticket is an official indication that projects using FCOP are welcome to join or to continue to participate in the Typelevel ecosystem.

@larsrh
Copy link
Contributor

larsrh commented May 14, 2017

I am wary of this. Frankly, I'm also a little surprised about this request, given our firm stance from 2016 and that FCOP as it stands still considers no-platforming to be unacceptable.

I also don't think that the FCOP is technically compatible to the Typelevel CoC (nor the Scala one), because as far as I can tell, e.g. displaying sexist or racist imagery during a talk (in slides, or symbols worn), or in a project repository, is not prohibited and not a punishable offense. Even if it would be, the requirement that only aggrieved members as opposed to everyone can report it (in case of active participation, as FCOP defines it), rules it out in my book. If I understand it correctly, as a white male attending a talk, I wouldn't be allowed to criticize outright sexist material being presented, nor would I be allowed to send an email to the employer, even if it's a work-related project.

@jdegoes
Copy link
Author

jdegoes commented May 14, 2017

Two of your points are factually incorrect, since FCOP includes images, sounds, and gestures in the definition of communication, and allows third-party reports at the discretion of the community leaders.

So are you saying that a COC has to encourage or at least allow no-platformers to participate in order to be approved for use in Typelevel projects?

Please state with clarity and precision the exact requirement you have around no-platforming.

@fommil
Copy link

fommil commented May 14, 2017

@larsrh are you saying that FCOP is in direct conflict with http://typelevel.org/conduct.html ? I don't see how that can be the case - indeed the lack of clarity in the current CoC is why I'd prefer to use FCOP for ensime. I'd appreciate it if TL and FL could agree on how to make the CoCs compatible or at least agree on what exactly is not compatible by referring to specific pieces of text.

FYI when ensime signed up to TL's CoC it was not for any of the reasons you've just presented (no platforming and sending emails to somebody's boss because of conference behaviour): it was because we want our public spaces to be safe places for contributors from any kind of background, explicitly banning discrimination on the basis of gender / sexuality / disability / age. Discrimination on the basis of text editors, such as Vim, is obviously allowed.

On a personal note, I thought it was right for TL to cancel the LC spin-off last year, but I don't see how no-platforming has suddenly become a core part of the TL agenda. I stayed out of the whole debate about LC boycotting because it had nothing to do with me and I don't feel there was any right answer: just a lot of different shades of gray. In hindsight, I don't think any of the fears came true (the person at the centre of the controversy did not gain a following as a result, and was largely ignored by everybody except the no-platformers). I'm going to LC this year because there has been too much division this last year (every country has had to deal with the rise of Nationalism) and I feel we have more that unites us than divides us. If no-platforming and the ability to email work bosses / customers over TL activities is now core to TL, the committee should draft a new CoC that makes it clear exactly what it means to be signed up to TL. I think that's only fair, otherwise I basically have no idea who is deciding what, or what "what" is.

@richardhodges
Copy link

So are you saying that a COC has to encourage or at least allow no-platformers to participate in order to be approved for use in Typelevel projects?

That sounds like a pretty significant overreach to me. The Typelevel ecosystem is large and diverse; we should appreciate that different projects have different personalities and needs involved. The FCOP is an outstanding choice for projects that are more strongly focused on technical matters than political drama, so it would be a shame if it was arbitrarily banned.

@jdegoes
Copy link
Author

jdegoes commented May 15, 2017

A typical COC does not formally specify all possible circumstances in which an individual may be prevented from participating in a project.

For example, if some person were to contribute a pull request to the Typelevel website, itself bound by the Typelevel Code of Conduct, and it became known the person had pseudonymously contributed offensive content to a blog, the person might very well be prevented from further participation.

This consequence would not itself be seen as a violation of the Typelevel Code of Conduct, because the Code of Conduct does not attempt to address all the reasons someone might be removed, but merely provide some expectations around behavior.

FCOP is much more precise.

FCOP comprehensively specifies which classes of behaviors might result in removal. In fact, no-platforming a fellow member of the community — in addition to stealing or taking credit for their work, or trying to get them fired — fall within such a class.

This provision, which prohibits so-called professional sabotage, is not a guarantee that anyone who engages in such behavior will definitely be prevented from participation, only an explicit statement that the community has the ability to take action on such behavior. The details of the situation factor critically into whether or not the ability leads to a definite action.

Now, the Typelevel COC does not limit reasons for removal in such a fashion, so by itself, the Typelevel COC does not prevent a community from taking action against a member who engages in professional sabotage—including a member who engages in no-platforming.

In fact, there may exist numerous, unspecified reasons why a member might be prevented from participation in a Typelevel COC community, almost none of which are specified in the COC.

In the matter of "no-platforming", the only difference is that, it is implicit in a Typelevel COC community that one can be removed for no-platforming (and lots of other unspecified reasons), whereas it is explicit in an FCOP community—because everything is explicit in an FCOP community.

It does not make any sense, in my opinion, to penalize FCOP merely because it chooses to be precise.

Some people prefer vague COCs. Some people prefer precise ones. Some people prefer political ones. Others prefer non-political ones. There is plenty of room for projects with all of these COCs.

The most important thing in my book is whether or not a COC takes harassment and other destructive behaviors seriously, or whether it encourages a no-holds barred, everyone-fend-for-themselves environment. Both the Typelevel COC, the Scala COC, and of course, FCOP (which contains one of the strongest anti-harassment clauses possible), all clearly fall in the former camp, not the latter.

As stated in the issue description, I am not asking for an endorsement, merely for the possibility of FCOP-adopted projects participating in the Typelevel family of projects.

If no-platforming has become a core part of the Typelevel agenda, I suggest before rejecting FCOP, the Typelevel COC should first be modified to prevent anyone from being removed on the basis of no-platforming behavior. Because without this protection, FCOP remains strictly less powerful than the Typelevel COC, which itself contains no prohibition for removal based on any grounds, including removal based on no-platforming.

I'd also suggest at the same time making the Typelevel agenda much more clear than it already is, because the subject of no-platforming is not discussed anywhere (as far as I can see), nor is it assumed that people contributing to Typelevel projects must necessarily share the same views around no-platforming (or other related issues).

@alexandru
Copy link
Member

alexandru commented May 15, 2017

Professional Sabotage. We define professional sabotage to be any behavior that does have or is intended to have the effect of harming a member's career, including but not limited to attempting to no-platform, blackball, or fire a member, or stealing or taking credit for the work of a member; or encouraging others to engage in such behavior. Explicitly excluded from professional sabotage is all harmful behavior that is exclusively motivated by and communicated in terms of the member's failure to fulfill their professional duties.

I'm actually uncomfortable with this clause for the same reason that some Scalaz members are uncomfortable with CoCs in general. It feels overreaching.

Also at this point Lars only offered his opinion, yet @jdegoes jumps to conclusions: https://twitter.com/jdegoes/status/863863732564140032

So @typelevel won't approve FCOP because it's not friendly to no-platforming(!). What do you say, Scala developers?

And from #74 (comment):

If no-platforming has become a core part of the Typelevel agenda, I suggest before rejecting FCOP, the Typelevel COC should first be modified

I don't see why, as rejecting FCOP doesn't necessarily mean that no-platforming is a core part of the Typelevel agenda.

I'm afraid of jumping to conclusions too early, but was this submission meant to create dissent?

@tpolecat
Copy link
Member

I am reluctant to engage in CoC discussions, but I don't like the direction this is going.

I think "compatibility" should be interpreted generously. Different projects will naturally want to express their expectations in different ways, and nobody has hit on the perfect formula yet. Even among projects that have accepted the TL CoC there are differences in inclusiveness and expectations of civility. This is an area like anything else we do where ideas need to be explored and refined, and John has presented his take on it. You may not agree with it but it has been constructed with thought and care. I am confident that he is acting in good faith, and he deserves a kind and constructive dialog here.

As for the specifics I don't read the TL CoC as having anything to say about no-platforming.

@larsrh
Copy link
Contributor

larsrh commented May 15, 2017

As @alexandru pointed out, I currently don't see an argument in good faith here, given that my initial response has been grossly misrepresented on Twitter. Locking this thread for now.

@typelevel typelevel locked and limited conversation to collaborators May 15, 2017
@stew
Copy link

stew commented May 15, 2017

I do not believe this thread should be locked

@larsrh
Copy link
Contributor

larsrh commented May 15, 2017

@stew I like locking and continuing after a couple of days more than having to delete troll comments coming from inflammatory statements on Twitter. If you think that those are not likely to happen, happy for you to unlock.

@stew
Copy link

stew commented May 15, 2017

[Edited slightly]

[non specific disapproving grunting]

@typelevel typelevel unlocked this conversation May 15, 2017
@fommil
Copy link

fommil commented May 15, 2017

The TL CoC is ambiguous in many regards and I'm becoming increasingly uncomfortable with it: there is a clear mismatch in interpretations that has only been shown to me in this thread.

I don't see why being part of TL means rejecting FL or LC.

I'd like to use FCOP in ensime and I do not understand why you feel it is incompatible with TL CoC. It's a far superior document to the poorly written, sex obsessed (6 references vs scala's 1) , TL CoC.

I'd especially like to know what the process is from here. For example, is it going to be debated by the committee on a youtube stream like the SCIP meetings? I don't think a closed room decision is going to look very good here. If FCOP is going to be rejected, I think the community needs to be a part of that decision, not just the committee.

@tpolecat
Copy link
Member

I'd really like to plead with everyone to slow down, take a breath, think, and be kind. There are a lot of us here, and some strong and differing opinions, but we're all trying to do our best. Typelevel talks about compatibility and it is completely reasonable for someone to ask whether a given X is compatible or not. However I think we don't really have a good way to answer that question yet. So this may require some patience.

Would someone like to reiterate the objections to FCOP that have not been addressed, if any? Lars has indicated that he doesn't want to continue so maybe someone else who understands the nuances of this material could help out. I have never studied this stuff so I just don't have a sense for what's important and what isn't.

@larsrh
Copy link
Contributor

larsrh commented May 15, 2017

I'd especially like to know what the process is from here. For example, is it going to be debated by the committee on a youtube stream like the scala centre advisory meetings? I don't think a closed room decision is going to look very good here. If FLCP is going to be rejected, I think the community needs to be a part of that decision, not just the committee.

To state this clearly, once and for all: I'm not aware of any private chat room meetings, and I'm not planning one. There have been discussions on the accompanying Gitter channel, which is public and archived.

@alexandru
Copy link
Member

My objection is that FCOP would be strongly against last year's stance that I personally agreed with.

Of course the debate has nuance and since we are talking about personal attacks and no-platforming, I personally disagreed strongly when Larry Garfield of Drupal was attacked for his sexual orientations, just a very relevant example in context. And I'm a firm believer and protector of the freedoms of speech and association. Therefore there is some merit to the argument that personal preferences, opinions and beliefs should stay personal and that we shouldn't use this to discredit or exclude people from our communities.

But this isn't a black and white issue and it isn't possible to create a community without a common set of values. And I'm only a believer in freedom of speech because at the same time I'm a believer in capitalism, property and being able exercise my own freedom of speech and freedom of association. Such freedoms are a doubly edged sword.

@fommil

I'd like to use FCOP in ensime and I do not understand why you feel it is incompatible with TL CoC.

I am not a lawyer, but I won't apologize for supporting last year's event, I'm standing by my beliefs and if I could go back in time, I would do the same.

Where does that leave people like me that did engage in no-platforming? Are you going to exclude me from your community? What about the other members?

poorly written, sex obsessed, TL CoC.

The Scala CoC is very positive. Have you read it?

@alexandru
Copy link
Member

One final thought, the GPLv2 has this clause:

You may not impose any further restrictions on the recipients' exercise of the rights granted herein.

This clause is there for very good reasons, even if it makes GPLv2 incompatible with the original BSD or Apache2.

@tpolecat
Copy link
Member

My objection is that FCOP would be strongly against last year's stance that I personally agreed with.

The Typelevel CoC itself doesn't take a stance one way or another, as far as I can tell. If a compatible CoC does take a stand must it necessarily be in support of no-platforming? Would being opposed create an inconsistency elswhere?

I'm not trying to argue, I just want to understand what you're saying.

@milessabin
Copy link
Member

I'm on holiday this week and will have comments to make on this thread when I get home. In the meantime there's no urgency to any of this, so I'd like to reiterate @tpolecat's suggestion that we slow down and reflect.

@fommil
Copy link

fommil commented May 15, 2017

@alexandru to answer your question. If you were engaged in no-platforming a member of the ensime community (or there was reason to believe that you might do so based on previous behaviour), then yes you'd be banned from engaging with the ensime community on github and gitter. I may even extend that protection to members of TL and (at my discretion) the FSF. Personally, I don't think the no-platforming of CY is evidence to suggest that you may professionally sabotage an ensime contributor. If, however, you were to no-platform RMS (as some have started doing) you'd be banned for sure.

Under no circumstances is anybody banned from accepting ensime under the GPLv3 (this is rule 0 of Libre Software), nor from contributing code back under the GPLv3 (via a proxy, e.g. if I was to look at your fork and cherry pick commits back).

I don't see why last year's LC is in any way relevant to ensime. I don't need TL approval to implement the above, but it'd be nice if I could use the FCOP to clarify the kinds of questions along the lines that you have. Right now, I feel the TL-COC is very ambiguous in many gray areas and I know several people who are not contributing to TL because of its lack of clarity.

@alexandru
Copy link
Member

@tpolecat

If a compatible CoC does take a stand must it necessarily be in support of no-platforming?

CoCs are about what people and behavior to exclude from a community, not what to include, although language encouraging certain behavior is nice. Not making a stand on no-platforming does not mean that the CoC is in support of no-platforming, it just means that the CoC does not exclude it.

Or in Scala terms, we could say that we've got a subtyping relationship:

FCOP <: Typelevel CoC

The Liskov substitution principle only holds in one direction, covariance is a bitch, therefore some Typelevel members will get excluded or will exclude themselves from FCOP-enabled projects, thus an upgrade to FCOP is by definition incompatible with Typelevel's CoC. This is the same situation with BSD vs GPL. BSD is compatible with GPL only if you can accept that the end result will be governed by GPL's restrictions.

This is actually a really good conversation to have, because I can now see the point of some Scalaz members arguing that not having a CoC in the first place is better. Not saying that I agree, but apparently coming up with a shared set of values is hard.

@alexandru
Copy link
Member

@fommil I did read that document and here are the relevant quotes:

  1. We permit only civil individuals to participate in the community
  2. We define civil individuals as individuals who are not currently uncivil
  3. Uncivil: We believe the individual likely to engage in professional sabotage, and the individual has participated in previous professional sabotage or there is credible evidence suggesting the individual is planning to engage in future professional sabotage.
  4. Professional Sabotage. We define professional sabotage to be any behavior that does have or is intended to have the effect of harming a member's career, including but not limited to attempting to no-platform, blackball, or fire a member, or stealing or taking credit for the work of a member; or encouraging others to engage in such behavior. Explicitly excluded from professional sabotage is all harmful behavior that is exclusively motivated by and communicated in terms of the member's failure to fulfill their professional duties.

According to this definition, due to me signing that LambdaConf Statement, I'm an uncivil individual.

@alexandru to answer your question. If you were engaged in no-platforming a member of the ensime community, then yes you'd be banned from engaging with the ensime community on github and gitter. I may even extend that to members of the TL and (at my discretion) the FSF.

Ah, there you go. You're right, you should clear this out in the project's README.

But then the next topic we should discuss is "What is Typelevel?".

@fommil
Copy link

fommil commented May 15, 2017

@alexandru with regards to the Scala CoC I don't like it and I don't think it's a positive document. I hate to admit it, but the Apache one is more positive. Scala CoC has a lot of ill-defined, wishy-washy words that I don't understand (what does it mean to troll, or bait? Is Martin Odersky's Haskellator considered trolling? When's it not a joke anymore?) and the enforcement of it is very arbitrary. In particular, the shutting down of discussions around licensing of Scala was handled very poorly, and we lost a great contributor in Simon Ochsenreither because of the focus on escalation and scolding, not deescalation understanding and discussion. Anything that tries to police "tone" will exclude passionate individuals and those with sub-optimal communication skills (which includes those who do not speak English fluently). A CoC is for the serious stuff, not the technical disagreements.

I also updated my response, two comments above, to clarify my thoughts on Professional Sabotage. I'm sure others would make a different interpretation.

@travisbrown
Copy link

I wouldn't personally adopt the FCoP for my projects, primarily because I think that professional communities can (and should) work for social goals.

That's not relevant to this issue, though. In my view the biggest mismatch between the Typelevel CoC and the FCoP is that Typelevel encourages non-aggrieved members to report any harassment they notice, and doesn't differentiate between reports by aggrieved members and third-party reports. Earlier versions of the FCoP also put constraints on aggrieved members that were an even bigger problem for compatibility, but it seems to have been improved in this respect in the past few months.

(I also think that the FCoP's prohibition on taking harassment outside the community into account in community decisions is in tension with the spirit of the Typelevel CoC, if not the letter. Incidentally, the fact that the Typelevel CoC is weak here is one of the reasons that I'm personally planning to use the Scala CoC for new projects.)

It's important to note that this conversation isn't happening in a vacuum. I'm not as confident as @tpolecat that @jdegoes is acting in good faith here, but I don't think it's my job to decide that, and I don't really care. I do know that he has repeatedly attacked individuals who have criticized the FCoP (e.g. Matthew Garrett, Christie Koehler, myself, etc.). He's called people liars (including many people who I do believe were acting in good faith), has threatened libel lawsuits, has (intentionally or not) made comments resulting in "anti-SJW" dogpiling by his followers, etc.

So I'm a -1. This isn't just about literal compatibility (although even on that basis I think there's a case for no)—it's also about Typelevel forming an association with an organization that doesn't share its goals or values while (further) alienating people who do.

@travisbrown
Copy link

Quick footnote: I'm commenting only as a maintainer of a couple of Typelevel projects and don't have any kind of leadership role in Typelevel—i.e. I may want to "play bullshit political games" but I'm not a "guy at the top", as John so collegially puts it.

@fommil
Copy link

fommil commented May 15, 2017

Personal matters aside (I've not been following any of that), I don't see how compatibility of CoCs can be considered "forming an association". That's like saying we form an association with MIT, BSD, Apache Foundation and FSF by approving their licenses as compatible with Typelevel's goals. This is a matter of compatibility of codes... the equivalent of https://www.gnu.org/licenses/license-list.html

I'd like to have a wider list of options for ensime because I really don't feel that the current TL CoC has been relevant and its ambiguity is turning people away from contributing (also to cats, but that is not my project so I do not wish to push a different CoC upon them).

@travisbrown
Copy link

@fommil I quote:

The goal of this ticket is an official indication that projects using FCOP are welcome to join or to continue to participate in the Typelevel ecosystem.

Being legalistic about the details of CoC compatibility should absolutely be part of this conversation, but in the end we're not just formalistically checking off boxes—we're making decisions about what we want this community to look like and what participants we want it to attract or alienate.

@jdegoes
Copy link
Author

jdegoes commented May 15, 2017

@larsrh

If I am misunderstanding your rationale for rejecting FCOP, then please show me how. I genuinely want to understand why you will reject projects that use FCOP from participating in the Typelevel family of projects.

If your reasons do not bear scrutiny (for example, you are assuming that FCOP has more power to kick someone out for no-platforming than the Typelevel COC does—which is untrue) or if they are based on a misunderstanding of FCOP (for example, you are assuming that images are not covered by FCOP, which is again untrue), then I assume you would want to know this, as well.

If the decision is going to be that FCOP projects are not welcome in the Typelevel family, then I hope both of us will be able to state exactly why this is the case when all is said and done.

Locking the thread and refusing to explain the rational sends the wrong message to the community.

@alexandru

Please keep a few things in mind:

  1. FCOP has nothing to say on the withdrawal of the Typelevel Summit from LC. As far as I can see, there is no remotely plausible interpretation of FCOP that permits any retaliatory actions from an FCOP project based on such a withdrawal.
  2. You signing the statement does not make you uncivil. First, as stated in the definition, a designation of uncivil requires a belief from the FCOP community that you will engage in professional sabotage against members of the community (i.e. it's about future actions). Second, a designation of uncivil requires evidence of sabotage, and I personally don't see how expressing your views around talk selection could be considered professional sabotage.
  3. You seem to be operating from the assumption that a Typelevel COC-governed project couldn't remove you for no-platforming. This assumption is false. A Typelevel COC-governed project can remove you for strictly more reasons than an FCOP one. The difference is that FCOP voluntarily chooses to limit the reasons you can be removed, in an effort to hold leadership accountable and make them less likely to engage in favoritism, inconsistent interpretation, or other malicious behavior.
  4. If Typelevel approved FCOP tomorrow, it wouldn't mean that Typelevel endorses FCOP. It would just mean FCOP projects could join the Typelevel ecosystem. If you didn't want to participate in these FCOP projects, you wouldn't have to do so, just like people who feel the Typelevel COC is to "squishy" don't have to participate in Typelevel projects that use the Typelevel COC.

Your core objection to FCOP seems to be, "They could eject me for some reason." But again, FCOP is explicit about the circumstances in which you can be ejected. Other COCs do not have this precision, and projects adopting these COCs can eject you for innumerable reasons, including the very few reasons that FCOP projects are allowed to eject you for.

@stew

I will not remove the request. This issue can be considered closed when there is a clear indication as to whether or not FCOP projects may participate in the Typelevel family of projects.

Your reason for not wanting to allow FCOP projects to join Typelevel seems to be, "Well, Tony is allowed in an FCOP community, so it must be bad." I suggest we keep specific individuals out of these discussions and focus on issues of substance—like the actual contents of FCOP.

As you well know, Scalaz has rejected any code of conduct, including FCOP. FCOP is very clear that harassment and shaming (including personal insults) will not be tolerated, and all participants in an FCOP community are required to abide by these restrictions.

@travisbrown

The entirety of your argument seems to be, "FCOP isn't compatible with the spirit of the Typelevel COC. Oh and @jdegoes calls people out for making false statements about FCOP."

Since the "spirit" isn't something that's written down anywhere, I'd argue that no one can know whether or not some COC is compatible with the "spirit".

If compatibility with the "spirit" of Typelevel COC is required, then I suggest this "spirit" should be written down somewhere so we can all know the precise reasons why projects with certain COCs are rejected from participating in the Typelevel family of projects.

As for me countering libel and contradicting false statements made about FCOP, expect that to continue for as long as people insist on libel and making false statements about FCOP.

@travisbrown
Copy link

@jdegoes This is getting off-topic, but obsessively screenshotting and reposting (out of context) the tweets of someone who has blocked you on Twitter is arguably pretty close to harassment.

@johnynek
Copy link

I also don't want to accept this proposal. I am concerned that the majority of the arguments in support of accepting seemed pitched at people who fear being kicked out of a community rather than convincing new people that they won't have to deal with sexism, racism or overt hostility in typelevel endorsed projects.

Sadly no woman that is active in typelevel projects has commented (that I see) but several women active in programming in the past have told me they moved away from scala because of how hostile the community was.

While FCOP probably may appeal to people who don't want to talk about these issues, or call them politics, I disagree. I don't think disagreeing about equal rights for all humans is something that should be on the table of legitimate differences of opinion that people should be expected to overlook in typelevel projects.

Not everyone has to share this view, though I hope they do, but I think the mission of inclusion, especially of those that have felt harassed and excluded from scala in the past, is a mission of Typelevel.

I don't think John agrees with this mission, or is at least very coy about saying so. I fear that the FCOP is crafted to protect harassers more than support Typelevel's mission of inclusion.

I wish projects the best, but if they don't want to actively work to improve scala's image as a community hostile to women and accepting of cruel communication, they should work outside of the Typelevel umbrella.

@fommil
Copy link

fommil commented May 21, 2017

Given that ensime seems to be the only Typelevel sub-community that has required moderation (unless other project maintainers are not admitting it), this entire conversion feels very much like I'm a soldier in the trenches and my generals are making philosophical decisions that don't help me and thinking about unrealistic edge cases. FCoP helps me to reason through a problem, without having to go back to moral principles. Especially it helps put my mind at ease regarding potential problems and means I don't need to waste time discussing it with others. That's very useful, I get brain cycles back to spend on managing our sponsored dev or fixing the CI, and occasionally writing some code.

ensime is the only "application" in Typelevel, as opposed to a library, and subject to significantly different expectations from users. This last year I've changed the tone of the contributor/user relationship and things have improved dramatically. I'm getting hassled less, and more people are contributing and enjoying hanging out in the gitter rooms as learners rather than expecting a support line (except now I get shamed because I won't commit to helping every single user instead of spending time with my wife)

By making it clear of my intention not to overreach, I hope less people will be put off by the wooly TL-CoC (a real complaint I've had from several potential contributors). More contributors (all of whom are civil) make me happy. More users make me happy too: you might enjoy your job, but you wouldn't do it without pay, right?

I'm effectively using FCoP for ensime. I can call it "magical cuckoo land code of professionalism" if you'd prefer... which we can do when John releases a CC-BY version. I'd like the cuckoo code to be officially blessed so I don't have to explain this situation to anybody, and waste even more time.

Furthermore, I'm utterly shocked that some of you have interpreted the TL-CoC to justify contacting somebody's boss/manager. I now understand, finally, why lots of scalaz developers won't touch Typelevel with a barge pole and I'm truly embarrassed. I've seen situations escalate to this, from fisty cuffs on mailing lists, and it ruins careers. I'm personally going to request a clarification on that from any TL project I engage with, otherwise I'm not interested in contributing to those projects that carry such a high liability. Let me assure you that I'd sue the bejesus out of anybody if they did anything of the sort to me: you are personally liable for any financial loss or professional standing and it is unreasonable to expect such a penalty regardless of how rude anybody is.

We are like a startup who have hit a problem or growth spurt and the directors realise they assumed everybody else had the same plan for the company as them, but they didn't.

@jdegoes
Copy link
Author

jdegoes commented May 21, 2017

I don't think John agrees with this mission, or is at least very coy about saying so.

I have stated from the my very first post that I want an inclusive community free from all harassment, and FCOP is very clear on the matter, having a stronger anti-harassment clause than TCOC.

I fear that the FCOP is crafted to protect harassers more than support Typelevel's mission of inclusion.

Please look at what you have done here. You are accusing me of intentionally constructing a COC to protect harassers (!!!). This is an unfair and untrue smear against my reputation and I request you retract this statement immediately.

@Gabriella439
Copy link

Are there programming communities that have historically demonstrated consistent success in being inclusive? If so, what lessons could we learn from them?

@johnynek
Copy link

John, I tried to go on a bit: do you agree with:

  1. The scala community has been too hostile, especially to women?
  2. Should we be specifically doing things to increase inclusion?

I think you have a very libertarian view that basically no personal view, that is not discussed in channel, should be grounds for exclusion. I think if I advocate stealing and eating children, or genocide, or supremacy of one ethnicity or nation above another, or any number of things in violation of basic commonly held beliefs about equality, and especially if I am actively working towards those goals, it is relevant.

We used to have Godwin's law, and it was hyperbole, but now there are many actual Nazis active on the internet. I want to see Typelevel draw some line, but I feel that no private belief is too monstrous for FCOP to render it off limits.

Lastly, you are distinct from FCOP. Additionally others, I understand, have worked on it. Me fearing that the bias is set wrong on it is not a smear of your character. This is my opinion about the document. I don't know you well enough to comment on your character. I'm happy to be wrong, and say so, if you let me know that you do want to support the mission of inclusion of women and others that are underrepresented in programming communities. I didn't read that and have feared you were calling that extreme left wing politics. I'm happy to be corrected.

@mjg59
Copy link

mjg59 commented May 21, 2017

@fommil I'm happy to abide by your request that I stay out of this - I just wanted to say that providing guidance about how you'll interpret a CoC and the process that you'll be inclined to follow in doing so is something that's orthogonal to the CoC itself. FCOP conflates the two, and in the process restricts community leaders from doing things that they may feel are in the best interests of their community. Yes, many of the examples that I've used are corner cases, but if one ever does appear then FCOP leaves you forced to violate your own CoC if you want to do the right thing. That's suboptimal.

I think a solid set of best community practices around CoC interpretation and enforcement would be of immense value to the wider community, and I see no harm at all in a community providing that clarity up front. I think providing that information alongside a CoC is much more valuable than attempting to write it directly into the CoC (eg, communities that differ in certain cultural norms may share the same goals and wish to encourage the same behavioural standards and so may wish to use the same CoC - however, their differences may mean that enforcement would look very different, and so having a separate document describing the process they'll use there is of value)

@jdegoes
Copy link
Author

jdegoes commented May 21, 2017

@johnynek

I absolutely believe there is too much hostility in the Scala community. I'm not sure it's particularly directed against women, although it affects women as well. I am very passionate about reducing hostility and increasing the accessibility of FP in Scala, including to women and all the others put off by said hostility and in-fighting.

Having recently donated $40,000 toward this goal (much of it going toward scholarships for women and POC), taught and mentored numerous women and other minorities in functional programming, and labored long and hard to make high-quality accessible content available to everyone who wants it, I feel these credentials speak more strongly than any amount of talk.

I personally know everyone who worked on FCOP and all of them are passionate about harassment-free environments (and also concerned about overreach). Whether you are smearing me individually or any of them collectively, I do not appreciate it at all.

If you feel FCOP is incompatible against some Typelevel goal that is not written down anywhere, then I think the most constructive thing to do is to not impugn the reputation of those with whom you disagree, but rather, to make that goal explicit so the question of FCOP compatibility is decided in no uncertain terms. Smearing the character of people is no way to win a dispute, and merely drags the community down to a place none of us want it to be.

@fommil
Copy link

fommil commented May 21, 2017

I very much agree with @travisbrown's comments (quoted):

Typelevel is and has always been actively open to making non-technical decisions to advance non-technical goals.

If you don't like that, you can stay away, or you can work with the community to clarify, refine, or even change those political goals. I'm not in a position to say what Typelevel's position is on this particular question

The founders have definitely not defined the political goals strongly enough so I'd like to see that refined. I can't (nor can any of the other project leads) enforce a political agenda unless I know what it is. I don't even know if I agree with it in principle at this point, because I literally have no idea what it is after this thread.

Typelevel supports pushover Libre licenses such as BSD, MIT and Apache 2.0 without requiring copyleft like MPL and GPL so I can't expect us to have anywhere near the same level of impact on the world as GNU and the Free Software Foundation. However, the commitment to Libre licenses is good enough for me to be involved with Typelevel and I would be happy to reject a proprietary project or contribution from inclusion. Because of Typelevel's political leniency in this regard, I have allowed ensime subprojects to use pushover licenses instead of requiring the GPL, as I would like.

Inclusion is a lot less clear. Trying my best to read between the lines, are we saying that the political position on "inclusion" is that Typelevel are prepared to exclude a member who is known to be a casual racist, homophobic or sexist? What else is there (that isn't illegal or community/professional sabotage)? I thought "hostile communication" was a far more common problem in scala to be honest, and it sounds like addressing it head on is something of an elephant in the room. I think we should be clear where the list ends, the problem I've seen is that by leaving it open to (mis)interpretation we exclude people who don't want to sign up to an ambiguous arrangement - especially when the penalty can be as serious as "a well known figure in the scala community will email your boss with a formal complaint and it could affect your family's livelihood" (which I want to be outlawed, btw, I am not prepared to put my time into this if people are supporting this sort of nonsense). Being clear on who we're prepared to exclude from the outset is not incompatible with FCoP, it's literally a footnote. The point is to let members of the community know what to expect, not to draft a watertight legal document.

@mjaeckel
Copy link

I would like to preface my contribution to this discussion with a few disclosures:

First of, I act as a volunteer reviewer of FCOP. I know, and respect, John De Goes as a man of great integrity, and I would never have offered my input to help make FCOP the gold standard for governing professional conduct in the technology industry if I had any reason to believe that he, or his organization, would not champion safe, friendly, and harassment-free communities for women and other marginalized groups.

Second, I am a female senior software developer who has been involved in numerous developer groups and communities for well over a decade. I am, however, not actively involved in the Scala community — yet. I purposely emphasize the word yet because I am, truthfully, on the fence about becoming more involved based on some of the interactions I’ve perused in this thread.

I respectfully acknowledge @fommil’s request for outsiders to refrain from further derailing the thread, but I would, nonetheless, like to dip a toe in the water, so to speak, in order to offer my perspectives as a woman who is considering whether or not to invest in this community. The main issue which I would like to address is that of the Scala community being perceived as hostile to women. Please allow me to unequivocally state that I’ve never experienced any hostility from the male members of any development community. While I recognize that my experience may not be typical, it is also true and valid, and, as such, my hesitation to become more involved with Scala is not based on concern over gender bias or overt sexism. Instead, I’m averse to becoming involved in any technical community or event that uses one of the poorly written, intentionally vague and discriminatory codes of conduct du jour which are being touted as exemplary.

As a woman in tech, it concerns me that a fellow member of the community could dig up any juicy morsel from my social media accounts and use that as justification to ostracize and shame me.

As a woman in tech, it concerns me that a fellow member of the community could get me fired from a job, cost me an account, ruin my business, or potentially ruin my relationships and professional reputation.

As a woman in tech, it concerns me that I won’t have any recourse and that the leadership of a group could simply ban me without even offering any valid explanation.

This is exactly what FCOP is attempting to prevent. By design, its intent is to employ appropriate penalties to address violations that occur during active participation in a specific community, without relying on preemptive exclusion. I personally consider this approach to be more tolerant and welcoming, whereas the way in which some commenters have interpreted the TL CoC makes me feel unsafe, and fearful that they, too, would discriminate against me.

To conclude: As a woman in technology, it’s extremely important to me to ensure that other women feel safe and respected in a group. In fact, I’d like for anybody who chooses to volunteer time and effort to contribute to an open source project to feel safe and respected and valued. We should all be able to do what we love — write code, gripe about challenging problems, troubleshoot bugs — without worrying that something inflammatory or inane or inadvertently offensive that we may have uttered many years ago could be used as leverage against us in the here and now, to ruin our reputations and destroy our careers.

@stefanruijsenaars
Copy link

As someone who's very active in another large open source community that is now going through a similar discussion over Codes of Conduct, I have been watching this issue with great interest, and just wanted to follow up on @mjaeckel's comment with my own experience (while remaining respectful of @fommil's request for outsiders not to derail the thread):

My open source community is now actively politicizing in a way that has already hurt some people's careers (people who were not guilty of any harassment). This has led to high-level contributors with no interest in political drama and smear campaigns to leave the project, and others (including myself) to reevaluate their involvement.

I am now looking for other open source projects to contribute to (including Scala-based ones), but being politically more of a centrist, I would actively stay away from communities that exclude FCOP projects based on the kind of hostile, exclusionary rhetoric expressed by a small group of people in this thread. I agree with @jdegoes that the political goals expressed by some of his louder detractors here (@travisbrown, @mjg59, @johnynek, @stew) point to an an extremist political agenda that considers moderates like me, or right-leaning folks like Marlene, "political enemies".

However, I do appreciate @travisbrown's honesty in #74 (comment) (having read the full Twitter thread, in context) where he makes very clear that, as far is he's concerned, my centrism is not welcome in Typelevel.

@alexandru
Copy link
Member

alexandru commented May 21, 2017

@fommil

This has kind of digressed significantly. @mjg59 are you a member of the typelevel / scala community or are you just here to argue? John has contributed significant advances to scala fp and typelevel so his opinion matters as much as any other member of this community. But if you're not interested in scala FP I request that you take this discussion elsewhere.

As a Typelevel member that has had some contributions to Scala and Typelevel, I personally like seeing @mjg59's perspective here. I also appreciate seeing the perspective of @mjaeckel and @stefanruijsenaars, which are in support of FCOP.

As long as somebody has reasonable arguments, they should be welcome to speak their mind.

@stew
Copy link

stew commented May 21, 2017

So let me get this straight: instead of arguing that FCOP is incompatible with Typelevel COC, you instead wish to argue that because I am involved with both FCOP and LambdaConf, and that you do not wish to be associated with LambdaConf, therefore you cannot be associated with FCOP?

Yes, that is correct

Does this attitude of yours extend to the contributions I have already made, and the future contributions I intend to make, to Typelevel projects? How about the contributions that my company owns and presently organizes under Typelevel (Matryoshka)? How about the contributions from people who are friends with me, or people who attend LambdaConf events?

no

How many degrees of separation are required to satisfy your quest for "distance" with LambdaConf?

more

This is an example of the kind of political drama that scares people away from investing their time and energy into politicized open source projects. Speaking both personally and professionally, I don't care what your feelings are on the LambdaConf controversy.

Those entire issue is political drama that could have been avoided. I'm not sure what you think that you have to gain by filing this issue. I'm pretty well convinced that typelevel has little to gain by the proposal.

@johnynek
Copy link

I reject that centrists, as I understand the term from a US background, are unwelcome in typelevel. I consider myself a centrist. I also think we can find broad consensus that digging up someone's past to expel them from a community is generally not okay.

Unfortunately, again in the US maybe only, things I have thought were very fringe views have re-entered public discussion. Things like vilification of Jews (use of the ((())) annonation on Twitter), nazi-ism, constant streams of rape threats to women on Twitter, etc...

I am not willing to cede the term "centrist" to someone that thinks those are legitimate views and we should all get along and overlook these differences.

Now, years ago, this would have been hyperbole, but this literally happens now and I don't want Typelevel to be okay with it. I feel like some are trying to say this is an extreme leftist view, but unless I am living in the twilight zone now (and it somewhat appears I am), these are pretty broadly held values. Excluding folks who are pro-nazi, pro-rape-threat or pro-slavery is perfectly fine (indeed in many countries such speech is not even protected).

I don't want to see anyone kicked out for views that are still consistent with a basic agreement on, for instance th UN declaration of human rights. But the internet is a big place and I don't think centrism has to be a big enough tent to fit gamergaters who dox women critical of sexism in video games, nor do we need to accept people actively working to build ethnically pure nationalist movements.

I'm not saying FCOP is doing that, and maybe it can even be improved to address such exclusions.

A big problem with this debate and many such debates is talking past one another. FCOP proponents are very focused on the individual right to be treated fairly. This of course important. I'm not hearing, and am concerned there is opposition to, the right of a community to exclude folks who are hostile to pluralism and equality (and sadly, such folks exist). Nor is it addressing the very real issue of trolls that have long reputations of harming online communities.

I agree typelevel's CoC is not great in this regard, and I appreciate John helping to point that out. But I think addressing these deficiencies is the top priority, not providing a legalistic document that I fear will shield bad actors (such as gamergaters, actual nazis, and men actively hostile to women in tech) more than it will help create communities where folks have an expectation that such behavior, which should be considered beyond the pale, will be rejected.

There are many good people who have the belief that no opinion or speech should be limited. I tend to agree with such folks when it comes to government restrictions and I am not seeking to ban them from the internet. But I think typelevel is trying to create a community where basic value of each human, who respects the others, is not in question and we don't welcome folks working against basic human rights.

@stew
Copy link

stew commented May 21, 2017

I also would like to thank @mjg59 for contributing to this thread. I agree with many of the points he makes, and think that he did a great job of exposing thing I would label as technical shortcomings with FCOP that further make me want to continue saying "no"

@jdegoes
Copy link
Author

jdegoes commented May 21, 2017

@stew

Those entire issue is political drama that could have been avoided. I'm not sure what you think that you have to gain by filing this issue. I'm pretty well convinced that typelevel has little to gain by the proposal.

Why do you think I am concerned? My company maintains one Typelevel project already, and will soon be at a crossroads deciding where we will invest our resources. I will not sponsor, endorse, or approve an organization with extremist political aims that will hurt the participation of contributors and tolerate the malicious destruction of the careers of professional software engineers.

I don't believe Typelevel is such an organization, but as we have seen on this thread, we all have very different views about this. We all need clarity.

It's time for Typelevel to decide what it wants to be when it grows up.

@jdegoes
Copy link
Author

jdegoes commented May 21, 2017

@johnynek

Things like vilification of Jews (use of the ((())) annonation on Twitter), nazi-ism, constant streams of rape threats to women on Twitter, etc...

As far as I am aware, there are exactly zero Scala programmers in the world who vilify Jews, promote national socialism, or engage in rape threats to women (all of which are illegal somewhere, and most of which are illegal everywhere, and are already extensively covered by FCOP).

Rather, all the real world cases are programmers being excluded for being conservative (including being banned from multiple tech communities), programmers being excluded for being Gorean, programmers being persecuted for questioning whether 4 year olds should transition, and similar.

These are the actual issues facing programmers, not the imaginary ones that you list.

I'm not saying FCOP is doing that, and maybe it can even be improved to address such exclusions.

Any community could layer on restrictions on participation in FCOP; they just have to be transparent about it, which is all that is being asked for by concerned parties. Want to ban nazis, slavery apologists, and so forth? Fine, then just be explicit about it, rather than hiding behind a vague COC.

These restrictions need to be clear on what they mean. Goreans have been accused of being "misogynists" and "slavery apologists", though everything in Gor culture is consensual. Neo-reactionaries have been accused of being "Nazis". People who have expressed concerns about the unbounded growth of gender pronouns have been accused of denying basic human rights to non-binary gendered individuals. People who believe there might be small differences in the distribution of IQ across sex or "race" have been labeled misogynists or racists.

Don't expect everyone to agree on these issues, because they won't.

@johnynek
Copy link

thanks for clarifying John.

If the concerns of Goreans and Neo-reactionaries are the real issues and antisemetism and sexism are non-issues according to the advocates of FCOP, I'm more confident that Typelevel should not be supporting the FCOP.

@jdegoes
Copy link
Author

jdegoes commented May 22, 2017

@johnynek

You're completely misrepresenting me. I never said antisemitism and sexism aren't issues, only that the list of "problems" you are claiming to solve (Nazis and rape threats) are not problems in the Scala community.

Nazis and rapists aren't invading our community, and extreme issues like this are already dealt with by FCOP, so it's disingenuous to say these are the reasons you object to FCOP. But conservatives and people who choose some consensual lifestyle (like Gor) have and will again be excluded, not for any harassing behavior, but purely on ideological grounds.

In your zeal to solve imaginary problems that are already mostly or entirely solved by FCOP, don't forget the real issues that contributors are facing today.

@mjaeckel
Copy link

@johnynek

As both a reviewer and female proponent of FCOP, I can assure you that it most certainly does not regard anti-Semitism and sexism as non-issues. If an aggrieved person file a complaint against an active member of an FCOP community for anti-Semitic behavior or statements, the complaint will be reviewed objectively and an arbiter may be appointed to speak to all parties and witnesses. If the arbiter accepts the complaint as an official violation, the violator will, at a minimum, be asked to apologize or to undergo counseling or mediation. If the offense is more egregious, the person may get banned from the community. The same holds true for sexist, racist, and homophobic conduct and/or speech.

You appear to be deliberately misconstruing John’s statements based on your own preconceived notions. In my humble opinion, this is not conducive to the conversation.

@mjg59
Copy link

mjg59 commented May 22, 2017

@mjaeckel I think a more precise way of putting it is that FCOP does not regard anti-Semitism and sexism as issues as long as they take place outside the covered community and are not regarded as criminal in the community's jurisdiction. Members who are subject to such anti-Semitic or sexist behaviour from another community member during inactive participation will have no recourse under FCOP.

@jdegoes
Copy link
Author

jdegoes commented May 22, 2017

@mjg59 Like Contributor Covenant, the Drupal Code of Conduct, and the Typelevel Code of Conduct, FCOP applies by default to the space of the community. Communities are free to extend the scope to other places in space or time, as noted in the FAQ, but broadening such a strict COC as FCOP to "all spaces and all times" would mean nearly everyone would be guilty of some violation or another, so that is not the default.

mjg59 added a commit to mjg59/fcop that referenced this issue May 22, 2017
…nate attributes

typelevel/general#74 (comment) asserts
that FCOP communities may add additional restrictions on membership as long
as they're transparent about their requirements. Incorporate language that
makes that explicit.
mjg59 added a commit to mjg59/fcop that referenced this issue May 22, 2017
typelevel/general#74 (comment) makes
it clear that communities are free to set the boundaries under which members
are expected to observe the requirements of active participation. Make that
explicit.
mjg59 added a commit to mjg59/fcop that referenced this issue May 22, 2017
…al beliefs and behaviours

typelevel/general#74 (comment) asserts
that FCOP communities may add additional restrictions on membership as long
as they're transparent about their requirements. Incorporate language that
makes that explicit.
@adrienne
Copy link

adrienne commented May 22, 2017

As a data point from a community-adjacent outsider (i count as friends and colleagues a number of FP folks, including Typelevel participants & at least one maintainer): Mr. De Goes leaves out of his equation all of the women who have explicitly criticized the FCOP. He calls us liars and harasses us on Twitter. So while he would have you believe he's not trying to speak for All Women, the only women's viewpoints he ever mentions are the ones who agree with him. I would certainly not take Ms. Jaeckel's word as gospel, about what makes women in tech feel safe or unsafe.

@tpolecat
Copy link
Member

This discussion is not converging. I think it's time to suspend for lack of consensus.

@milessabin
Copy link
Member

Thanks to everyone for their input on this issue. At this point I think the main arguments on all sides have been made and there has been sufficient time for clarifications to be requested and provided.

As is evident from the above, there is clearly not a consensus in favour of accepting this proposal, so it will be discussed by the Typelevel core group (#16) and we will respond here in due course. This thread will be locked while that happens.

@typelevel typelevel locked and limited conversation to collaborators May 22, 2017
@stew stew closed this as completed Feb 7, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests