<div dir="ltr"><div style="color:rgb(33,33,33);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13.1999998092651px;line-height:19.7999992370605px"><i>tl;dr: We'd like to incorporate <b>stack</b> into <b>Haskell Platform</b>, and stop shipping pre-built packages, so we banish cabal hell, and have a single common way to 'get Haskell' that just works.</i></div><div style="color:rgb(33,33,33);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13.1999998092651px;line-height:19.7999992370605px"><br></div><div style="color:rgb(33,33,33);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13.1999998092651px;line-height:19.7999992370605px">At ICFP '14, there were several long group discussions of the state of "getting Haskell", including Haskell Platform, Stackage, and other approaches. Over the last year, there have been a few more public discussions and evolution on the ideas, and other installer developments. In particular, Stackage's LTS package sets are a direct development from this work, and the release of stack has offered new options.</div><div style="color:rgb(33,33,33);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13.1999998092651px;line-height:19.7999992370605px"><br></div><div style="color:rgb(33,33,33);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13.1999998092651px;line-height:19.7999992370605px">Today,<span style="font-size:13.1999998092651px;line-height:19.7999992370605px"> drawing from all this good work and ideas from so many,</span><span style="font-size:13.1999998092651px;line-height:19.7999992370605px"> we'd would like to propose a concrete plan:</span></div><div style="color:rgb(33,33,33);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13.1999998092651px;line-height:19.7999992370605px"><ul style="font-size:13.1999998092651px;line-height:19.7999992370605px"><li>Haskell Platform becomes the standard way to get <b>GHC</b> and related tools: <b>alex</b>, <b>cabal</b>, <b>happy</b>, <b>hscolour</b>, and <b>stack</b>. It's a user-friendly, cross-platform installer that gives a standard way to "get Haskell" for most users.</li><li><span style="font-size:13.1999998092651px;line-height:19.7999992370605px">Use the </span><b style="font-size:13.1999998092651px;line-height:19.7999992370605px">stack</b><span style="font-size:13.1999998092651px;line-height:19.7999992370605px"> model for package installation:</span><br></li><ul><li>The global db has only the GHC packages</li><li>There is a package db for each curated set, Haskell Platform becomes one such set</li><li>Projects each have their own package db, much like sandboxes.</li></ul><li>Haskell Platform's installer will no longer include pre-built, pre-installed packages other than GHC's set. Instead, it is configured so that <b>stack</b> can be used to build and install, on as needed, the corresponding Haskell Platform release packages.</li></ul><div><span style="font-size:13.1999998092651px;line-height:19.7999992370605px">We think this plan solves many different community needs:</span></div><ul style="font-size:13.1999998092651px;line-height:19.7999992370605px"><li>We have a clear way to "get Haskell" that works for a wide variety of use cases.</li><li>HP installer gets much smaller, and about as minimal as a working installation can get.</li><li><span style="font-size:13.1999998092651px;line-height:19.7999992370605px">By leaving most packages out of the global database, users of cabal-install, will now have far fewer problems. Sandbox builds should now never give users "cabal hell" like warnings.</span></li><li><span style="font-size:13.1999998092651px;line-height:19.7999992370605px">By building and installing the Platform packages into it's own package db, users get the benefit of building and installing these common packages only once per system, yet can easily bypass them for any given project if desired.</span></li><li>Since the Platform packages are now built and installed as needed, installing on smaller systems or servers without OpenGL will work.</li></ul><div>To do this, we have a bit of work ahead of us: We need to settle on installation layout for each OS (including getting msys into the Windows installer); decide on the naming and versioning of the Platform package set (is it just LTS? does it have a different life cycle? etc...); getting <b>stack</b> ready such a distribution; and configuring (or updating) <b>cabal-install</b> to support the three-layer package db scheme<span style="font-size:13.1999998092651px;line-height:19.7999992370605px">. We think we can do this in short order.</span></div><div><br></div></div><div style="color:rgb(33,33,33);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13.1999998092651px;line-height:19.7999992370605px">We recognize this represents a significant change for the Platform, and will require buy-in from the various parts, especially <b>ghc</b>, <b>cabal</b>, and <b>stack</b>. We'd like to get your input.</div><div style="color:rgb(33,33,33);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13.1999998092651px;line-height:19.7999992370605px"><br></div><div style="color:rgb(33,33,33);font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13.1999998092651px;line-height:19.7999992370605px">- Michael & Mark</div></div>