Hi Untrusem,

I want to generally validate what you said about a slow feedback loop and how 
it drains willingness to contribute:

> - It decreases my will to contribute day by day.

General things you can do:

1. Gabor pointed out the importance of using `Make` to cache the build.

2. Cache builds for different branches
I've used `git worktrees` and I'm currently using Jujutusu. I'll explain my 
process using git worktrees below.

3. Cherrypick into a cached branch
Maxim mentioned this and there was a thread recently where Simon and Andreas 
shared a git alias.

On Thu, Aug 06, 2026 at 01:53:22PM +0200, [email protected] wrote:
(...)
> 1. Use git worktrees. Some contributors do, hopefully they will share
> their workflow, I do not use them.
(...)

1. Update master branch in main guix checkout
You have to build it at least once so that the magic git hook is installed, 
something like this: 
::

  cd ~/workspace/guix-src/guix
  git switch master
  git fetch origin

  # build source
  guix shell --container --nesting --development guix --share=/var/log/guix
  ./bootstrap
  ./configure
  make -j 24
  echo -$?
  exit

2. Create a worktree
I keep my worktrees in the same 'guix-src' location. I create one for each long 
running branch I'm tracking or a monthly review branch: ::

  mkdir -p ../worktrees

  # worktree to track a team
  git worktree add ~/workspace/guix-src/python-team -b python-team 
origin/python-team --track

  # worktree to track master - you can only have one worktree per branch
  git worktree add ~/workspace/guix-src/master-review-0626 -b 
master-review-0626 --track

  # all work is done on the branch

3. Build Guix in the worktree
This is before you've applied any patches/PRs so that you have a 'cached' build 
at the base: ::

  cd ../worktrees/python-team

  guix shell --development guix --container --nesting --share=/var/log/guix 
--verbosity=3

  # only if you haven't built it
  ./bootstrap ; ./configure

  # if previously built then it's a rebuild
  make clean
  make clean-go

  make --jobs=NN

  echo $?
  exit

4. Continue from here
Now after this you do your PR etc, and when it comes to building your package 
you can do a 'guix build <package>' and it should be much faster.

>From time to time fetch/rebase new changes from the upstream branch you're 
>tracking. I collect together a bunch of changes and then only do a 
>fetch/rebase when I'm getting ready to push, as that way I can do it and 
>rebuild guix as part of the final check that everything is fine with the 
>PRs/changes I'm pushing.

Hope that makes sense,

Steve / Futurile

Reply via email to