all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Christopher Baines <mail@cbaines.net>
To: guix-devel@gnu.org
Subject: More thoughts on Patchwork and Guix patch review/quality assurance
Date: Sun, 29 Nov 2020 12:46:16 +0000	[thread overview]
Message-ID: <87v9dos547.fsf@cbaines.net> (raw)

[-- Attachment #1: Type: text/plain, Size: 6980 bytes --]

Hey,

It's over 2 years now since I started to build tooling around reviewing
Guix patches, which is a little shocking! This email [1] from back in
March details where some of the time has gone.

1: https://lists.gnu.org/archive/html/guix-devel/2020-03/msg00476.html

Since then, I've managed to get the patch testing setup working again,
which was a matter of working out how to delete data from the Guix Data
Service, so that it doesn't keep filling up the disk.

Also, it now uses the Guix Build Coordinator for building the
packages. This is great because the Guix Data Service quickly finds out
about the results, and the builds can be prioritised by the number of
packages being built for a patch series.

If you're interested in using this to review patches, the place to start
is Patchwork, so visit:

  https://patchwork.cbaines.net/

If you want an account, please email me. Unfortunately I had to disable
registration due to spam.

When you click through to a patch, the thing to look at is the
checks. These should link you to the relevant bug, Git branch and Guix
Data Service comparison. For the Guix Data Service comparison, the
things to note are the lint warnings and then clicking through to the
"Compare package derivations" page.

Changing direction a bit, it would be good to discuss more generally how
to make getting changes in to Guix/patch review better (faster, more
rigorous, more enjoyable, ...). Here are some thoughts I have, but I'd
love other ideas as well.


### Use Patchwork, rather than Debbugs to track patches

So this has been a thing for 4 years now (see [2] for some graphs). I
think I was there in the bar in Brussels when it was discussed.

2: https://debbugs.gnu.org/rrd/guix-patches.html

The main disadvantage I see of using Debbugs is that you have to get a
bug number before you can Git send-email, in the case where you're
sending multiple patches.

The main advantage I get from Debbugs is that searching via the bug
number is really useful.

I'm unsure, I think Debbugs was introduced to help keep track of
patches, and avoid them getting forgotten in guix-devel. Patchwork will
do this too, but maybe Debbugs is providing more value than the cost of
multi-patch series being slightly more difficult to submit?


### Scheduled and regular collaboration on IRC to review patches

When I can make some time, I'll try this out, but if anyone has some
time they can set aside, please go ahead!


### Help users with the submitting part of submitting patches

Using git send-email works well with Patchwork at least, and it's fine
with Debbugs if you've got a single patch, but a little more time
consuming if you're got more than one patch.

Attaching a single patch file to an email works OK I think, however
attaching multiple patch files to the same email confuses git am and
Patchwork I believe.

I think other approaches like copying the patch in to the body of an
email, or just copying the output of git diff in to an email are very
brittle and can make it more time consuming to try and recover or
recreate the commit(s).

Having the emails for patches is useful for reviewing, but maybe there's
a way users could push a branch somewhere and then have some service do
the git send-email thing on their behalf?


### Notify interested people about patches

This is something I've been thinking about more generally, supporting
email subscriptions for things like a new version of a package being
available, or the package failing to build on
master/staging/core-updates.

But specifically for patches, maybe there could be a way of subscribing
so that you're emailed when a patch series upgrades a package you're
subscribed to, or breaks a package you're subscribed to.

This could help get more people involved in reviewing patches, by making
it easier for the interested people to find out about patches they're
interested in.


### Helping people who aren't committers review patches

I don't know how much of this happens, but it might be something to
better support?

Better supporting it could mean documenting how to get things that have
passed review merged in, like emailing a list of committers when a patch
series is ready to merge.


### Making automated testing more rigorous

So, providing the patches can be automatically processed and apply
successfully, I'm currently building packages for x86_64-linux and
i686-linux.

There are more things that could be built if I amend the relevant
script:

 - System tests (maybe just x86_64-linux is relevant?

 - Cross-compiled packages (the Guix Data Service currently only
   generates these for x86_64-linux)

 - Building packages multiple times, this could help to find
   reproducibility issues (not just with the output, but also with
   succeeding or failing)

There are also some things that would require more work/hardware:

 - Building packages for architectures other than
   x86_64-linux/i668-linux.

   - I have some ideas on getting the Guix Build Coordinator agent
     running in a childhurd, some general substitute availability would
     also be good for getting this to work

   - ARM hardware would be good to add to the mix, once there's real
     hardware available, QEMU could be used as well. I wouldn't want to
     just use QEMU as then it makes it hard to work out if something is
     failing just on QEMU.

 - Building packages on a range of hardware with a range of
   resources/configurations. This is kind of a better version of just
   building a package multiple times. It would help spot odd failures
   earlier, and give valuable data about the reproducibility of the
   build outputs.

   - Single core vs many cores

   - Not much RAM vs plenty of RAM

   - Different filesystems (btrfs, ext4, ...)

   - Different Linux-libre versions

   - Different system times (2025, 2101, ...) 

   - Maybe building on other OS's (Debian, ...)

   These things require hardware availability and/or being able to
   control resources for a single build through the guix-daemon. It also
   requires a way in the Guix Build Coordinator to specify that you want
   builds to happen in this way, so build a single derivation many
   times, in each of these environments.

This is general quality assurance stuff, which would be valuable to do
on a continuous basis, and while doing this kind of testing is maybe a
bit trickier at patch review time, if you can manage it, it'll stop
problems being introduced.

Something to note here is that as the Guix Build Coordinator is packaged
for Guix, running the agent is pretty easy. So if you have some hardware
to volunteer to build packages changed by patches, and do general
quality assurance stuff, then get in touch! It doesn't even need to be
on all the time, or that reliable.


### Other ideas?

Thanks,

Chris

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 987 bytes --]

             reply	other threads:[~2020-11-29 12:47 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-29 12:46 Christopher Baines [this message]
2020-12-05 15:04 ` More thoughts on Patchwork and Guix patch review/quality assurance Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87v9dos547.fsf@cbaines.net \
    --to=mail@cbaines.net \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.