[Haskell-community] Haskell Platform as the default recommendation considered harmful

Christopher Allen cma at bitemyapp.com
Mon Sep 21 05:05:32 UTC 2015


Here are some quotes from end-users regarding Platform. This is just what I
found on the web and from skimming IRC logs, it doesn't include many
hundreds more of examples from IRC of new people _in particular_ getting
stuck because they didn't understand they were conflicting with globally
installed packages.


New people do not understand:

1. ghc-pkg

2. The global vs. user package databases

3. Cabal

4. What Platform does to their build environment


New Haskell users are least equipped to understand errors caused by:

1. Package version conflicts

2. Something innate to their install, rather than something wrong with
their package constraints.


Part of the problem is that the people making decisions on these matters
are not the people on the frontlines helping new people in IRC or otherwise
in the wild with sufficient regularity to see how often this catches people
up. It's less common than it used to be, but that's due in large part to
people following the install instructions on
https://github.com/bitemyapp/learnhaskell and using things like MinGHC and
Stack.


Comments like this from the committee:

"Despite the controversies over if platform is "right for beginners" it
needs to be provided from the downloads page generally."

Are representative of the experience the community has had trying to get
the situation rectified and people routed to alternatives so that
unnecessary friction isn't encountered.



Past comments I've made on this:


Haskell libraries typically move pretty quickly...Having cabal sandbox init
&& cabal install $package just work is important and Platform compromises
that as the globally installed packages becoming out of date between
releases.

Doug Beardsley, one of the core Snap developers said this in reply: "This.
This is the biggest reason I don't use the platform and have advised a
number of relative newcomers to switch from the platform to straight GHC
when they encountered build dependency problems."


I used to tell people in my guide to install Haskell Platform, but I
stopped because it kept creating problems. Haskell Platform causes trouble
for new people when the globally installed packages get old. These very
same new people are the ones least equipped to cope with or understand the
problem or where it comes from.

Platform should be recommended when it is the best option available for the
majority of Haskell users.

Quotes from end-users:

"The HP downloads have been moved "above the fold" with a clear demarcating
line separating the "first class citizen" (HP) from the other, minimal
installers. Frankly, I was astonished when I went on the other day and saw
this change, since originally there was pushback about even having HP on
the downloads page at all!" (re: content changes on the new haskell.org
website)


"I know I'm a beginner, but I don't even understand what problem #Haskell
platform is trying to solve."


"Yeah, I was bitten by Haskell Platform a few weeks ago. I'll have to check
out Stack though."

"I haven't used haskell for a few years, installed haskell platform the
other day, it works fine but I can't cabal install" (said 2015-09-15 btw)


> As per #55 we want less biased presentation of bare install vs. platform,
not more.

"Ok. (I recommend people to Haskell sometimes, and I see HP hurts them a
lot, as they all want to do webdev)

Especially now that Stack is out and picking up momentum, I personally
consider HP completely superseded."


"Windows user here. I dumped Platform the day MinGHC happened, and have
never looked back."


"On OS X, in my experience it is way easier to set up Haskell without HP
than with, fwiw. I don't think it was always this way, but it has been for
at least a year."


"Actually, I don't understand why we need Haskell Platform at all? Now,
when stack exists, Haskell Platform is useless, I think.

"Haskell with batteries included"? Yes, but what batteries are?

Compiler+Interpreter,
Cabal
35 "core" packages.

With stack I can setup ghc-infrastructure and install any packages I need."


"It seems to me that within the community, we all know stack is the clear
winner, and we can recommend it to whomever is showing us an interest in
Haskell. Unfortunately, haskell.org appears to be the landing portal for
the language to a newcomer with no existing ties to the community, and thus
no one to recommend stack over it. Stack is so obviously a better tool for
a new user, it's unbelievable.

/subjective opinion"


"Yes, a regular frustration when helping folks on IRC is that the first
three steps have so often been to,

1. Apologize
2. Instruct how to uninstall what they have
3. Start again with GHC and cabal

The effort made at packaging GHC on both Windows and OS X are really solid
pieces of work. It looks like Stackage LTS will provide a nice basis for a
set of libraries moving forward."


"as a newborn Haskeller, I agree. Platform (OSX) was a huge pain,
uninstalled it, learned cabal sandboxes, sometimes nuke them, everything
works."


"I find the platform to be a huge burden to beginners on OS X. It just
leads to cabal hell. Anything except the minimum to build cabal-install in
the global sandbox == super bad."


"The platform was very confusing to me as a beginner, and only now that I
know what I'm doing do I see what it was trying to accomplish. I'm
depending on the awesome PPA, hopefully GHC can be made easier to get
running without such a thing on other platforms."



"Actually there is a disadvantage with the HP, as I pointed out already in
an email-response, as the extra HP packages get registered into the global
package db, and therefore pollute the sandbox environment with those extra
packages."

"The problem is that Cabal prefers the version already installed (i.e.
exposed via the global pkg db), when I want the Cabal solver to be as
unrestricted as possible in a sandbox in order to get the latest available
versions rather than those imposed by the HP."

"So is there really a simple way (as you seem to suggest) to hide all the
extra HP-provided package versions inside a sandbox?"

Recommended solution:

> add an entry like this to the constraints field in the cabal.config file
in that sandbox:
> constraints: attoparsec source



"Funny because I have been using the Haskell ecosystem since roughly one or
two GHC versions longer than the platform has been around and to me it
always felt outdated on average over the lifetime of one HP release.

GHC 6.12.1 was released in December 2009, the next platform Beta release
was in March 2010 and the next actual release in July 2010. So the platform
contained the outdated GHC 6.10 for the better part of a year after the new
GHC version was released.

GHC 7.0.1 was released in November 2010, again we had to wait until March
for a matching platform release.

GHC 7.2.1 was release in August 2011 but was marked as a technology preview
and completely ignored by the platform.

GHC 7.4.1 was released in February 2012, the platform release including it
was in June, coinciding almost exactly with the GHC 7.4.2 release which was
then ignored by the platform until November, after even GHC 7.6.1 had been
released in September 2012 already.

To get GHC 7.6 in a platform release we had to wait until May 2013 when the
reasonably current (release in April 2013) GHC 7.6.3 was included in the
only platform release of that year.

In April 2014 we got GHC 7.8.1 and in August 2014 we got a platform release
for it which included 7.8.3, the current GHC release at the time and until
GHC 7.8.4 was released in December.

Not to mention that the HP is not even handled like a regular stable
distribution, e.g. it doesn't even update patch levels of packages or
compilers."


"Haskell does still have major "ease of installation" problems in my
experience."


"using Haskell Platform at all might cause troubles; it's explicitly
recommended against [...] because it uses the global package database."


"Haskell Platform feels a bit like Prelude; fine for people who are just
using it for small self-teaching projects, but once you're supposed to do
something "serious" then people seem to throw up their hands and say "No!
never mind that.". I don't know. Maybe I've got the wrong impression.

Now that I know enough cabal to get by and not screw myself over (by
creating dependency hell), I feel like Haskell Platform might not be
relevant to my needs any more."

"No, you're perfectly right. And while HP may be up to date right now,
it'll be out of date next month and it will keep getting more and more
obsolete until the next release in a year or so."

"It's still bad and cabal is still bad. I was in #haskell on IRC not too
long ago and they couldn't even figure out why a haskell-platform install
couldn't upgrade its own cabal with no other packages installed." (Example
of Cabal getting blamed for problems with Platform)


"If you're on OS X or Linux, you should not use the Haskell Platform. It's
a whole lot of pain for literally no gain..."


"The Haskell Platform was an attempt to define one but many don't like to
depend on it."


"I suggest you to use hvr's GHC packages. That way you can simply apt-get
install ghc-7.10.1 cabal-install-1.22"


"What is the best way of installing GHC on OS X? There's Haskell Platform,
Homebrew GHC/Cabal formulas, andHaskell for OS X. I've been told that
Homebrew formulas were broken a few months ago, and that Haskell Platform
is not good if you plan on doing anything but the most basic things."

Example links:

https://www.reddit.com/r/haskell/comments/390msw/unable_to_install_ghc_and_haskell_plathorm_on/crzijsx

https://www.reddit.com/r/haskell/comments/390msw/unable_to_install_ghc_and_haskell_plathorm_on/crzipnk

https://www.reddit.com/r/haskell/comments/390msw/unable_to_install_ghc_and_haskell_plathorm_on/crzi5ls

https://github.com/haskell/haskell-platform/issues/165

https://www.reddit.com/r/haskell/comments/3b1yuk/haskellinfrastructure_fwd_new_haskell_platform/csi48xe?context=1

https://www.reddit.com/r/haskell/comments/3b1yuk/haskellinfrastructure_fwd_new_haskell_platform/csi64m0?context=1

https://www.reddit.com/r/haskell/comments/3b1yuk/haskellinfrastructure_fwd_new_haskell_platform/csj5ymx

https://www.reddit.com/r/haskell/comments/3b1yuk/haskellinfrastructure_fwd_new_haskell_platform/csi85yl

https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpm8okr

https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpmk4vt

https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpmclvo

https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpm8l4a

https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpmbopv

https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpmljeh

https://www.reddit.com/r/haskell/comments/2w3php/venerable_haskell_platform_necessity_or_product/conifgv

https://www.reddit.com/r/haskell/comments/2w3php/venerable_haskell_platform_necessity_or_product/conjrt3

https://www.reddit.com/r/haskell/comments/2w3php/venerable_haskell_platform_necessity_or_product/conbiu5

https://www.reddit.com/r/haskell/comments/2vy1lw/new_haskell_homepage_is_live/comcjji?context=3

https://www.reddit.com/r/haskell/comments/2vy1lw/new_haskell_homepage_is_live/comgcp4

https://www.reddit.com/r/haskell/comments/2w3php/venerable_haskell_platform_necessity_or_product/condlnb

https://www.reddit.com/r/haskell/comments/38br54/help_wanted_for_haskell_platform_website/crtwiff

https://www.reddit.com/r/haskell/comments/38br54/help_wanted_for_haskell_platform_website/crtxyb5

https://news.ycombinator.com/item?id=8083705

https://news.ycombinator.com/item?id=6300091

https://news.ycombinator.com/item?id=9808260

http://www.davesquared.net/2014/05/platformless-haskell.html

http://stackoverflow.com/questions/32532120/what-is-the-haskell-standard-library/32560351#32560351

http://stackoverflow.com/questions/32126861/bytestring-types-fail-when-installing-cabal-install

https://www.reddit.com/r/haskell/comments/3fqiff/dont_give_up_on_haskell/ctrb083

https://github.com/haskell-infra/hl/issues/93#issuecomment-75862519

https://github.com/haskell-infra/hl/issues/55

http://ircbrowse.net/browse/haskell?id=21305217&timestamp=1440372668#t1440372668

https://twitter.com/mac10688/status/644600976897347584

https://twitter.com/JulianBirch/status/640525865793810432

https://twitter.com/dshevchenko_biz/status/640416836694245376

https://github.com/haskell-infra/hl/pull/130



Seem like a long list? Welcome to the bloodbath. I urge you try to find a
similar level of discontent in other programming language communities with
their community infrastructure like this.

My preference? Stop linking people to Platform until, at minimum, the
globally installed packages are removed per:
https://github.com/haskell/haskell-platform/issues/206#issuecomment-138334410


-- 
Chris Allen
Currently working on http://haskellbook.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-community/attachments/20150921/04e0915b/attachment-0001.html>


More information about the Haskell-community mailing list