guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ‘core-updates’ is gone; long live ‘core-packages-team’!


From: Steve George
Subject: Re: ‘core-updates’ is gone; long live ‘core-packages-team’!
Date: Sun, 1 Sep 2024 17:34:13 +0100

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]