Re: Improving the "Get Haskell Experience"

The main reason I am using stack is for its support for building a project
containing multiple packages. There aren't any other tools that make this a
first-class concept that is easy to use and not buggy.
In addition, stack has a first-class concept of curated package sets. All
of these are required to have smooth installs in real world projects, and
they aren't likely to appear in cabal-install in a short time frame.
On the other hand, stack already has good package distribution.
But providing both cabal-install and stack is the right choice that helps
keep the Haskell platform relevant and avoid new users having to go through
multiple installation steps.
On Sun, Jul 12, 2015 at 12:07 PM,
The HP is a place for tools which have stabilized. A few reasons why I don't think stack is ready:
- stack has initial interest from the community, but so did ghc-dev and hsenv. It's still (imo) in proof of concept stage, and we don't know where its lessons will ultimately end up. In those other two cases, they ended up being folded into cabal, which is one likely scenario with stack.
- There are other solutions on the horizon! There's a GSOC project that will add nix-style package management to cabal. This should eliminate most (all?) the cabal hell we know and love, and that's why most stack users are trying it, no?
- The HP is for stable apis for users, too -- we provide tools that users won't have to unlearn or re-learn. Most languages don't have two package managers! We're clearly in an unstable state, which isn't when we should add to the HP.
If 9 months from now stack is clearly the right tool for the job (i.e. we're considering deprecating cabal), then I'd definitely consider supporting adding it to the HP but otherwise i'm strongly -1. (If it needs saying, I don't think stack is a bad tool).
tl;dr: The dust hasn't settled. Please don't add tools to the HP which we don't know will be in common use (in their current form) a year from now.
Tom
El Jul 12, 2015, a las 12:25, Mark Lentczner
escribió: No - we are not talking about the upcoming, 7.10.2 HP release. It would for the next major release after that.
Yes, stack has only been out ~1 month, but it has already shown traction in the community, and it has a clear working solution for managing "curated" pacakge sets, like Haskell Platform.
Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries

Greg Weber
The main reason I am using stack is for its support for building a project containing multiple packages. There aren't any other tools that make this a first-class concept that is easy to use and not buggy. In addition, stack has a first-class concept of curated package sets. All of these are required to have smooth installs in real world projects, and they aren't likely to appear in cabal-install in a short time frame.
The problem that I'm personally facing all too often, is exploratory development, where the modus operandi is to try using versions/branches that are not yet released on Hackage. Things like this happen especially during GHC version transitions, where ghc-new buildability of libraries/tools is often in flux, and so you /have/ to chase the tail (or is it HEAD?). As an example, the version of ghc-mod that works with 7.10 is still unreleased on Cabal -- months passed, the prospects still indefinite. But it also happens out of plain curiosity and willingness to try out how new things could affect the way of problem expression. For an example of that, let's take the 'nokinds' branch of GHC, where Richard Eisenberg does research on formulating GHC with dependent types. Another situation where these things matter especially is collaborative development -- trying to help with bugs, for example. All these things ring of the same, actually.. ..where Hackage puts a mild barrier to sharing small contributions with the world, Stack puts a wall. Which is a good thing. But also a bad one. ..and unless I'm wrong, and we're indeed moving to a world where people would increasingly use Stack, this dichotomy is /bound/ to become more pressing. Curiously, there's a technology to solve to both sides of the story -- Nix, which was mentioned before, but I think its salient point applies especially well to this dichotomy: 1. use the existing curated releases, but also can 2. override packages with a Github fork URL, commit id and the physical checkout hash -- and have everything pick it up in a transparent, fixpoint way. Admittedly it's not been made as trivial to use -- there's more moving parts to factor, and up until now there just wasn't any party seriously interested in doing the user-facing parts. ..And so, I can't help but wonder.. what if the Stack authors would have applied their expertise to provide the same user experience they achieved.. ..but with Nix as an underlying technology? -- respectfully, Косырев Серёга

On Mon, Jul 13, 2015 at 3:34 AM, Kosyrev Serge <_deepfire@feelingofgreen.ru> wrote:
..And so, I can't help but wonder.. what if the Stack authors would have applied their expertise to provide the same user experience they achieved..
..but with Nix as an underlying technology?
Backpack (very roughly, a Nix-like Cabal package mechanism) is still in development. Once it's out there, perhaps FPComplete will look into using it with Stack? -- brandon s allbery kf8nh sine nomine associates allbery.b@gmail.com ballbery@sinenomine.net unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net

On Mon, Jul 13, 2015 at 12:34 AM, Kosyrev Serge <_deepfire@feelingofgreen.ru
wrote:
The main reason I am using stack is for its support for building a
containing multiple packages. There aren't any other tools that make
Greg Weber
writes: project this a first-class concept that is easy to use and not buggy. In addition, stack has a first-class concept of curated package sets. All of these are required to have smooth installs in real world projects, and they aren't likely to appear in cabal-install in a short time frame.
The problem that I'm personally facing all too often, is exploratory development, where the modus operandi is to try using versions/branches that are not yet released on Hackage.
Things like this happen especially during GHC version transitions, where ghc-new buildability of libraries/tools is often in flux, and so you /have/ to chase the tail (or is it HEAD?).
As an example, the version of ghc-mod that works with 7.10 is still unreleased on Cabal -- months passed, the prospects still indefinite.
But it also happens out of plain curiosity and willingness to try out how new things could affect the way of problem expression.
For an example of that, let's take the 'nokinds' branch of GHC, where Richard Eisenberg does research on formulating GHC with dependent types.
Another situation where these things matter especially is collaborative development -- trying to help with bugs, for example.
All these things ring of the same, actually..
..where Hackage puts a mild barrier to sharing small contributions with the world, Stack puts a wall.
I think you are using the wrong terminology. You probably mean to compare "stackage" with "Hackage". But your replly is supposed to be about "stack", which has first-class support for building packages that are not on Hackage as part of your project, including fetching the package from github for you. https://github.com/commercialhaskell/stack/wiki/stack.yaml#project-config
Which is a good thing.
But also a bad one.
..and unless I'm wrong, and we're indeed moving to a world where people would increasingly use Stack, this dichotomy is /bound/ to become more pressing.
Curiously, there's a technology to solve to both sides of the story -- Nix, which was mentioned before, but I think its salient point applies especially well to this dichotomy:
1. use the existing curated releases, but also can 2. override packages with a Github fork URL, commit id and the physical checkout hash -- and have everything pick it up in a transparent, fixpoint way.
Again, there is already support for this in stack. Give it a try.
Admittedly it's not been made as trivial to use -- there's more moving parts to factor, and up until now there just wasn't any party seriously interested in doing the user-facing parts.
..And so, I can't help but wonder.. what if the Stack authors would have applied their expertise to provide the same user experience they achieved..
..but with Nix as an underlying technology?
Then stack would be forcing Windows users to use cygwin
-- respectfully, Косырев Серёга

I'm glad to read the variety of response, and want to summarize and respond to the most common points: *stack is too new *& *having two package managers will confuse* — It is indeed new, though it has arrived very well formed, and has gained a lot of users in short order. There are two reasons why I think we should be including it (or rather, including the version a few months down the road when we do the next major HP): 1) It's approach to package db organization is very good, 2) I would be better for all that stack were part of the suite of tools, rather than an alternative suite. Too be clear: I don't anticipate stack replacing cabal - different tasks will need one or the other. But I would like to see them unified in package db management. *nix-like package management* — I'll be honest: I don't think nix-style package management is all that useful. Enabling the package machinery to be able to support all those different package builds is fine. But it seems the devil is in the user experience of the tools that manage it. Until we see what use cases those tools support, I really have no way to evaluate what extending package dbs this way will add. *possible change to cabal sandbox handling of the global db* — Of course this will improve more complex builds for people who download the HP - but does so by reducing the HP install to a minimal install. This is fine, but I think what we proposed goes further. *pre-built package binaries are good* — Yes, especially on Windows, but I'd like to see a way that users can get those binaries, easily, and securely, without bloating the HP download. At present, users have to download 150MB ~ 230MB of installer - it is heavy! If we can make it so that users only have to compile a package the first time they use it in any project, for many this is ideal: you start minimal, incur cost is only once on first use, and build exactly in your system environment. If we augment this with a "binary repository" then we can let users decide to trade the compile cost for the download cost. - Mark Sorry for slow, group response, I'm still on vacation!
participants (4)
-
Brandon Allbery
-
Greg Weber
-
Kosyrev Serge
-
Mark Lentczner