Thoughts On The Tension Between Being A Passionate Individual Vs Acting Within The Context Of The Larger Haskell Community

It seems like there is a natural tension between:

  • making something according to your own personal beliefs and passion

verses:

  • working within the framework of an existing community and accepting compromises, slowing efforts for the sake of communication and co-ordination, and not offending people, living in the tension of different perspectives…

I’m trying to wrap my head around this. Does anyone have general thoughts or stories or examples to share about this?

1 Like

Can you be more precise? What problems do you see in the haskell ecosystem?

I was being vague…

I don’t want to point out problems. This isn’t about specific problems for me.

I’m curious about what people think a healthy Haskell community looks like. I assume there would be all different perspectives on this, and I think it might be interesting to hear them.

As soon as you have two or more people trying to work together you will likely face differences of opinion, and that can be challenging…

How do we work out differences? When do you choose to do something your own way? When do you choose to compromise (or when have you made compromises) and why? Have you settled for something other than what you would like… how do you decide when to do that?

Certainly people will have had all different kinds of experiences related to these challenges, and I think it might be valuable to hear some of them.

I’d love to hear stories where there was a disagreement that had a successful outcome. (no need to name names)

Step 1 is to not be vague. Tension exists first where people prevaricate, before ever graduating to disagreements. Leaving things unspoken encourages the mind to fill in the gaps.

I’ve done a lot of conflict resolution work (mainly in the context of political organizing and de-escalation), and a critical part of that has been helping the conflicting parties recognize and reckon with the root of their conflict. Many such conflicts reduce to either a misunderstanding or a perception of a power imbalance, both of which usually end up being unspoken and difficult to identify once people are heavily invested in “the argument” instead of in resolution.

The most important element really is encouraging the participants to be entirely honest about the source of their feelings of strife, and to give and receive feedback clearly and with actionable steps to resolution. Haskellers are broadly pretty good at this, though there have been notable community-level arguments that got pretty toxic (cabal/stack and codes of conduct being the main ones that stick out in my memory). I think the Haskell community is largely good at avoiding this because the community is not “all of a kind” in terms of why they write or think about Haskell, so there is a necessity to be a “good citizen” in your dealings rather than leveraging a community or corporate position to get one’s way. (This is not to say these dynamics are not at play, at all, just that they are less pervasive than in other communities I’m a part of; Haskell maintains a pleasantly anarchic bent, at least to my mind)

Being clear can be uncomfortable, upsetting, etc., but is generally less stressful and harmful long-term than allowing vague problems to fester and morph into unmotivated hostility.

There are, of course, situations in which one or more participants just have views incompatible with such resolution, though these are usually rooted in matters which are not specific to Haskell and are related to the social constructs which we deal with as people in flux. Deconstructing and resolving these tensions is harder, but possible.

2 Likes
  1. Respectful towards other people’s efforts
  2. Direct about mistakes and deficiencies
  3. Encouraging towards newcomers
  4. Collaborative where possible
1 Like

IMHO, community health includes these as well:

  1. Low attrition rate - both for newcomers and pillars in the community - very few people lose interest in haskell and participating in its community.
  2. Conflicts are resolved in ways that produce improved results and experience for all participants.
  3. Maintenance and continued development on core community infrastructure are resilient against losing core contributors - there is a strong flow of incoming new energy and effective process and group culture which maintains a high quality product while traveling down bumpy roads.

Thanks for sharing your thoughts and posting on the topic.

2 Likes