[haskell-infrastructure] wither the Platform

Gershom B gershomb at gmail.com
Sun Mar 22 17:24:55 UTC 2015

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.


On March 22, 2015 at 10:24:09 AM, Yitzchak Gale (gale at 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-infrastructure at community.galois.com
> http://community.galois.com/mailman/listinfo/haskell-infrastructure

More information about the Libraries mailing list