Hi there!

So a few more discussions have come up.  And they have mainly centered
around the question of quality assurance.  Cutting GHC releases is time
consuming and not trivial.  And those people would need to take ownership
of those releases and stand by them.  How do we ensure that backports do
not inadvertently break working compiler?  I'm completely against preventing
new contributors to help with making releases on the ground that things can
go wrong.  This would inevitably just end up preventing people form even
trying, and how do you get good at something if you can't even try to get good
at it?

So the question then is: what can we do to improve/ensure quality of releases?
We certainly have the test-suite, but that might have holes, and backporting the
test-suite will only work so far. Language features that change stdout/stderr
will inevitably be fixed in newer test-suites to accomodate newer compilers, but
will not work with older compilers.

However, we have a large body of public libraries on hackage.  And a curated
set of packages per compiler in the form Stackage LTS sets.  We have something
slightly similar for HEAD with the hackage head overlay.  For older compilers
we can rely on something more mature!

Thus, if we can build some automation to test a compiler against an existing set
of packages, and run their test-suites. There will inevitably be failures, but we'd
be interested in looking at the drivitive only anyway. If the same set of tests fail
that previous compilers failed at, I don't think that should be much of concern. If
fewer tests fail, it would indicate something might have been fixed, or the test
now surfaces some new behaviour that we might want to look at.  Worst case
would be new test that fail, but didn't before.  This should raise red flags and
either have a *very* good argument for why the backport is still the right thing to
do and the test-failures are actually faulty tests, or the backport should just not
be performed.

In the end it will be about striking a balance between fixing bugs and not
regressing, with a higher priority on not regressing.  However we if we can't
detect we regress, we have to assume we don't, as we'd otherwise be unable
to even make any releases.

I'd be happy to discuss this further, and setup some nix based test harness for
this, as time permits (with windows test being run through some cross compilation
and wine based) setup.

Cheers, 
 Moritz

On Sat, Aug 15, 2020 at 3:31 PM Moritz Angermann <moritz.angermann@gmail.com> wrote:
Hi there!

Thanks everyone for showing interest. I've started a wiki page here:
https://gitlab.haskell.org/ghc/ghc/-/wikis/ghc-maintainers
Please add yourself to the release you'd like to maintain. I've tried
to come up with a plan on how to actually look at this problem,
and it appears to me that we want a list of Merge Requests that are
considered for backporting, and then see to which GHC we
backport them.  So essentially a matrix with GHC releases / merge
requests, and values being either empty or the commit in which
the MR was backported.

To get the existing matrix we might try to extract this from the git
history? Does anyone have a good idea how to do this properly?
The alternative would be to go through all existing MRs, and check for
backports, which would be quite tedious, and an automated
solution (at least to get the initial matrix would be good?).  In
general I believe there to be value in a matrix of backports for easy
lookup.

Then we'll need a good way to flag new incoming MRs for backports, and
have the release maintainers look at them, and their
applicability/suitability for a given release.

Finally, let's not kid ourselves here, this will require some time
investment, taking ownership and coordination. I don't think we need
to rush releases, but we should make sure that releases are of good quality.

Cheers,
 Moritz

On Tue, Aug 11, 2020 at 11:29 PM Hemanth Kapila <saihemanth@gmail.com> wrote:
>
> Thanks for the note.
>
> I will be happy to pitch in.
>
> Thanks,
> Hemanth
>
> On Tue, 11 Aug 2020, 07:40 Moritz Angermann, <moritz.angermann@gmail.com> wrote:
>>
>> Hi there!
>>
>> As it stands right now, Ben is the one who works tirelessly trying to
>> cut releases. Not just for the most recent version, but also for
>> previous versions. Most recently 8.10.2, but we have 9.0 coming up as
>> well.
>>
>> I know that there are some people who deeply care for personal or
>> professional reasons for older releases, 8.4, 8.6, 8.8, ... Some of
>> them have stacks of patches applied, or proprietary extensions. I'd
>> argue that most of those applied patches are backports of bug fixes
>> and rarely language features, as language features will break
>> compatibility (due to ghc, base, and other library versions anyway).
>>
>> I would therefore like drum up a group of people who will take care
>> (ideally 2+ per release) of backporting and making minor partch
>> releases. This does not have to go on forever, but it would take much
>> needed load off of Ben to focus on what ever happens in ghc HEAD.
>>
>> So what would this work actually look like? It would consist of
>> - going through the list of MRs and tagging those which are relevant
>> for backporting to a certain release.
>> - backport MRs where the MR does not cleanly apply.
>> - fixup any test-suite failures.
>> - agree on a date to cut/make the release.
>>
>> This is not a permanent commitment. I hope we can attract more people
>> to the ghc release managers.
>>
>> I'm looking forward to great many responses. And I'm sure Ben will be
>> able to help mentor us through cutting the first releases. I'll
>> volunteer to be part of the 8.6 branch maintainers for now.
>>
>> Cheers,
>>  Moritz
>>
>> PS: There is a slightly related discussion about release cadence and
>> versions and how other projects deal with this in this ticket:
>> https://gitlab.haskell.org/ghc/ghc/-/issues/18222
>> _______________________________________________
>> ghc-devs mailing list
>> ghc-devs@haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs