wither the Platform
Manuel M T Chakravarty
chak at cse.unsw.edu.au
Wed Mar 25 04:43:13 UTC 2015
> Gershom B <gershomb at gmail.com>:
> On March 24, 2015 at 8:14:27 PM, Manuel M T Chakravarty (chak at cse.unsw.edu.au) wrote:
>>> Right, I think there's still a great deal of value in having a simple
>>> recommendation for new users.
>> Absolutely! The recurring problem with decisions like the one about the recommended
>> installers on the Haskell front page is that they are made by power users who simply lack
>> the perspective to understand the requirements of new users.
> To be clear, the current recommendations that highlight minimal installers were not made on behalf of “power users.” In fact, they were motivated by those with the most experience helping _new users_. As the discussed on various reddit threads , people coming to Haskell in the context of independent acquisition (i.e. not students at the fine institutions of higher learning with sufficient distinction and taste to teach Haskell) have consistently had trouble with the platform. I am here talking about people that are probably experienced programmers to some degree, but just not experienced with Haskell. If they are to be confused by things, I want them to be confused by clever types, subtle uses of laziness, and mind-blowing idioms relying on higher order functions, not confusing messages when trying to install libraries.
> The first things they try to do are not write student exercises, but e.g. install Yesod, or GHCJS, or Yesod and then GHCJS, and then some package with an API binding for some webservice which has not been updated in two years and requires an old version of time, and then maybe a GUI toolkit and of course lens. They do not yet know how to vet packages and carefully manage dependencies. They do not know how to fix trivial breakages or manually change bounds. They know how to type at least three words: “cabal” “install” and “ghci”. And they do not have a professor or instructor to guide them. And, consistently, repeatedly, they destroy their package environment. And when they do so, the answer is invariably the only one that is easy to give remotely and without lots of context — wipe the package environment and start again.
> The most important message for these new users is “always use a sandbox”, because that at least keeps them from destroying the full environment when they allow installations of packages that break other packages, etc. And the platform, to the extent that it changes and complicates build plans, does these users no good.
You are talking about a specific kind of new users. These new users want to install a web stack or similar — i.e., they need tons of packages. These people may be new to Haskell, but I reckon they are otherwise power users.
I’m talking about somebody picking up Learn you a Haskell and wanting to write Hello World. Why should they care about sandboxes? Who cares if they mess up their installation by installing the wrong package. They can always nuke it and install it again. That’s a much simpler story.
Look. I guess, I count as a power user ;) I rarely use sandboxes. They are great for a particular type of use, but you can do many things quite happily without them. (Ask SimonPJ; I reckon he doesn’t use sandboxes either.)
>> A minimal installer followed by half an hour of cabal install is an extremely bad way to
>> sell Haskell to a newcomer. Sure, it is more flexible, but flexible is *bad* for newcomers.
> I will grant this. But I will also say that a full platform install followed by a day of trying and failing to install complex combinations of dependencies also isn’t particularly inviting.
> Again, I very much _want_ to be able to recommend the platform unilaterally as the “best choice nearly always”. I like the fact that it has a uniform process for releases and installers. I like that it has infrastructure and buy-in, and I remember how bad things were in the days before it. I personally always use it, and I personally (absent the network/windows issue that MinGHC solves) don’t understand why experienced users don’t always go with the platform (except, I suppose, if they are so accustomed to “sandbox everything” that they never see a payoff, or if they are now using nix, which is also an awesome approach but very much for power users still).
The mistake here is to try to make this a one-size-fits all. I honestly don’t care about a platform that is ideal for everybody. I want something that I can point newbies at that makes them happy quickly. That needs to be one download with all the packages that you need to get going included.
If somebody gets sufficiently hooked on Haskell to want to start a bigger project, then they will have the patience for a more elaborate story (and wait for cabal install for a few hours to do its job).
The point is that one-size-fits-all is inherently unfriendly to novices. A novice needs something simple with as few options as possible, whereas a power user wants flexibility and customisability. A minimal installer with sandboxes gives you the latter, but it comes at the expense of simplicity, which makes is unfriendly to novices.
> I think Duncan’s proposals are very good. That is to say first, change the “new sandbox behavior” issue. Once we do that, the platform will be perfectly fine for the sorts of users I described above, and I would hope that changing the recommendations on the website to say so would be uncontroversial. Then, above and beyond that, and at a future date, finishing the big plans for nix-like operations, allowing the same version of package A to be built against multiple versions of package B, etc, will do away for the need for sandboxes altogether, we hope.
Well, we have got people who want to learn Haskell now and who use Haskell as part of their coursework now. Why make them wait for future work which will probably take longer than planned, needs to be rolled out, etc?
I’m sorry if I’m sounding negative here. I appreciate all these efforts. However, I am quite frustrated by the recurrent argument that flexibility implies simplicity. That is true for the expert, but flexibility is a curse to the beginner.
More information about the ghc-devs