Thanks for kicking this off Mark. Here is what I think happened. We fragmented 
along two lines.

A) Users that sandbox and users that do not.
B) Libraries that maintain HP compatibility and libraries that do not.

The growth of non HP-compat libs is clearly what has driven the growth in 
sandboxing users. That brings us to the current situation where new users who 
install the platform then run into the issue hvr describes — platform-installed 
packages being available in sandboxes and causing trouble.

However, the current solution we push to new users is lacking in certain ways. 
In particular, I really don’t like not providing standard binary/installers 
from a _single source_ across all platforms. Instead, we have installers from 
three sources, with the minimal windows and mac ones being from small 
strikeforces or individuals, but not necessarily a team where everything is 
documented so others can step in if someone decides to go off and surf for the 
rest of their life in an area with poor wi-fi, etc.

Furthermore, it is _very_ important to have some community process to “bless” 
or suggest some set of packages from the zoo of hackage as the “typical” way to 
accomplish certain tasks, and I think we have been overly conservative in 
adding packages to the platform, probably due to the problem of pulling in 
unrelated dependencies, etc. This blessed set serves, among other things, as a 
core set of packages to advise distro managers on the baseline they should 
package, etc.

Finally, while sandboxes seem necessary, sandboxes are a _hack_ and it would be 
good to provide a way for users to maintain a local db that they like and trust 
of a set of baseline libs while making it _easy_ to override these in 
individual sandboxes.

Overall I tend to agree with dons’ comments on the reddit thread 
(http://www.reddit.com/r/haskell/comments/2zts44/wither_the_platform/cpmy54n) 
and think the key idea is to preserve _both_ the “one stop installer” aspect of 
the platform and the “blessed package set” element, but to decouple them from 
one another.

This leads to the following proposals:

1) Reboot the HP installers for windows and mac as effectively the MinGHC and 
GHC For Mac OS X, working with those teams but centralizing the build/packaging 
knowledge and provide them all from one place.
2) For generic linux point to both ghc and cabal binaries from the core teams.
3) Continue to pick out and list a compatible, “blessed” set of libraries under 
the platform umbrella, but do not necessarily package them with installers. 
Reboot interest in expanding and curating further the list of libraries across 
a wider range of application domains.
4) Improve sandbox tooling so that it is easy to exclude packages from the main 
database when building within sandboxes.

And of these I have one outstanding question — while MinGHC makes it easy to 
install network directly on windows machines, what does it do about the GL 
libraries? Or for getting a windows GHC with graphics, does the current 
platform build remain a better solution? If we can’t solve that, then the 
MinGHC approach doesn’t yet provide a strictly better solution.

Cheers,
Gershom

On March 22, 2015 at 10:24:09 AM, Yitzchak Gale (g...@sefer.org) wrote:
> Mark Lentczner wrote:
> > 1) Abandon the Platform…
> >
> > 2) Slim the Platform. Pare it back to GHC + base + a smaller set of
> > "essential" libs + tools. Keeps a consistent build layout and installation
> > mechanism for Haskell.
> >
> > 3) Re-conceive the Platform. Take a very minimal install approach, coupled
> > with close integration with a curated library set that makes it easy to have
> > a rich canonical, stable environment. This was the core idea around my "GPS
> > Haskell" thoughts from last September - but there would be much to work out
> > in this direction.
>  
> I vote for (3) but in a way that it would *not* be much work.
> We should definitely do the Platform, but with much *less* work.
>  
> The most important reason we need the Platform is as
> a default selection of quality basic libraries. We should not abandon
> that concept. Curated package sets do not replace that - the
> Platform is not just packages that build together. Nor do OS
> packagers. The platform is a community-wide set of basic default
> packages that are mature, well tested, all work together well,
> and stable.
>  
> The second most important role of the Platform is a web site
> where you can get a clear picture of how to download and install
> a default Haskell installation for your platform, and a simple view
> of where we are in the parade of releases. That should also continue.
>  
> The hardest work of the Platform was its role as a way to bootstrap a
> Haskell installation. That is what made it so hard for HP to keep up
> with GHC releases, and what consequently gave people the impression
> that HP is always old. That work doesn't need to be done as part of the
> Platform anymore. We should leverage other good work people are
> doing to create installers, and stop doing it as part of the HP process.
>  
> The most important part of an HP release should be a cabal package
> that provides the packages in the platform, at the right versions, with
> a specification of the recommended GHC version as a pre-requisite.
>  
> Perhaps we can also provide an HP-branded slick installer for some
> platforms that does everything in one click, built as a thin wrapper of
> some existing installer. But that should not delay the official release
> of an HP version. It's just a nice-to-have extra.
>  
> Once we pare down the work needed for an HP release, we should
> release new versions of HP quite often - *more* often than GHC
> releases, not less often.
>  
> Another thing we should fix is the (now false) impression that HP
> gets in the way of installing other packages and versions due to
> cabal hell. We should make "require-sandbox" the default setting
> in the cabal config file. I would go further - I would add a cabal
> feature to create a sandbox automatically unless "--user" or
> "--global" is specified explicitly. I would make "foo installed" a
> default constraint (that is easy to override) for all platform packages,
> which solves virtually all cabal hell problems (assuming you are
> using a sandbox) and will not keep things old if we release often.
>  
> Thanks,
> Yitz
> _______________________________________________
> haskell-infrastructure mailing list
> haskell-infrastruct...@community.galois.com
> http://community.galois.com/mailman/listinfo/haskell-infrastructure
>  


_______________________________________________
Haskell-platform mailing list
Haskell-platform@projects.haskell.org
http://projects.haskell.org/cgi-bin/mailman/listinfo/haskell-platform

Reply via email to