<div dir="ltr"><div>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.</div><div><br></div><div><br></div><div>New people do not understand:</div><div><br></div><div>1. ghc-pkg</div><div><br></div><div>2. The global vs. user package databases</div><div><br></div><div>3. Cabal</div><div><br></div><div>4. What Platform does to their build environment</div><div><br></div><div><br></div><div>New Haskell users are least equipped to understand errors caused by:</div><div><br></div><div>1. Package version conflicts</div><div><br></div><div>2. Something innate to their install, rather than something wrong with their package constraints.</div><div><br></div><div><br></div><div>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 <a href="https://github.com/bitemyapp/learnhaskell">https://github.com/bitemyapp/learnhaskell</a> and using things like MinGHC and Stack.</div><div><br></div><div><br></div><div>Comments like this from the committee:</div><br>"Despite the controversies over if platform is "right for beginners" it needs to be provided from the downloads page generally."<div><br></div><div>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.</div><div><br></div><div><br></div><div><div><br></div><div>Past comments I've made on this:</div><div><br></div><br>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.<br><br>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."<div><br></div><div><br>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.<br><br>Platform should be recommended when it is the best option available for the majority of Haskell users.<br><br>Quotes from end-users:<br><br></div><div>"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 <a href="http://haskell.org">haskell.org</a> website)<br></div><div><br></div><div><br></div><div>"I know I'm a beginner, but I don't even understand what problem #Haskell platform is trying to solve."<br><br><br>"Yeah, I was bitten by Haskell Platform a few weeks ago. I'll have to check out Stack though."</div><div><div><div><br>"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)</div><div><br></div><div><br></div><div>> As per #55 we want less biased presentation of bare install vs. platform, not more.<br><br>"Ok. (I recommend people to Haskell sometimes, and I see HP hurts them a lot, as they all want to do webdev)<br><br>Especially now that Stack is out and picking up momentum, I personally consider HP completely superseded."</div><div><br></div><div><br></div><div>"Windows user here. I dumped Platform the day MinGHC happened, and have never looked back."</div><div><br></div><div><br></div><div>"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."</div><div><br></div><div><br>"Actually, I don't understand why we need Haskell Platform at all? Now, when stack exists, Haskell Platform is useless, I think.<br><br>"Haskell with batteries included"? Yes, but what batteries are?<br><br>Compiler+Interpreter,<br>Cabal<br>35 "core" packages.<br><br>With stack I can setup ghc-infrastructure and install any packages I need."</div><div><br></div><br>"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, <a href="http://haskell.org">haskell.org</a> 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.<br><br>/subjective opinion"<br><br><br><div>"Yes, a regular frustration when helping folks on IRC is that the first three steps have so often been to,<br><br>1. Apologize<br>2. Instruct how to uninstall what they have<br>3. Start again with GHC and cabal<br><br>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."<div><br></div><div><br></div><div><div>"as a newborn Haskeller, I agree. Platform (OSX) was a huge pain, uninstalled it, learned cabal sandboxes, sometimes nuke them, everything works."</div><div><br></div><div><br></div><div>"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."</div><div><br></div><div><br></div><div>"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."</div><div><br></div><div><br></div><div><br></div><div>"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."</div><div><br></div><div>"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."</div><div><br></div><div>"So is there really a simple way (as you seem to suggest) to hide all the extra HP-provided package versions inside a sandbox?"</div><div><br></div><div>Recommended solution:</div><div><br></div><div>> add an entry like this to the constraints field in the cabal.config file in that sandbox:</div><div>> constraints: attoparsec source</div><div><br></div><div><br></div><div><br></div><div>"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.</div><div><br></div><div>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.</div><div><br></div><div>GHC 7.0.1 was released in November 2010, again we had to wait until March for a matching platform release.</div><div><br></div><div>GHC 7.2.1 was release in August 2011 but was marked as a technology preview and completely ignored by the platform.</div><div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>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."</div><div><br></div></div><div><br></div>"Haskell does still have major "ease of installation" problems in my experience."<br><br><br>"using Haskell Platform at all might cause troubles; it's explicitly recommended against [...] because it uses the global package database."</div><div><br></div><div><br></div><div>"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.<br><br>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."<br><br>"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."</div><br>"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)<br><br><br>"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..."<br><br><br>"The Haskell Platform was an attempt to define one but many don't like to depend on it."<br></div><div><br></div><br>"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"<div><br></div><div><br></div>"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."<div><br><div>Example links:<div><div><br></div><a href="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/crzijsx</a><div><br></div><div><a href="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/crzipnk</a></div><div><br></div><div><a href="https://www.reddit.com/r/haskell/comments/390msw/unable_to_install_ghc_and_haskell_plathorm_on/crzi5ls">https://www.reddit.com/r/haskell/comments/390msw/unable_to_install_ghc_and_haskell_plathorm_on/crzi5ls</a></div><div><br></div><div><a href="https://github.com/haskell/haskell-platform/issues/165">https://github.com/haskell/haskell-platform/issues/165</a></div><div><br></div><div><a href="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/csi48xe?context=1</a></div><div><br></div><div><a href="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/csi64m0?context=1</a></div><div><br></div><div><a href="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/csj5ymx</a></div><div><br></div><div><a href="https://www.reddit.com/r/haskell/comments/3b1yuk/haskellinfrastructure_fwd_new_haskell_platform/csi85yl">https://www.reddit.com/r/haskell/comments/3b1yuk/haskellinfrastructure_fwd_new_haskell_platform/csi85yl</a></div><div><br></div><div><a href="https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpm8okr">https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpm8okr</a></div><div><br></div><div><a href="https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpmk4vt">https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpmk4vt</a></div><div><br></div><div><a href="https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpmclvo">https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpmclvo</a><br clear="all"><div><br></div><div><a href="https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpm8l4a">https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpm8l4a</a><br></div><div><br></div><div><a href="https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpmbopv">https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpmbopv</a><br></div><div><br></div><div><a href="https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpmljeh">https://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpmljeh</a><br></div><div><br></div><div><a href="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/conifgv</a><br></div><div><br></div><div><a href="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/conjrt3</a><br></div><div><br></div><div><a href="https://www.reddit.com/r/haskell/comments/2w3php/venerable_haskell_platform_necessity_or_product/conbiu5">https://www.reddit.com/r/haskell/comments/2w3php/venerable_haskell_platform_necessity_or_product/conbiu5</a><br></div><div><br></div><div><a href="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/comcjji?context=3</a><br></div><div><br></div><div><a href="https://www.reddit.com/r/haskell/comments/2vy1lw/new_haskell_homepage_is_live/comgcp4">https://www.reddit.com/r/haskell/comments/2vy1lw/new_haskell_homepage_is_live/comgcp4</a><br></div><div><br></div><div><a href="https://www.reddit.com/r/haskell/comments/2w3php/venerable_haskell_platform_necessity_or_product/condlnb">https://www.reddit.com/r/haskell/comments/2w3php/venerable_haskell_platform_necessity_or_product/condlnb</a><br></div><div><br></div><div><a href="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/crtwiff</a><br></div><div><br></div><div><a href="https://www.reddit.com/r/haskell/comments/38br54/help_wanted_for_haskell_platform_website/crtxyb5">https://www.reddit.com/r/haskell/comments/38br54/help_wanted_for_haskell_platform_website/crtxyb5</a><br></div><div><br></div><div><a href="https://news.ycombinator.com/item?id=8083705">https://news.ycombinator.com/item?id=8083705</a><br></div><div><br></div><div><a href="https://news.ycombinator.com/item?id=6300091">https://news.ycombinator.com/item?id=6300091</a><br></div><div><br></div><div><a href="https://news.ycombinator.com/item?id=9808260">https://news.ycombinator.com/item?id=9808260</a><br></div><div><br></div><div><a href="http://www.davesquared.net/2014/05/platformless-haskell.html">http://www.davesquared.net/2014/05/platformless-haskell.html</a><br></div><div><br></div><div><a href="http://stackoverflow.com/questions/32532120/what-is-the-haskell-standard-library/32560351#32560351">http://stackoverflow.com/questions/32532120/what-is-the-haskell-standard-library/32560351#32560351</a><br></div><div><br></div><div><a href="http://stackoverflow.com/questions/32126861/bytestring-types-fail-when-installing-cabal-install">http://stackoverflow.com/questions/32126861/bytestring-types-fail-when-installing-cabal-install</a><br></div><div><br></div><div><a href="https://www.reddit.com/r/haskell/comments/3fqiff/dont_give_up_on_haskell/ctrb083">https://www.reddit.com/r/haskell/comments/3fqiff/dont_give_up_on_haskell/ctrb083</a><br></div><div><br></div><div><a href="https://github.com/haskell-infra/hl/issues/93#issuecomment-75862519">https://github.com/haskell-infra/hl/issues/93#issuecomment-75862519</a><br></div><div><br></div><div><a href="https://github.com/haskell-infra/hl/issues/55">https://github.com/haskell-infra/hl/issues/55</a><br></div><div><br></div><div><a href="http://ircbrowse.net/browse/haskell?id=21305217&timestamp=1440372668#t1440372668">http://ircbrowse.net/browse/haskell?id=21305217&timestamp=1440372668#t1440372668</a><br></div><div><br></div><div><a href="https://twitter.com/mac10688/status/644600976897347584">https://twitter.com/mac10688/status/644600976897347584</a><br></div><div><br></div><div><a href="https://twitter.com/JulianBirch/status/640525865793810432">https://twitter.com/JulianBirch/status/640525865793810432</a><br></div><div><br></div><div><a href="https://twitter.com/dshevchenko_biz/status/640416836694245376">https://twitter.com/dshevchenko_biz/status/640416836694245376</a><br></div><div><br></div><div><a href="https://github.com/haskell-infra/hl/pull/130">https://github.com/haskell-infra/hl/pull/130</a><br></div><div><br></div><div><br></div><div><br></div><div>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.</div><div><br></div><div>My preference? Stop linking people to Platform until, at minimum, the globally installed packages are removed per: <a href="https://github.com/haskell/haskell-platform/issues/206#issuecomment-138334410">https://github.com/haskell/haskell-platform/issues/206#issuecomment-138334410</a></div><div><br></div><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr">Chris Allen<br><div><span style="font-size:12.8px">Currently working on </span><a href="http://haskellbook.com" target="_blank">http://haskellbook.com</a></div></div></div></div></div></div>
</div></div></div></div></div></div></div>