wither the Platform

wren romano winterkoninkje at gmail.com
Sun Mar 29 20:22:18 BST 2015


On Sun, Mar 22, 2015 at 10:23 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.

+1

> 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.

One of the original goals of the HP was to try and reduce cabal hell
issues, but we've since seen a great deal of work in trying to solve
those problems by other means. Similarly, one of the original goals
was to improve Windows installation, but that too seems to have moved
on. With these changes in the landscape, it's no wonder the HP doesn't
seem to have much public uptake these days.

As present, I think we do still need something like HP, albeit recast
to fit the new landscape. The goals of Stackage and LTS are quite
different, and thus they cannot fill the role that HP does/did.

...

For me, the HP has served a couple roles. First (in no particular
order): to serve as a one-click install for getting Haskell up and
running on a new computer. Second: to serve as a stable and coherent
snapshot of the Haskell ecosystem. This latter purpose seems, imo, to
be the more important one going forward.

In the enterprise setting —including the enterprising FOSS community—
it's important to have checkpoints as a way of tracking backwards
compatibility. While most developers focus on getting the shiniest
newest things, this backwards support is extremely important both for
maintaining infrastructures and for introducing new folks to the
community; for both these groups, the newest and shiniest things may
not be easily available/usable due to economic concerns. The "preserve
compatibility with the last X versions" model works well for
dependencies like GHC, but it's not always clear (in retrospect) which
versions of hackage libraries were the contemporary/standard versions
corresponding to each GHC version. Thus, providing these sorts of
checkpoints is a necessary part of community building— for commercial
enterprise, FOSS enterprise, and newcomers alike.

Now that we have our foot in the door with various distros, the goal
of providing checkpoints can also help to satisfy the one-click
install goal, since the checkpoint provides distro managers guidance
on how to support a coherent snapshot of the crucial/main libraries
needed to get up and running. (Also, this could potentially provide an
avenue for reducing the work involved in releasing the HP; that is, by
relying on distros to deal with the distribution aspect, we could
focus more on just building/testing the configurations for each
release.)

...

As mentioned elsewhere in the thread, the outdatedness image of the HP
is definitely a problem. The salient solution here is to try and
release more often than we do now. Of course, with the amount of work
the HP currently takes for each release, that's not really tenable.
When the HP started we all knew it'd be a bunch of work, but that work
seemed like a good idea at the time. Now that the goalposts have
moved, that work seems more like an unnecessary burden. So, what could
the HP offer today which would be worth the work it takes to do so?

-- 
Live well,
~wren



More information about the Haskell-platform mailing list