Call for GHC Maintainers

Moritz Angermann moritz.angermann at gmail.com
Tue Aug 18 09:03:22 UTC 2020


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 at 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 at 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 at 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 at haskell.org
> >> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20200818/e1de03cc/attachment-0001.html>


More information about the ghc-devs mailing list