Skip to content

Instantly share code, notes, and snippets.

@shajra
Last active August 29, 2015 14:11
Show Gist options
  • Save shajra/660cb519bb6cb3fd1296 to your computer and use it in GitHub Desktop.
Save shajra/660cb519bb6cb3fd1296 to your computer and use it in GitHub Desktop.
talking honestly about a Typelevel Scalaz fork

I've been thinking about this for some time, and I think differences between Lars and Tony may be irreconcilable on their respective stated principles.

Also, I'm coming to the conclusion that a Typelevel fork of Scalaz is not a bad idea if Lars's and Tony's values are as uncompromising as they both suggest.

The obvious, but I'm stating it anyway

I want to outline precisely why I think these differences are irreconcilable:

  • Lars has suggested he requires a CoC that suppresses "harassment" with a clear enforcement policy.

  • Tony will not accept a CoC of this style because he claims it undermines the very tools needed to suppress true harrassment.

A lot of people may have accepted a Geek Feminism style CoC because it has this one critical exemption:

  • Communicating in a ‘tone’ you don’t find congenial

But if we're lumping agressive conversation and word selection under the banner of "harassment" using clauses from the CoC like

  • Deliberate intimidation

then the CoC is problematic for a lot of people -- even possibly hypocritical.

Who has authority?

I think this all fundamentally leads to a question of authority.

Ed Kmett (who I believe was once an owner of the GitHub project, but was he removed?) has long advocated that Tony has a special position in the project as the project's founder.

Tony has repeatedly rescinded authority in favor of a highly decentralized authority. Implicitly, this has meant that we have reasonable discussion that leads to largely unilateral agreement before taking action. For the most part, this has taken place in technical discussions, but not so much with respect to the CoC. Because of the scope of disagreement over the CoC, I do not see unilateral agreement feasible at all, which means that under the implicit Scalaz policy that Tony set in place, a CoC can not be installed. But this is only meaningful if we respect precedence. Tony argues that this precedence is "the definition of Scalaz."

Lars is clearly lobbying for a change to precedence on a basis of moral authority -- an authority he's arguing comes from a larger community than just himself (for instance, including but not limited to Geek Feminism). The fact that Lars is a prolific committer and has done a lot for the project allows Lars's perspective to have a stronger voice.

Paul has accepted a bit more authority recently, but perhaps apprehensively. The stated "moderators" of the CoC have included to date Paul, Lars, and Jason (whom we've really not heard from, not to mention any indirect coupling of Scalaz policy with Jason's employer of Typesafe). Is this the right set of people to have authority over Scalaz? I believe that some people that disagree with Lars may accept such a set, under the idea that voices will cancel each other out, since Paul to date has had a more balanced perspective. However, if we have someone right-of-center (Lars), I'd feel this argument was more salient if we had someone more left-of-center than Paul. But even then, it would be tenuous, because what would we do if Paul rescinds his authority (as I believe he's just done)?

Is a fork really that horrible?

The question of who has authority is not one we're ever going to hash out properly. Even if we agreed to something democratic, how would we ever take a fair vote? So many people using Scalaz could care less about this mailing list or this thread.

I argue that what Lars has set in motion is the more violent way to move forward. Tony has been kicked out, and the brand of "scalaz" has been subsumed under the same authority as "typelevel."

What would be more peaceful, I think is for Typelevel to fork Scalaz.

I know that there's a lot of people that are incredibly fearful of what this means for users. Personally, I'm not as worried for the following reasons:

  • we have some pretty usable binaries in Maven Central now, so it's not like the project is as it stands is in complete disrepair.

  • we're having a hard time moving forward now, and I fear the project will stagnate if we don't address this issue -- even if there's no fork.

  • I believe Tony and Lars are much more compatible on technical discussions. If both projects are active, good ideas will cross-pollinate, because that's simply what good ideas do. It will be a slower process, but I believe in doing things the right way -- even if it takes longer. If one project languishes, people will see that and switch.

  • I do not believe either Tony, nor Lars would let their differences lead to technical abuse of users -- especially with regard to an understanding of how users are using the "scalaz" package namespace and their expectations of compatibility within a given version range. If anyone wants do do something dramatic, it should be under an 8.x version number. And if Typelevel does fork the project, I think it would be considerate if they also considered changing the root package name to "typelevel" too. We just don't have facile and widespread solutions for classpath isolation yet.

I want to emphasize, that I don't think a forked project is ideal. But if we're really as gridlocked as we appear to be, I just don't see another way. I'm happy for someone to prove a hole in my assumptions, but at this point, I think that would require either Tony or Lars responding to this post with an amendment to my characterization of their position.

-Sukant

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