<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class="">Simon,</div><div class=""><br class=""></div><div class="">As Mathieu indicated, a core problem that led to #14558 is that integer-gmp was uploaded long after the release of GHC. One simple ground rule that we should have in the release policies is that GHC never gets released until all its dependencies have been released (this means uploaded and all). If this delays a GHC release, so be it.</div><div class=""><br class=""></div><div class="">With respect to Cabal, one general issue (as highlighted in the discussion between Mathieu and Gershom) is the co-development of the two. This immediately leads to a policy problem: the Cabal devs are free to structure their development as they see fit and they don’t need to follow any policies that we put into place.</div><div class=""><br class=""></div><div class="">Hence my question: can we simply ship GHC with the latest *stable* Cabal release at the time of GHC feature freeze?</div><div class=""><br class=""></div><div class="">I think, this would make the process much less fragile. Also, given GHC’s intended faster release schedule, it shouldn’t slow Cabal development significantly down either.</div><div class=""><br class=""></div><div class="">Manuel</div><div class=""><br class=""></div><div><blockquote type="cite" class=""><div class="">14.12.2017 03:43 Simon Peyton Jones via ghc-devs <<a href="mailto:ghc-devs@haskell.org" class="">ghc-devs@haskell.org</a>>:</div><br class="Apple-interchange-newline"><div class=""><div class="WordSection1" style="page: WordSection1; font-family: Helvetica; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><p class="MsoNormal" style="margin: 6pt 0cm; font-size: 12pt; font-family: "Times New Roman", serif;"><span style="font-family: Calibri, sans-serif;" class="">Dear GHC devops group<o:p class=""></o:p></span></p><p class="MsoNormal" style="margin: 6pt 0cm; font-size: 12pt; font-family: "Times New Roman", serif;"><span style="font-family: Calibri, sans-serif;" class="">The conversation on<span class="Apple-converted-space"> </span><a href="https://ghc.haskell.org/trac/ghc/ticket/14558" style="color: rgb(149, 79, 114); text-decoration: underline;" class="">Trac #14558</a><span class="Apple-converted-space"> </span>suggests that we might want to consider reviewing<span class="Apple-converted-space"> </span><a href="https://ghc.haskell.org/trac/ghc/wiki/WorkingConventions/Releases" style="color: rgb(149, 79, 114); text-decoration: underline;" class="">GHC’s release policies</a>.  This email is to invite your input.<o:p class=""></o:p></span></p><p class="MsoNormal" style="margin: 6pt 0cm; font-size: 12pt; font-family: "Times New Roman", serif;"><span style="font-family: Calibri, sans-serif;" class="">The broad questions is this. We want GHC to serve the needs of all its users, including downstream tooling that uses GHC.  What release policies will best support that goal?  For example,  we already ensure that GHC 8.4 can be compiled with 8.2 and 8.0.  This imposes a slight tax on GHC development, but it means that users don't need to upgrade quite as often.   (If the tempo of releases increases, we might want to increase the window.)<o:p class=""></o:p></span></p><p class="MsoNormal" style="margin: 6pt 0cm; font-size: 12pt; font-family: "Times New Roman", serif;"><span style="font-family: Calibri, sans-serif;" class="">Trac #14558 suggests that we might want to ensure the metadata on GHC’s built-in libraries is parsable with older Cabals.  One possibility would be this:<o:p class=""></o:p></span></p><ul type="disc" style="margin-bottom: 0cm; margin-top: 0cm;" class=""><li class="MsoListParagraph" style="margin: 6pt 0cm; font-size: 12pt; font-family: "Times New Roman", serif;"><span style="font-family: Calibri, sans-serif;" class="">Ensure that the Cabal metadata of non-reinstallable packages (e.g. integer-gmp) shipped with GHC be parsable by the Cabal versions shipped with the last two major GHC releases [i.e. have a sufficiently old cabal-version field].  That is, in general a new Cabal specification will need to be shipped with two GHC releases before GHC will use start using its features in non-reinstallable packages.<o:p class=""></o:p></span></li><li class="MsoListParagraph" style="margin: 6pt 0cm; font-size: 12pt; font-family: "Times New Roman", serif;"><span style="font-family: Calibri, sans-serif;" class="">Upholding this policy won't always be possible. There may be cases (as is the case Hadrian for GHC 8.4) where the benefit of quickly introducing incompatible syntax outweighs the need for compatibility. In this (hopefully rare) case we would explicitly advertise the incompatibility in the release documentation, and give as much notice as possible to users to allow downstream tools to adapt.<o:p class=""></o:p></span></li><li class="MsoListParagraph" style="margin: 6pt 0cm; font-size: 12pt; font-family: "Times New Roman", serif;"><span style="font-family: Calibri, sans-serif;" class="">For reinstallable packages, of which GHC is simply a client (like text or bytestring), we can’t reasonably enforce such a policy, because GHC devs have no control over what the maintainers of external core libraries put in their Cabal files.<o:p class=""></o:p></span></li></ul><p class="MsoNormal" style="margin: 6pt 0cm; font-size: 12pt; font-family: "Times New Roman", serif;"><span style="font-family: Calibri, sans-serif;" class="">This is just a proposal.  The narrow questions are these:<o:p class=""></o:p></span></p><ul type="disc" style="margin-bottom: 0cm; margin-top: 0cm;" class=""><li class="MsoListParagraph" style="margin: 6pt 0cm; font-size: 12pt; font-family: "Times New Roman", serif;"><span style="font-family: Calibri, sans-serif;" class="">Would this be sufficient to deal with the concerns raised in #14558?<o:p class=""></o:p></span></li><li class="MsoListParagraph" style="margin: 6pt 0cm; font-size: 12pt; font-family: "Times New Roman", serif;"><span style="font-family: Calibri, sans-serif;" class="">Is it necessary, ow would anything simpler be sufficient?<o:p class=""></o:p></span></li><li class="MsoListParagraph" style="margin: 6pt 0cm; font-size: 12pt; font-family: "Times New Roman", serif;"><span style="font-family: Calibri, sans-serif;" class="">What costs would the policy impose on GHC development?<o:p class=""></o:p></span></li><li class="MsoListParagraph" style="margin: 6pt 0cm; font-size: 12pt; font-family: "Times New Roman", serif;"><span style="font-family: Calibri, sans-serif;" class="">There may be matters of detail: e.g. is two releases the right grace period. Would one do?<o:p class=""></o:p></span></li></ul><p class="MsoNormal" style="margin: 6pt 0cm; font-size: 12pt; font-family: "Times New Roman", serif;"><span style="font-family: Calibri, sans-serif;" class="">Both the broad question and the narrow ones are appropriate for the Devops group.<o:p class=""></o:p></span></p><p class="MsoNormal" style="margin: 6pt 0cm; font-size: 12pt; font-family: "Times New Roman", serif;"><span style="font-family: Calibri, sans-serif;" class="">Thanks!<o:p class=""></o:p></span></p><p class="MsoNormal" style="margin: 6pt 0cm; font-size: 12pt; font-family: "Times New Roman", serif;"><span style="font-family: Calibri, sans-serif;" class="">Simon<o:p class=""></o:p></span></p></div><span style="font-family: Helvetica; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">_______________________________________________</span><br style="font-family: Helvetica; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">ghc-devs mailing list</span><br style="font-family: Helvetica; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="mailto:ghc-devs@haskell.org" style="color: rgb(149, 79, 114); text-decoration: underline; font-family: Helvetica; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">ghc-devs@haskell.org</a><br style="font-family: Helvetica; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" style="color: rgb(149, 79, 114); text-decoration: underline; font-family: Helvetica; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a></div></blockquote></div><br class=""></body></html>