From: Steve George <steve@futurile.net>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: guix-devel <guix-devel@gnu.org>
Subject: Re: ‘core-updates’ is gone; long live ‘core-packages-team’!
Date: Sun, 1 Sep 2024 17:34:13 +0100 [thread overview]
Message-ID: <bo2ftsxfwdad4pebavaui2kscuqdnq3x3ybvcuwccrctdtpwnr@f5c76ekkg5kg> (raw)
In-Reply-To: <87le0cj13e.fsf@inria.fr>
Hi,
I have a question on one part of the workflow, and would like to propose an addition to the 'stateless' branches Chris suggested:
On 31 Aug, Ludovic Courtès wrote:
> Hi again!
>
> Over the years, consensus emerged that ‘core-updates’, as a branch where
> we lump together all sorts of rebuild-the-world changes, is no longer
> sustainable. Those of us who were at the Guix Days in February 2023
> came to the conclusion that (correct me if I’m wrong) we should keep
> branches focused, with a specific team responsible for taking care of
> each branch and getting it merged.
>
> There’s now a ‘core-packages’ team, so there will be soon a
> ‘core-packages-team’ branch focusing exclusively on what’s in its scope,
> as specified in ‘etc/teams.scm’. There’s already a lot of work to do
> actually: upgrading glibc (again!), coreutils, grep, etc., and switching
> to a newer GCC as the default compiler. That branch won’t be special;
> it will follow the conventions that were adopted last year:
>
> https://guix.gnu.org/manual/devel/en/html_node/Managing-Patches-and-Branches.html
>
(...)
> To reduce world rebuilds, perhaps we’ll sometimes create “merge trains”,
> whereby we’ll merge, say, the branch upgrading CMake and that ungrafting
> ibus on top of ‘core-packages-team’, and then merge this combination in
> ‘master’. The key being: these branches will have been developed and
> tested independently of one another by dedicated teams, and the merge
> train will be a mere formality.
Under the 'patches and branches' workflow, what should happen to packages that are *not* part of any team, but do cause a rebuild of more than 300 dependent packages?
Andy Tai gave an example of ffmpeg [0]. There aren't enough contributors or committers for every package to be covered by a team, so this seems like a permanent constraint even if more teams do grow over time.
The manual currently says it goes to 'staging' [1], and that this will be merged within six weeks. Is this actually true? I don't see any sign of it on Guix' git [2], and an unsure if the manual is out of sync with the branches workflow.
While 'staging' seems like it could have similar difficulties to core-updates if it gets out of hand. The alternative choice of each time someone making a branch 'ffmpeg-and-stuff-i-collected-with-over-300-rebuilds' doesn't seem like a better choice ;-)
> Recently, Christopher Baines further suggested that, as much as
> possible, branches should be “stateless” in the sense that their changes
> can be rebased anytime on top of ‘master’. This is what we’ve been
> doing for the past couple of months with ‘core-updates’; that sometimes
> made it hard to follow IMO, because there were too many changes, but for
> more focused branches, that should work well.
(...)
Long-lived branches and ones that don't cleanly apply onto master cause lots of difficulties from what I've seen. Perhaps a lesson is that branches should both be stateless *and* should not exist for more than 3 months. We already have a rule that encourages atomic changes within any patch in order to make things faster/easier to review. By extension, lets do the same with branches - merge them more often.
I would propose a patch to the managing patches/branches sections of the manual depending on what the consensus is here.
Steve / Futurile
[0] https://lists.gnu.org/archive/html/guix-devel/2024-08/msg00202.html
[1] https://guix.gnu.org/devel/manual/en/guix.html#Submitting-Patches
[2] https://git.savannah.gnu.org/cgit/guix.git/refs/heads
next prev parent reply other threads:[~2024-09-01 16:35 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-31 13:03 ‘core-updates’ is gone; long live ‘core-packages-team’! Ludovic Courtès
2024-09-01 16:34 ` Steve George [this message]
2024-09-01 17:06 ` Christopher Baines
2024-09-03 14:02 ` Christopher Baines
2024-09-06 9:01 ` Ludovic Courtès
2024-09-09 15:30 ` Simon Tournier
2024-09-04 12:58 ` Simon Tournier
2024-09-05 8:39 ` Marek Paśnikowski
2024-09-05 9:40 ` Ricardo Wurmus
2024-09-06 9:11 ` Ludovic Courtès
2024-09-06 10:09 ` Andreas Enge
2024-09-06 11:35 ` Marek Paśnikowski
2024-09-06 13:25 ` Andreas Enge
2024-09-06 13:17 ` indieterminacy
2024-09-26 12:52 ` Ludovic Courtès
2024-09-06 17:44 ` Vagrant Cascadian
2024-09-06 18:06 ` Leo Famulari
2024-09-06 20:29 ` Rebasing commits and re-signing before mergeing (Was: ‘core-updates’ is gone; long live ‘core-packages-team’!) Vagrant Cascadian
2024-09-07 17:45 ` Leo Famulari
2024-09-08 2:33 ` Vagrant Cascadian
2024-09-06 19:49 ` ‘core-updates’ is gone; long live ‘core-packages-team’! Christopher Baines
2024-09-09 17:28 ` Naming “build train” instead of “merge train”? Simon Tournier
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=bo2ftsxfwdad4pebavaui2kscuqdnq3x3ybvcuwccrctdtpwnr@f5c76ekkg5kg \
--to=steve@futurile.net \
--cc=guix-devel@gnu.org \
--cc=ludo@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.