This commit is contained in:
Michael Snoyman 2017-06-01 15:29:36 +03:00
parent 8656e5b40c
commit c7e6ff89fe
No known key found for this signature in database
GPG key ID: A048E8C057E86876
5 changed files with 1 additions and 420 deletions

View file

@ -70,9 +70,6 @@
- file: posts/new-conduit-tutorial.md - file: posts/new-conduit-tutorial.md
title: New Conduit Tutorial title: New Conduit Tutorial
day: 2016-10-13 day: 2016-10-13
- file: posts/respect.md
title: Respect
day: 2016-09-29
- file: posts/proposed-conduit-reskin.md - file: posts/proposed-conduit-reskin.md
title: Proposed conduit reskin title: Proposed conduit reskin
day: 2016-09-23 day: 2016-09-23

View file

@ -1,131 +0,0 @@
Yesterday I
[put out a blog post](http://www.snoyman.com/blog/2016/08/haskell-org-evil-cabal)
describing a very problematic situation with the haskell.org
committee. As often happens with this kind of thing, a
[very lively discussion occurred on Reddit](https://www.reddit.com/r/haskell/comments/4zzmoa/haskellorg_and_the_evil_cabal/). There
are many repeating themes over there, so instead of trying to address
the points in that discussion, I'm going to give some responses in
this post.
* Firstly: thank you to those of you who subscribed to the
haskell-community list and made your voices heard. That was the
best response to the blog post I could have hoped for, and it
happened. At this point, the
[Twitter poll](https://twitter.com/snoyberg/status/769732460879962112)
and mailing list discussion both point to a desire to have Stack
as the primary option on the downloads page (the latter is a tied
vote of 6 to 6, indicating the change proposed should not
happen). As far as I'm concerned, the committee has two options:
* Listen to the voices of the community and make Stack the primary
option on haskell.org.
* Ignore the community voices and put the Haskell Platform at the
top of the page, thus confirming my claims of an oligarchy.
* Clarification: I do not believe anyone involved in this is an evil
person. I thought my wording was unambiguous, but apparently
not. The collusion among the projects is what gets the term "Evil
Cabal." That said, I _do_ believe that there were bad actions
taken by individuals involved, and I've called some of those
out. There's a much longer backstory here of the nepotism I refer
to, starting at least at ICFP 2014 and GPS Haskell, but that's a
story I'm not getting into right now.
* A few people who
[_should_ know better](https://twitter.com/snoyberg/status/770085132493545476)
claimed that there's no reason for my complaint given that the
Haskell Platform now ships with Stack. This is incorrect for
multiple reasons. Firstly, one of my complaints in the blog post
is that _we've never discussed technical merits_, so such a claim
should be seen as absurd immediately. There's a
[great Reddit comment](https://www.reddit.com/r/haskell/comments/4zzmoa/haskellorg_and_the_evil_cabal/d70pffl)
explaining that this inclusion is just misdirection. In any event,
here are just
[140 characters worth of reasons the Haskell Platform is inferior to Stack for a new user](https://twitter.com/snoyberg/status/770092223748837378)
* There is no clear "getting started" guide for new users. Giving
someone a download is only half the battle. If they don't know
where to go next, the download it useless. (Compare with
[haskell-lang's getting started](https://haskell-lang.org/get-started).)
* Choice confusion: saying "HP vs Stack" is actually
misleading. The real question is "HP+cabal-install vs HP+Stack
vs Stack". A new user is not in a strong enough position to make
this decision.
* Stack will select the appropriate version of GHC to be used
based on the project the user is working on. Bundling GHC with
Stack insists on a specific GHC version. (I'm not arguing that
there's no benefit to including GHC in the installer, but there
are definitely downsides too.)
* The HP release process has historically been very slow, whereas
the Stack release process is a well oiled machine. I have major
concerns about users being stuck with out-of-date Stack
executables by using the HP and running into already fixed
bugs. This isn't hypothetical: GHC for Mac OS X shipped an old
Stack version for a while resulting in many bug reports. (This
is an example of haskell.org download page decisions causing
extra work for the Stack team.)
* Bonus point (not on Twitter): Stack on its own is very well
tested. We have little experience in the wild of HP+Stack. Just
assuming it will work is scary, and goes against the history of
buggy Haskell Platform releases.
* A lot of the discussion seemed to assume I was saying to get rid
of cabal-install entirely. In fact, my blog post said the exact
opposite: let it continue if people want to work on it. I'm
talking exclusively about the story we tell to new users. Again,
technical discussions should have occurred long ago about what's
the best course of action. I'm claiming that Stack is by far the
best option for the vast majority of new users. The committee has
never to my knowledge argued publicly against that.
* There was a lot of "tone policing," saying things like I need to
have more patience, work with not against the committee, follow
the principle of charity, etc. If this is the first time I raised
these issues, you'd be right. Unfortunately, there is a long
history here of many years of wasted time and effort. The reason I
always link back to
[pull request #130](https://github.com/haskell-infra/hl/pull/130)
is because it represents the tipping point from "work with the
committee without making a fuss" to "I need to make all of these
decisions as public as possible so bad decisions don't slip in."
Let me ask you all: if I had just responded to the mailing list
thread asking for a different course of action to be taken, would
most of you know that this drama was happening? This needed to be
public, so that no more massive changes could
[slip under everyone's radar](https://github.com/haskell-infra/hl/pull/122).
Also: it's ironic to see people accusing me of violating the
principle of charity by reading my words in the most negative way
they possibly can. That's true irony,
[not just misrepresenting someone's position](https://www.reddit.com/r/haskell/comments/4zzmoa/haskellorg_and_the_evil_cabal/d70bysm).
* For a long time, people have attacked FP Complete every chance
they could, presumably because attacking a company is easier than
attacking an individual. There is no "FP Complete" conspiracy
going on here. I decided to write this blog post on my own, not
part of any FP Complete strategy. I discussed it with others, most
of whom do _not_ work for FP Complete. In fact, most of the
discussion happened
[publicly, on Twitter](https://twitter.com/snoyberg/status/769732460879962112),
for you all to see.
If you want to attack someone, attack me. Be intellectually
honest. And while you're at it: try to actually attack the
arguments made instead of resorting to silly ad hominems about
power grabs. Such tin-foil hattery is unbecoming.
* There's a legitimate discussion about how we get feedback from
multiple forms of communication (mailing lists, Twitter,
Reddit). While that's a great question to ask and a conversation
to have, it really misses the point here completely: we're looking
for a very simple vote on three options. We can trivially put up a
Google Form or similar and link to it from all media. We did this
just fine with the FTP debate. It feels _almost_ disingenuous to
claim that we don't know how to deal with this problem when we've
already dealt with it in the past.

View file

@ -1,234 +0,0 @@
There's no point being coy or saying anything but what I actually
believe, and saying it bluntly. So here it is:
> The haskell.org committee has consistently engaged in tactics which
> silence the voices of all non-members, and stacks the committee to
> prevent dissenting opinions from joining.
I've said various parts of this previously. You may have heard me say
things like the haskell.org oligarchy, refer to the "evil cabal of
Haskell" (referring to the nepotism which exists amongst Hackage,
cabal-install, haskell.org, and the Haskell Platform), or engage in
lengthy debates with committee members about their actions.
_This is a pretty long post, if you want to see my request, please
[jump to the end](#my-request)._
## The backstory
To summarize a quick backstory: many of us in the community have been
dissatisfied with the four members of the "evil cabal" for years, and
have made efforts to improve them, only to be met with opposition. One
by one, some of us have been replacing these components with
alternatives. Hackage's downtime led to an
[FP Complete mirror](https://www.fpcomplete.com/blog/2015/03/hackage-mirror)
and more reliable doc hosting on
[stackage.org](https://www.stackage.org). cabal-install's weaknesses
led to the creation of
[the Stack build tool](https://haskellstack.org). Haskell Platform's
poor curation process and broken installer led to Stackage Nightly and
LTS Haskell, as well some of the Stack featureset. And most recently,
the haskell.org committee's poor decisions (as I'll demonstrate
shortly) for website content led to resurrecting
[haskell-lang.org](https://haskell-lang.org/), a website devoted to
actually making Haskell a more approachable language.
As you can see, at this point all four members of the evil cabal have
been replaced with better options, and community discussions and user
statistics indicate that most users are switching over. (For an
example of statistics, have a look at the
[package download count on Hackage](http://hackage.haskell.org/packages/top),
indicating that the vast majority of users are no longer downloading
packages via cabal-install+Hackage.) I frankly have no problem at all
with the continued existence and usage of these four projects; if
people want to spend their time on them and use what I consider to be
inferior tools, let them. The only remaining pain point is that new,
unsuspecting users will arrive at
[haskell.org download page](https://www.haskell.org/downloads) instead
of the much more intuitive
[haskell-lang.org get started page](https://haskell-lang.org/get-started).
__EDIT__ Ignore that bit about the download statistics, it's apparently due to
the CDN usage on Hackage. Instead, one need only look at how often a question
about Haskell Platform is answered with "don't do that, use Stack instead." For
a great example, see the discussion of [the Rust
Platform](https://www.reddit.com/r/haskell/comments/4uxgbl/the_rust_platform/).
## The newest attempt
Alright, with that out of the way, why am I writing this blog post
now? It's due to
[this post on the Haskell-community mailing list](https://mail.haskell.org/pipermail/haskell-community/2016-August/000118.html),
proposing promoting the Haskell Platform above all other options (yet
again). Never heard of that mailing list? That's not particularly
surprising. That mailing list was created in response to a series of
complaints by me, claiming that the haskell.org committee acted in a
secretive way and ignored all community input. The response to this
was, instead of listening to the many community discussions already
occuring on Twitter and Reddit, to create a brand new mailing list,
have an echo chamber of people sympathetic to Evil Cabal thought, and
insist that "real" community discussions go on there.
We're seeing this process work exactly as the committee wants. Let me
demonstrate clearly how. At the time of writing this blog post, three
people have voted in favor of promoting the HP on haskell-community,
including two haskell.org committee members (Adam Foltzer and John
Wiegley) and the person who originally proposed it, Jason Dagit. There
were two objections: Chris Allen and myself. So with a sample size of
5, we see that 60% of the community wants the HP.
## The lie
A few hours after this mailing list post, I put out a
[poll on Twitter](https://twitter.com/snoyberg/status/769732460879962112). At
time of writing (4 hours or so into the poll), we have 122 votes, with
85% in favor of Stack, and 15% in favor of some flavor of the Haskell
Platform (or, as we'll now be calling, the
[Perfect Haskell Platform](https://twitter.com/snoyberg/status/769752895482896384)). Before
anyone gets too excited: yes, a poll of my Twitter followers is
obviously a biased sample, but no more biased than the
haskell-community list. My real point is this:
__The haskell.org committee is posing questions of significant
importance in echo chambers where they'll get the response they want
from a small group of people, instead of engaging the community
correctly on platforms that make participation easy.__
This isn't the first time this has happened. When we last discussed
haskell.org download page content, a similar phenonmonon
occurred. Magically, the haskell-community discussion had a bias in
favor of the Haskell Platform. In response, I created a Google Form,
and Stack was the clear victor:
<a href="https://docs.google.com/forms/d/1w2wKSxn5YN4LtSXYHvFT2IFw_BDaT_2cjUkP9pDeqLQ/viewanalytics"><img src="https://i.sli.mg/cGLAWL.png" width="100%"></a>
Yet despite this clear feedback, the committee went ahead with putting
minimal installers at the top, not Stack (they weren't quite brazen
enough to put the Perfect Haskell Platform at the top or even above
Stack, for which I _am_ grateful).
## Proper behavior
As I see it, the haskell.org committee has two correct options to
move forward with making the download page decision:
* Accept the votes from my Twitter poll in addition to the haskell-community votes
* Decide that my poll is invalid for some reason, and do a proper poll
of the community, with proper advertisement on Reddit, Twitter, the
more popular mailing lists, etc
If past behavior is any indication though, I predict a third outcome:
stating that the only valid form of feedback is on the
haskell-community mailing list, ignore the clear community groundswell
_against_ their decisions, and continue to make unilateral, oligarchic
decisions. Namely: promote the Haskell Platform, thereby misleading
all unfortunate new Haskellers who end up at haskell.org instead the
much better haskell-lang.org.
## Further evidence
Everyone's always asking me for more of the details on what's gone on
here, especially given how some people vilify my actions. I've never
felt comfortable putting that kind of content on blogs shared with
other authors when some of those others don't want me to call out the
negative actions. However, thankfully I now have my own blog to state
this from. This won't include every punch thrown in this long and
sordid saga, but hopefully will give a much better idea of what's
going on here.
* Not only are conversations held in private by the committee, but:
* Their private nature is used to shut down commentary on committee actions
* There is open deception about what was actually discussed in private
Evidence: see
[this troubling Reddit thread](https://www.reddit.com/r/haskell/comments/4ruqbl/new_haskell_community_nexus_site_launched/d57xtbu). I
made the (very true) claim that Gershom made a unilateral decision
about the downloads page. You can see the evidence of this
[where he made that decision](https://github.com/haskell-infra/hl/pull/122). Adam
Foltzer tried to call my claim false, and ultimately
[Gershom himself confirmed I was correct](https://www.reddit.com/r/haskell/comments/4ruqbl/new_haskell_community_nexus_site_launched/d582jzk). Adam
then claimed offense at this whole discussion and backed out.
* When I
[proposed making Stack the preferred download option](https://github.com/haskell-infra/hl/pull/130)
(at a time when Stack did not appear _at all_ on haskell.org),
Gershom summarilly closed the pull request. I have referenced this
pull request many times. I don't believe any well intentioned
person can read that long discussion and believe that the
haskell.org committee has a healthy process for maintaining a
community website.
* At no point in any of these discussions has the committee opened
up discussion to either the technical advantages of the HP vs
Stack, or the relative popularity. Instead, we get discussions of
committee process, internal votes, an inability to make changes at
certain periods of time based on previously made and undocumented
decisions.
* We often hear statements from committee members about the strong
support for their actions, or lack of controversy on an
issue. These claims are many times patently false to any objective
third party. For example,
[Gershom claimed](https://www.reddit.com/r/haskell/comments/4ruqbl/new_haskell_community_nexus_site_launched/d582jzk)
that the pull request #122 that he unilaterally decided to merge
was "thought to be entirely mundane and uncontroversial." Everyone
is welcome to
[read the Reddit discussion](https://www.reddit.com/r/haskell/comments/3b1yuk/haskellinfrastructure_fwd_new_haskell_platform/)
and decide if Gershom is giving a fair summary or not.
* Chris Done - a coworker of mine - spent his own time on creating
the first haskell-lang.org, due to his unhappiness with
[the homepage at that time](https://wiki.haskell.org/Haskell). His
new site was met with much enthusiasm, and he was pressured by
many to get it onto haskell.org itself. What ensued was almost a
year of pain working out the details, having content changed to
match the evil cabal narrative, and eventually a rollout. At the
end of this, Chris was - without any given reason - not admitted
to the haskell.org committee, denying him access to share an
opinion on what should be on the site he designed and created.
## My request
Thank you for either getting through all of that, or skipping to this
final section. Here's my request: so many people have told me that
they feel disenfranchised by these false-flag "community" processes,
and just give up on speaking up. This allows the negative behavior
we've seen dominate the evil cabal in Haskell for so long. If you've
already moved on to Stack and Stackage yourself, you're mostly free of
this cabal. I'm asking you to think of the next generation of Haskell
users, and speak up.
Most powerful course of action: subscribe to the
[haskell-community mailing list](https://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-community)
and speak out about how the committee has handled the downloads
page. Don't just echo my message here: say what you believe. If you
think they've done a good job, then say so. If you think (like I do)
that they've done a bad job, and are misleading users with their
decisions, say that.
Next best: comment about this on Reddit or Twitter. Get your voice out
there and be heard, even if it isn't in the haskell.org committee echo
chamber.
In addition to that: expect me to put out more polls on Twitter and
possibly elsewhere. Please vote! We've let a select few make damaging
decisions for too long, make your voice heard. I'm confident that we
will have a more user-friendly Haskell experience if we actually start
listening to users.
And finally: as long as it is being mismanaged, __steer people away
from haskell.org__. This is why we created haskell-lang.org. Link to
it, tell your friends about it, warn people away from haskell.org, and
maybe even
[help improve its content](http://github.com/haskell-lang/haskell-lang#contributing-content).
* * *
Archive link of the Reddit and Github threads quoted above:
* http://archive.is/7zFkb
* http://archive.is/NTzUD
* http://archive.is/roexm
* http://archive.is/uwdzr
* http://archive.is/uduu5

View file

@ -1,31 +0,0 @@
As I'm sure many people in the Haskell community have seen, Simon PJ
put out
[an email entitled "Respect"](https://mail.haskell.org/pipermail/haskell/2016-September/024995.html). If
you haven't read it yet, I think you should. As is usually the case,
Simon shows by example what we should strive for.
I put out a
[Tweet](https://twitter.com/snoyberg/status/780255158898921473)
referring to
[a Gist](https://gist.github.com/snoyberg/1f70ed1754cac2e5f1f1bd268c2b279c)
I wrote two weeks back. At the time, I did not put the content on this
blog, as I didn't want to make a bad situation worse. However,
especially given Simon's comments, now seems like a good time to put
out this message in the same medium (this blog) that the original
inflammatory messaging came out in:
> A few weeks back I wrote a blog post (and a second clarifying post)
> on what I called the Evil Cabal. There is no sense in repeating the
> content here, or even referencing it. The title is the main point.
>
> It was a mistake, and an offensive one, to use insulting terms like
> evil in that blog post. What I said is true: I have taken to using
> that term when discussing privately some of the situation that has
> occured. I now see that that was the original problem: while the
> term started as a joke and a pun, it set up a bad precedent for
> conversation. I should not have used it privately, and definitely
> should not have publicized it.
>
> To those active members in projects I maligned, I apologize. I
> should not have brought the discourse to that level.

View file

@ -9,30 +9,10 @@ proposing a way to make things better, is a waste of 280
characters. So I'd like to expand on where I think we, the Haskell characters. So I'd like to expand on where I think we, the Haskell
community, can do better. community, can do better.
To try and prevent the flamewars which I'm sure are about to start,
let me give some guidelines on __who shouldn't read this blog post__:
* If you think that programming languages should succeed on purely
technical merits, and silly "marketing activities" like writing
newbie-oriented tutorials and making engaging screencasts is unfair
competition, you shouldn't read this blog post.
* If you think that broken dependency solving, Hackage downtime,
confusing cabal-install incantations, and problematic global package
databases in the Haskell Platform have had no ill effect on Haskell
adoption, you shouldn't read this blog post.
* If you think that new users who give up after 5 minutes of confusion
on a website weren't serious enough in the first place and we
shouldn't be sad that we lost them, you shouldn't read this blog
post.
And most likely, you shouldn't post this to /r/haskell. That's not
going to end well.
## Attacking Haskell's Flaws ## Attacking Haskell's Flaws
As the Twitter discussion yesterday pointed out, there are undoubtedly As the Twitter discussion yesterday pointed out, there are undoubtedly
flaws in Haskell. It may be __inflammatory__ to admit that publicly, flaws in Haskell. Every language has flaws. Haskell is blessed to also
but so be it. Every language has flaws. Haskell is blessed to also
have some of the greatest strengths in any programming language have some of the greatest strengths in any programming language
available today: beautiful concurrency, a powerful _and_ useful type available today: beautiful concurrency, a powerful _and_ useful type
system, a plethora of real-world libraries, and (as of recently) system, a plethora of real-world libraries, and (as of recently)