[PATCH 1/1] 005-regular-releases: Initial draft of GCD005 'Regular and efficient releases'.

  • Done
  • quality assurance status badge
Details
45 participants
  • Adam Faiz
  • Andreas Enge
  • Andrew Tropin
  • Eric Bavier
  • Greg Hogan
  • Cayetano Santos
  • Divya Ranjan
  • Efraim Flashner
  • Ekaitz Zarraga
  • Felix Lechner
  • Gabriel Wicki
  • Konrad Hinsen
  • Hilton Chain
  • Ian Eure
  • Janneke Nieuwenhuizen
  • jgart
  • Jelle Licht
  • Leo Famulari
  • Liam Hupfer
  • Ludovic Courtès
  • Christopher Baines
  • Nicolas Goaziou
  • Maxim Cournoyer
  • Maxim Cournoyer
  • Fabio Natali
  • Tobias Geerinckx-Rice
  • Vinicius Monego
  • André Batista
  • Noé Lopez
  • Olivier Rojon
  • Mathieu Othacehe
  • pelzflorian (Florian Pelz)
  • Philip McGrath
  • pinoaffe
  • Ricardo Wurmus
  • reza
  • Rutherther
  • Sharlatan Hellseher
  • Steve George
  • Sughosha
  • Tanguy Le Carrour
  • tusharhero
  • Vagrant Cascadian
  • Z572
  • Simon Tournier
Owner
unassigned
Submitted by
Steve George
Severity
normal

Debbugs page

S
S
Steve George wrote on 9 May 05:19 -0700
(address . guix-patches@gnu.org)(name . Steve George)(address . steve@futurile.net)
e4f06ff9e3d38db80827c8c56d27f2e0108fecf5.1746793072.git.steve@futurile.net
* 005-regular-releases: New file.
---
005-regular-releases.md | 449 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 449 insertions(+)
create mode 100644 005-regular-releases.md

Toggle diff (429 lines)
diff --git a/005-regular-releases.md b/005-regular-releases.md
new file mode 100644
index 0000000..c9fb0ac
--- /dev/null
+++ b/005-regular-releases.md
@@ -0,0 +1,449 @@
+title: Regular and efficient releases
+id: 005
+status: draft
+discussion: https://issues.guix.gnu.org/<number assigned by issue tracker>
+authors: Steve George
+sponsors: Andreas Enge, Ludovic Courtès, Efraim Flashner
+date: <date when the discussion period starts>
+SPDX-License-Identifier: CC-BY-SA-4.0 OR GFDL-1.3-no-invariants-or-later
+---
+
+# Summary
+
+Guix doesn't have regular release cycle which has led to infrequent new
+releases. Sporadic releases are detrimental for our users, contributors and
+the project. This GCD proposes we implement an annual release cadence and
+simplify the release process to make releases easier.
+
+The project currently releases new versions of Guix on an ad hoc frequency.
+The 1.4.0 release happened in December 2022 [^1], which is almost 2.5 years
+ago, at the time of writing.
+
+The weaknesses in this release strategy are:
+
+1. No clarity on when the next Guix release is.
+2. Releases are complex and toil for developers.
+3. Rolling updates aren't suitable for all users.
+
+This GCD proposes the following combined solution:
+
+1. Regular releases: switch to a time-based release of Guix every year.
+2. Efficient releases: use *package sets* and *supported architectures* to
+reduce the scope of work required to create a Guix release.
+
+The benefits will be:
+
+1. New installations of Guix will be better because installation media and
+ manuals will be up to date, and the initial 'guix pull' will be faster.
+2. Package installation will improve for all users. Packages will be ungrafted
+ during each release cycle.
+3. Package quality will improve for all users, because regular releases will
+ provide a cadence for focusing on our quality.
+4. A regular cadence for promoting the project to potential users. Helping us
+ to inform more people about the benefits of using GNU Guix!
+5. A regular release cycle is a rallying point for our contributors giving them a
+ consistent calendar of when to focus on releases versus other hacking.
+
+Adding a slower-moving branch akin to Nix's stable could be an eventual goal as
+it would increase Guix's suitability for some users and use-cases [^2]. However,
+this GCD only sets out to implement regular releases which is a substantial
+change that would be a big improvement for our users.
+
+
+# Motivation
+
+Releases are important for any Free Software project because they update the
+user experience and are a focal point for excitement [^3]. Regular releases
+help us to improve the quality of our software by bringing focus, and
+exercising regular usage scenarios (e.g. testing the installer).
+
+The majority of distributions follow time-based releases, six months is a
+common cycle time. For further comparison see the research on the
+[release strategies of distributions] (https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt)
+. A summary is:
+
+- NixOS: releases every six months (May/November), both rolling release and
+slower stable branch.
+- OpenSUSE: rolling release, slow-roll release and fixed releases.
+- Ubuntu: every six months, with 9 months maintenance. LTS releases every
+2 years.
+- Debian: Every 2 years (not time fixed), with about six months of package
+updates freeze before the release while bugs are ironed out.
+
+As a rolling release Guix immediately provides the latest improvements to
+users. Consequently, it could be argued that releases are unnecessary.
+However, they provide a focal point for the project to undertake additional
+testing and stabilisation across the repository. They also ensure we update
+installation media, documentation, themes and web site.
+
+A specific issue caused by irregular releases is that new users/installs face a
+significant first "guix pull". This provides a poor initial user experience,
+and in some cases may even deter users [^4]. Additionally, it requires the
+project to keep old substitutes on our servers.
+
+Regular releases are also good for casual users because they provide an
+opportunity for us to promote new features and improvements. For prospective
+users promotional activity about the release means they are more likely to hear
+about capabilities that will attract them to experiment with Guix.
+
+Many desktop distributions release every six months to align with the major
+desktop environments (GNOME/KDE) who release two or three times a year. This is
+why Nix (May/November) and Ubuntu (April/October) align their releases.
+
+Since Guix is used [extensively as a desktop] (https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-1/)
+it would make sense to align with these upstream releases. However, given that
+Guix is a volunteer project that doesn't have the practise of releasing it's
+unrealistic to move to two releases a year. Something along these lines could
+be a future goal [^5].
+
+This GCD proposes an annual release cycle, with releases **in May**.
+
+To move onto this cycle the first release would be a little later: aiming for
+the **November of 2025**, with a short cycle to release in May 2026.
+
+
+## Package Sets
+
+There are currently over 30,000 packages in the archive, it's unrealistic for
+all packages to receive the same amount of QA effort for a release.
+
+Many other distributions focus attention on the critical parts of their
+repository by identifying those packages that are required for a particular
+user-case. For example, Arch Linux limits their efforts to a specific
+repository (called "main"). Ubuntu identifies various seeds for specific
+use-cases which determines their maintained packages; other packages outside
+these sets do not receive security updates.
+
+Guix is both a package manager that can be hosted on other Linux distributions,
+and a Linux distribution. Limiting the range of packages that receive attention
+is consequently more complicated. Guix already has manifests to track which
+packages are used by [Guix System's installer](https://git.savannah.gnu.org/cgit/guix.git/tree/etc/manifests/release.scm)
+, so this proposal extends that concept.
+
+For this proposal Guix would identify key package sets which would receive the
+most attention for QA'ing a release.
+
+The package sets would be:
+
+* minimal: packages required to boot and install a minimal Guix or Guix System
+install. This would include the guix daemon, kernels, boot loaders,
+file-systems and minimal utilities.
+* standard: packages that create a core installation for all other uses.
+* desktop: provides the packages necessary for a desktop. This would include
+things like X11/Wayland, desktop environments, key applications and themes.
+* server: provides packages and services for a server. This would include
+standard server packages and services.
+* hosted: provides packages and services which are necessary in hosted usage.
+
+Guix would still make all packages and services part of a release (the entire
+archive), but only those in the `package sets` could block a release due to a
+significant bug. The goal would be for this to be as small a set of packages
+as reasonably possible. It would mean that developers could focus on the
+critical packages and services during a release. As an example, this would
+mean that a major issue in the Linux kernel could block a release, but not an
+issue in a game.
+
+
+## Platforms and Architecture tiers
+
+Guix is built and maintained on multiple different architectures, and two
+kernels (Linux, GNU Hurd). As the goal of the project is to maximise user
+freedom this variety is significant and is a key motivator for developers.
+
+However, with limited resources (developer and CI) we want to make it as
+efficient as possible to create a release. The more toil involved in a release
+the less likely developers are to work on it.
+
+The [2025 Guix User Survey](https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-2/)
+showed that 98% of users were on x86_64 and 19% on AArch64. Consequently, the
+proposal is the following tiers:
+
+- Primary architectures:
+ - Architectures: x86_64, AArch64
+ - Kernel: Linux
+ - Coverage: all packages and services that are not explicitly platform
+ specific must work to be included in the archive.
+ - Package status: package updates should build for this architecture. If a
+ package update is broken it must not be pushed to users (e.g. master).
+ - Security: all packages that are maintained upstream receive updates
+
+- Alternative architectures
+ - Architectures: all others
+ - Kernel: Linux, Hurd
+ - Coverage: all packages and services that are not explicitly platform
+ specific may build
+ - Package status: package updates should work for this architecture.
+ Updates that do not build for this architecure, but do build for a primary
+ architecture may be pushed to users.
+ - Security: no commitment to providing security updates for this architecture.
+
+Packages or services that do not build for the Primary architectures as part of
+a release would be removed from the archive using Guix's deprecation policy.
+
+
+## Release artifacts
+
+Using the primary architecture tier and the package sets would involve creating
+the following release artifacts:
+
+- GNU Guix System ISO image
+- GNU Guix System QCOW2 image
+- GNU Guix installer
+
+Again in an effort to reduce developer toil, additional release artifacts could
+be created but would not be part of the formal release testing and errors would
+not block a release.
+
+
+## Release team and project
+
+A regular release cycle should galvanise all Guix developers to work on our
+releases. But, to ensure there are sufficient people involved a call will be
+put out to create a specific release team for each release project. We would
+expect the final release team to be around four-six members. The release team
+will work together to fix issues and test the various release artifacts. The
+expectation is that the release projects will be as short as possible, around
+a 12 week commitment with each team member having a few hours a week to take
+part.
+
+To manage the release it's proposed that each release will have a Release Manager
+role. The role of the Release Manager is to:
+
+- co-ordinate the release project
+- communicate with the release team and wider developers status and blockers
+- arbitrate changes to release blocking bugs, package sets and release
+ artifacts
+- influence and assist teams to resolve problems
+- define the release artifacts and create them
+- encourage and excite **everyone to create and test the release**
+
+The Release Management role is likely to require the most effort, so it will
+be rotated and consist of two people from the release team. For each release
+there would be a primary person and a secondary person in the role. The
+primary person is new to the role. The secondary person has previously done it
+and is mentoring the new person. The impact of this is that each new release
+manager is agreeing to take responsibility during two release cycles.
+This system is modelled on the [Nix release management](https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt/nix-release-mgmt.md)
+approach.
+
+One of the release team will take on the role of Release Advocate [^6]. They
+will take responsibility for preparing the release announcement and
+coordinating the creation of content to promote the new release (e.g. web site)
+This role can be done by any member of the Guix community who has sufficient
+interest.
+
+The final release team is:
+
+- a new Release Manager
+- a returning Release Manager
+- up to 4 other members, one of whom acts as the Release Advocate
+
+The Release Managers of each release will create and communicate a release
+project plan setting out the stages and dates for each stage. To try and
+galvanise the Guix development team to focus on the release it's envisioned
+that a release project will be about 12 weeks. See Appendix 1: Release Project
+Time-line for an example.
+
+In order to improve knowledge transfer and reduce the toil of doing releases
+the Release Managers for a release will document the release process. There is
+inspiration for this in [NixOS's release wiki](https://nixos.github.io/release-wiki/Home.html)
+and we already have detailed [release documentation](https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/doc/release.org)
+.
+
+
+# Cost of Reverting
+
+If regular releases were not successful then the project would switch back to
+irregular releases. There would be no impact for exiting users as they will
+be tracking the rolling release's master branch.
+
+If the project is able to successfully undertake regular releases then over
+time it may be possible to undertake full releases every six months or some
+other release cadence.
+
+
+# Drawbacks and open issues
+
+There's no particular drawback to attempting regular release. It should be
+noted that the project is entirely dependent on volunteers so it may be that
+contributors don't have enough time available to achieve regular releases. If
+that's the case we would revert back to irregular releases.
+
+There are various improvements that could be made to this process over time,
+but no known issues.
+
+
+# Appendix 1: Release Project Time-line
+
+To illustrate the major steps of a release project this is a rough time-line.
+The aim is for a 12 week active release project, with the first one using 16
+weeks in total to give teams time to prepare.
+
+The current outline builds from our current [release document](https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/doc/release.org)
+
+| Week of Project | Event |
+| --- | --- |
+| -5 | Nominate a release team |
+| -4 | Notify teams of upcoming release |
+| 01 | Release project start |
+| 04 | Toolchain and transition freeze |
+| 05 | Package set finalisation |
+| 06 | Initial testing |
+| 08 | Updates freeze |
+| 08 | Breaking changes to staging |
+| 08 | Ungraft master branch |
+| 09 | Bugs and documentation focus |
+| 09 | Branch and tag release branch |
+| 09 | Testing and hard freeze |
+| 10 | Release candidate |
+| 12 | Final release |
+| 13 | Staging merged to master |
+| 14 | Release retrospective |
+| 15+| Relax - it's done! |
+
+### 1. Nominate a release team
+Nominate a release team with two Release Managers (1 is the previous RM), and
+up to 4 other people who will work on the release. Put out a call for a Release
+Advocate who can be anyone in the Guix community who's willing.
+
+### 2. Notify teams of upcoming release
+Make sure all teams are aware of the upcoming release. This gives them 4 weeks
+to undertake any large transitions or major changes.
+
+### 3. Release project start
+Start the project with weekly updates to guix-dev and regular meetings of the
+release team. Encourage participation in testing and identifying bugs from
+the community.
+
+### 4. Toolchain and transition freeze
+No major changes to toolchains (e.g. gcc-toolchain, rust-1.xx) or runtimes
+(e.g. java). There should be no changes that will cause major transitions.
+
+Debian defines a transition as one where a change in one package causes changes
+in another, the most common being a library. This isn't suitable for Guix since
+any change in an input causes a change in another package. Nonetheless, any
+change that alters a significant number of packages should be carefully
+considered and updates that cause other packages to break should be rejected.
+
+No alterations to the Guix daemon or modules are accepted after this point.
+Packages and services in the 'minimal' package set should not be altered.
+
+### 5. Package set finalisation
+Specify the package sets for this release. Identify all packages and their
+inputs so that a full manifest for the release is created.
+
+### 6. Initial testing
+An initial testing sprint to look at packages, services, install media and
+upgrade testing. This should identify:
+
+* packages or services that may need to be removed because they fail on a
+ primary architecture
+* packages and services in the package sets install and can be used
+* installation artifacts can be created and used
+* example system definitions can be used
+* system upgrades
+
+A build failure of a package or service will result in it being identified for
+removal. A build failure of a package or service that's in a package set will
+be marked as a blocker for the release.
+
+### 7. Updates freeze
+Major package updates are frozen on 'master' as the focus is on fixing any
+blocking packages. Security updates still go to 'master'.
+
+### 8. Breaking changes to staging
+To avoid a period of time where teams can't commit breaking changes, these are
+sent to a new 'staging' branch, rather than directly to master. The master
+branch slows down from this week.
+
+This concept comes from the Nix project where they flow big changes into a
+staging branch while they do release stabilisation to prevent big flows of
+breaking changes into master which broke one of their releases [^7].
+
+Team branches can still be folded into the release branch as long as changes are
+minor package upgrades.
+
+### 9. Ungraft master branch
+Guix master is ungrafted to minimise the difference with users of the release
+initial 'guix pull' experience.
+
+### 10. Bugs and documentation focus
+The master branch should be quiet at this point as everyone should focus on
+testing and resolving any bugs. New documentation can also be done.
+
+### 11. Branch and tag release branch
+The master branch is tagged and a new release branch is created.
+
+* master branch: security only.
+* release branch: security updates as normal. Only RC blocking bugs.
+
+Only security updates go to the master branch from week 9->13. All other
+changes stay in a team branch or go to the `staging` branch. The focus on the
+release branch is to stabilise so only RC bugs should be pushed.
+
+### 12. Testing and Hard Freeze
+RC bugs and issues should be solved for the release branch.
+
+Only changes that will fix a non-building package, or a bug in a package are
+allowed. Ideally avoid new upstream versions, but it's acceptable to use a new
+minor upstream version to solve a bug.
+
+Any non-building packages are removed.
+
+### 13. Release candidate
+Release artifacts are created for the release candidate. There's a final 2
+weeks of testing with these artifacts. If there are no release blocking bugs
+discovered then the releas uses these artifacts. If bugs are found/fixed then
+release artifacts are regenerated as needed.
+
+### 14. Final release
+Final release is announced and new release artifacts are published.
+
+### 15. Staging merged to master
+If there were any breaking changes placed onto the `staging` branch then these
+can be merged into the `master` branch at this point. The master branch then
+continues as normal.
+
+### 16. Release retrospective
+A retrospective is undertaken by the release team to understand how the release
+process can be improved to make it more reliable for users and easier/efficient
+for developers.
+
+### 17. Relax!
+The release has been cut, everyone is now excited, and hopefully all is well.
+Take some time off from release work! There's some time built-in here to
+relax and get back to other hacking before it's time to start again with the
+next release.
+
+---
+
+[^1]: https://guix.gnu.org/en/blog/2022/gnu-guix-1.4.0-released/
+
+[^2]: Examples of distributions that have cadences for different users and screnarios
+ are Nix's stable branch, OpenSUSE's SlowRoll
This message was truncated. Download the full message here.
S
S
Steve George wrote on 9 May 05:53 -0700
GCD005: Regular and efficient releases
(address . guix-devel@gnu.org)(address . 78332@debbugs.gnu.org)
zv55w7njr4ua3ammywzwenjrqh7pzmzxjk42l5lqu3jnsvwi3p@xw43bgpndwdz
Hi all,

It's been ~2.5 years since the last Guix release, which led me to think we should do another one! Initially, I was just going to see if anyone wanted to create a release project. But, before I knew it I was writing a GCD! ...

Below you'll find a proposal for moving to a regular release cycle.

Thanks to Andreas Enge, Ludovic Courtès and Efraim Flashner for their initial comments and insights. They've agreed to sponsor it - which means they agree with the general direction (but not necessarily with all aspects), and will help to 'garden' the discussion to move us towards a consensus on whether it's a good proposal.

This is a **draft** submission so I look forward to your consideration of it, thoughts and comments.

Thanks,

Steve / Futurile
Attachment: file
Z
Re: [bug#78332] [PATCH 1/1] 005-regular-releases: Initial draft of GCD005 'Regular and efficient releases'.
(name . Steve George)(address . steve@futurile.net)(address . 78332@debbugs.gnu.org)
87msbmj5hp.fsf@z572.online
Steve George <steve@futurile.net> writes:

Toggle quote (5 lines)
> +
> +### 8. Breaking changes to staging
> +To avoid a period of time where teams can't commit breaking changes, these are
> +sent to a new 'staging' branch, rather than directly to master. The master

I think we may need to change the name. We used the name staging before
switching to the team-based process. If we reuse this name, it may cause
confusion for later users when searching for information.
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEfr6klGDOXiwIdX/bO1qpk+Gi3/AFAmgd/nIACgkQO1qpk+Gi
3/DfEA//cYo/iaUbPaIyCh8eHRORCgAkKrvvf6trwjpdXS53LIwZuLczrekXV97s
v+E7g6pf/aKwVDzRCY/EbraYAZFOL3faKBlDrCPBt6e1yJviUk+qFUoaqSpSuK63
fx8ulWstSf9htyWsNosF49opGKRlQGVcka/fufcxYurvJXTFdF0PSGwTOI5G0Dll
rOI1a6ff4EBL8Kav+Ry1rtfZFzsXcscBdRfSihCDdvLwWvr+EU+mSRKWs1xzMiN2
AlkwfL0mTTkkuU/kvjNKx5fuJkrEihD763dKlfFZS82ncxk6NGWiGSjoKehDNFB0
H046v6Mzr0kteJB3sjEpp7R2CHON03AnqViLZsGteCKkjLYBs5EQVw8seNbCAmPg
8wxsFdNJ/TDXiOfjNEcrDV+48yLMe7W/XEnjNjePIIeNSTvYvRr6hJugJGbtYcAi
C8hfl0VMDYJszh471IkSqPO3ieHqpxqhwSy8bPXaN58O4stqvfmsqC1IR74jm6+L
WcFyJVJEDDEP/sj1nPLrZYVX6AnN1J1z/n9ic9dIZsJS0sgHr4hW8lcQEc8ZtHbY
KZXXDKgpVMZ+oGAgNp//oUQOFl3gVEN36eztrcX8F5IqFyAIftCTL21pAhgqJQNh
i05cl/eoMs6oYvTKf83iUiaFhNdUBU3pOfLEHZAOJrwKfZPdmts=
=ABA6
-----END PGP SIGNATURE-----

S
S
Steve George wrote on 9 May 07:01 -0700
(name . Z572)(address . z572@z572.online)(address . 78332@debbugs.gnu.org)
gqowz5fh4txxxaubcttltsao6atw7u6ryedp2aorsnyjmsios5@hqn5shp2fqfj
On 9 May, Z572 wrote:
Toggle quote (12 lines)
> Steve George <steve@futurile.net> writes:
>
> > +
> > +### 8. Breaking changes to staging
> > +To avoid a period of time where teams can't commit breaking changes, these are
> > +sent to a new 'staging' branch, rather than directly to master. The master
>
> I think we may need to change the name. We used the name staging before
> switching to the team-based process. If we reuse this name, it may cause
> confusion for later users when searching for information.
>

No problem, is there something you would favour?

If not, what about `next-master` to indicate that it's the next master? If we think that's too generic we could give it a time-based date `202509-next-master` - meaning it will be merged back in during September 2025.
-----BEGIN PGP SIGNATURE-----

iHUEABYKAB0WIQQIB6x23+hDA21fWHn1HUoW3O5vpwUCaB4KoAAKCRD1HUoW3O5v
p1qbAP0cpOdajjsn7DuEYqqmJjPdWUKYtt8WnK9TRVp36mwqOQEA/lTRGGle4Z9v
1CPjRUWBwoTzKOZyJZu5s/I+7wKk/gg=
=ldNZ
-----END PGP SIGNATURE-----


R
R
Rutherther wrote on 9 May 07:02 -0700
Re: GCD005: Regular and efficient releases
(address . 78332@debbugs.gnu.org)
87bjs1x4p9.fsf@ditigal.xyz
Hi Steve,

thanks for this. I have a few notes left in the text, but generally I
like this.

I think the proposal is missing the version numbering that will be used,
like, let's say the releases are x.y.z, is y increased? Or should the
numbering going to be switched to something like yyyy.mm?

Also, should the GCD document what happens if something goes horribly
wrong after the release is made, ie. a new minor release created to
mitigate the issue?

Steve George <steve@futurile.net> writes:

Toggle quote (51 lines)
> Hi all,
>
> It's been ~2.5 years since the last Guix release, which led me to think we should do another one! Initially, I was just going to see if anyone wanted to create a release project. But, before I knew it I was writing a GCD! ...
>
> Below you'll find a proposal for moving to a regular release cycle.
>
> Thanks to Andreas Enge, Ludovic Courtès and Efraim Flashner for their initial comments and insights. They've agreed to sponsor it - which means they agree with the general direction (but not necessarily with all aspects), and will help to 'garden' the discussion to move us towards a consensus on whether it's a good proposal.
>
> This is a **draft** submission so I look forward to your consideration of it, thoughts and comments.
>
> Thanks,
>
> Steve / Futurile
> title: Regular and efficient releases
> id: 005
> status: draft
> discussion: https://issues.guix.gnu.org/78332
> authors: Steve George
> sponsors: Andreas Enge, Ludovic Courtès, Efraim Flashner
> date: <date when the discussion period starts>
> SPDX-License-Identifier: CC-BY-SA-4.0 OR GFDL-1.3-no-invariants-or-later
> ---
>
> # Summary
>
> Guix doesn't have regular release cycle which has led to infrequent new
> releases. Sporadic releases are detrimental for our users, contributors and
> the project. This GCD proposes we implement an annual release cadence and
> simplify the release process to make releases easier.
>
> The project currently releases new versions of Guix on an ad hoc frequency.
> The 1.4.0 release happened in December 2022 [^1], which is almost 2.5 years
> ago, at the time of writing.
>
> The weaknesses in this release strategy are:
>
> 1. No clarity on when the next Guix release is.
> 2. Releases are complex and toil for developers.
> 3. Rolling updates aren't suitable for all users.
>
> This GCD proposes the following combined solution:
>
> 1. Regular releases: switch to a time-based release of Guix every year.
> 2. Efficient releases: use *package sets* and *supported architectures* to
> reduce the scope of work required to create a Guix release.
>
> The benefits will be:
>
> 1. New installations of Guix will be better because installation media and
> manuals will be up to date, and the initial 'guix pull' will be faster.

The initial pull won't be faster, the pull is so slow because there is
no checkout and no commits checked for auth, not because the iso is so
old. No matter the age of iso, the full clone has to be made and authenticated.
If there was a checkout in the cache, it would be faster, the more up to
date it is, the faster the pull is. Additionally what would greatly
improve the experience is if this checkout has been copied to the
installed system.
But that's not related to the releases themselves, but to how the iso is made.

Toggle quote (41 lines)
> 2. Package installation will improve for all users. Packages will be ungrafted
> during each release cycle.
> 3. Package quality will improve for all users, because regular releases will
> provide a cadence for focusing on our quality.
> 4. A regular cadence for promoting the project to potential users. Helping us
> to inform more people about the benefits of using GNU Guix!
> 5. A regular release cycle is a rallying point for our contributors giving them a
> consistent calendar of when to focus on releases versus other hacking.
>
> Adding a slower-moving branch akin to Nix's stable could be an eventual goal as
> it would increase Guix's suitability for some users and use-cases [^2]. However,
> this GCD only sets out to implement regular releases which is a substantial
> change that would be a big improvement for our users.
>
>
> # Motivation
>
> Releases are important for any Free Software project because they update the
> user experience and are a focal point for excitement [^3]. Regular releases
> help us to improve the quality of our software by bringing focus, and
> exercising regular usage scenarios (e.g. testing the installer).
>
> The majority of distributions follow time-based releases, six months is a
> common cycle time. For further comparison see the research on the
> [release strategies of distributions] (https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt)
> . A summary is:
>
> - NixOS: releases every six months (May/November), both rolling release and
> slower stable branch.
> - OpenSUSE: rolling release, slow-roll release and fixed releases.
> - Ubuntu: every six months, with 9 months maintenance. LTS releases every
> 2 years.
> - Debian: Every 2 years (not time fixed), with about six months of package
> updates freeze before the release while bugs are ironed out.
>
> As a rolling release Guix immediately provides the latest improvements to
> users. Consequently, it could be argued that releases are unnecessary.
> However, they provide a focal point for the project to undertake additional
> testing and stabilisation across the repository. They also ensure we update
> installation media, documentation, themes and web site.

I think releases are also needed for other distro package managers to
update. While users are encouraged to use the guix-install.sh script,
some will end up installing with their system's package manager. Maybe
it would be good to mention that?

Toggle quote (23 lines)
>
> A specific issue caused by irregular releases is that new users/installs face a
> significant first "guix pull". This provides a poor initial user experience,
> and in some cases may even deter users [^4]. Additionally, it requires the
> project to keep old substitutes on our servers.
>
> Regular releases are also good for casual users because they provide an
> opportunity for us to promote new features and improvements. For prospective
> users promotional activity about the release means they are more likely to hear
> about capabilities that will attract them to experiment with Guix.
>
> Many desktop distributions release every six months to align with the major
> desktop environments (GNOME/KDE) who release two or three times a year. This is
> why Nix (May/November) and Ubuntu (April/October) align their releases.
>
> Since Guix is used [extensively as a desktop] (https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-1/)
> it would make sense to align with these upstream releases. However, given that
> Guix is a volunteer project that doesn't have the practise of releasing it's
> unrealistic to move to two releases a year. Something along these lines could
> be a future goal [^5].
>
> This GCD proposes an annual release cycle, with releases **in May**.

Is May smart if GNOME is to be targeted? I think NixOS really struggles
to make the GNOME updates in time. And there is less people working on
it on Guix as far as I know. Gnome is like two releases back? If we
wanted to include GNOME, wouldn't June make more sense to give an extra month?

Or for a better approach: is there a specific list of packages that
would be targeted so it can be used for the decision?

Toggle quote (222 lines)
>
> To move onto this cycle the first release would be a little later: aiming for
> the **November of 2025**, with a short cycle to release in May 2026.
>
>
> ## Package Sets
>
> There are currently over 30,000 packages in the archive, it's unrealistic for
> all packages to receive the same amount of QA effort for a release.
>
> Many other distributions focus attention on the critical parts of their
> repository by identifying those packages that are required for a particular
> user-case. For example, Arch Linux limits their efforts to a specific
> repository (called "main"). Ubuntu identifies various seeds for specific
> use-cases which determines their maintained packages; other packages outside
> these sets do not receive security updates.
>
> Guix is both a package manager that can be hosted on other Linux distributions,
> and a Linux distribution. Limiting the range of packages that receive attention
> is consequently more complicated. Guix already has manifests to track which
> packages are used by [Guix System's installer](https://git.savannah.gnu.org/cgit/guix.git/tree/etc/manifests/release.scm)
> , so this proposal extends that concept.
>
> For this proposal Guix would identify key package sets which would receive the
> most attention for QA'ing a release.
>
> The package sets would be:
>
> * minimal: packages required to boot and install a minimal Guix or Guix System
> install. This would include the guix daemon, kernels, boot loaders,
> file-systems and minimal utilities.
> * standard: packages that create a core installation for all other uses.
> * desktop: provides the packages necessary for a desktop. This would include
> things like X11/Wayland, desktop environments, key applications and themes.
> * server: provides packages and services for a server. This would include
> standard server packages and services.
> * hosted: provides packages and services which are necessary in hosted usage.
>
> Guix would still make all packages and services part of a release (the entire
> archive), but only those in the `package sets` could block a release due to a
> significant bug. The goal would be for this to be as small a set of packages
> as reasonably possible. It would mean that developers could focus on the
> critical packages and services during a release. As an example, this would
> mean that a major issue in the Linux kernel could block a release, but not an
> issue in a game.
>
>
> ## Platforms and Architecture tiers
>
> Guix is built and maintained on multiple different architectures, and two
> kernels (Linux, GNU Hurd). As the goal of the project is to maximise user
> freedom this variety is significant and is a key motivator for developers.
>
> However, with limited resources (developer and CI) we want to make it as
> efficient as possible to create a release. The more toil involved in a release
> the less likely developers are to work on it.
>
> The [2025 Guix User Survey](https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-2/)
> showed that 98% of users were on x86_64 and 19% on AArch64. Consequently, the
> proposal is the following tiers:
>
> - Primary architectures:
> - Architectures: x86_64, AArch64
> - Kernel: Linux
> - Coverage: all packages and services that are not explicitly platform
> specific must work to be included in the archive.
> - Package status: package updates should build for this architecture. If a
> package update is broken it must not be pushed to users (e.g. master).
> - Security: all packages that are maintained upstream receive updates
>
> - Alternative architectures
> - Architectures: all others
> - Kernel: Linux, Hurd
> - Coverage: all packages and services that are not explicitly platform
> specific may build
> - Package status: package updates should work for this architecture.
> Updates that do not build for this architecure, but do build for a primary
> architecture may be pushed to users.
> - Security: no commitment to providing security updates for this architecture.
>
> Packages or services that do not build for the Primary architectures as part of
> a release would be removed from the archive using Guix's deprecation policy.
>
>
> ## Release artifacts
>
> Using the primary architecture tier and the package sets would involve creating
> the following release artifacts:
>
> - GNU Guix System ISO image
> - GNU Guix System QCOW2 image
> - GNU Guix installer
>
> Again in an effort to reduce developer toil, additional release artifacts could
> be created but would not be part of the formal release testing and errors would
> not block a release.
>
>
> ## Release team and project
>
> A regular release cycle should galvanise all Guix developers to work on our
> releases. But, to ensure there are sufficient people involved a call will be
> put out to create a specific release team for each release project. We would
> expect the final release team to be around four-six members. The release team
> will work together to fix issues and test the various release artifacts. The
> expectation is that the release projects will be as short as possible, around
> a 12 week commitment with each team member having a few hours a week to take
> part.
>
> To manage the release it's proposed that each release will have a Release Manager
> role. The role of the Release Manager is to:
>
> - co-ordinate the release project
> - communicate with the release team and wider developers status and blockers
> - arbitrate changes to release blocking bugs, package sets and release
> artifacts
> - influence and assist teams to resolve problems
> - define the release artifacts and create them
> - encourage and excite **everyone to create and test the release**
>
> The Release Management role is likely to require the most effort, so it will
> be rotated and consist of two people from the release team. For each release
> there would be a primary person and a secondary person in the role. The
> primary person is new to the role. The secondary person has previously done it
> and is mentoring the new person. The impact of this is that each new release
> manager is agreeing to take responsibility during two release cycles.
> This system is modelled on the [Nix release management](https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt/nix-release-mgmt.md)
> approach.
>
> One of the release team will take on the role of Release Advocate [^6]. They
> will take responsibility for preparing the release announcement and
> coordinating the creation of content to promote the new release (e.g. web site)
> This role can be done by any member of the Guix community who has sufficient
> interest.
>
> The final release team is:
>
> - a new Release Manager
> - a returning Release Manager
> - up to 4 other members, one of whom acts as the Release Advocate
>
> The Release Managers of each release will create and communicate a release
> project plan setting out the stages and dates for each stage. To try and
> galvanise the Guix development team to focus on the release it's envisioned
> that a release project will be about 12 weeks. See Appendix 1: Release Project
> Time-line for an example.
>
> In order to improve knowledge transfer and reduce the toil of doing releases
> the Release Managers for a release will document the release process. There is
> inspiration for this in [NixOS's release wiki](https://nixos.github.io/release-wiki/Home.html)
> and we already have detailed [release documentation](https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/doc/release.org)
> .
>
>
> # Cost of Reverting
>
> If regular releases were not successful then the project would switch back to
> irregular releases. There would be no impact for exiting users as they will
> be tracking the rolling release's master branch.
>
> If the project is able to successfully undertake regular releases then over
> time it may be possible to undertake full releases every six months or some
> other release cadence.
>
>
> # Drawbacks and open issues
>
> There's no particular drawback to attempting regular release. It should be
> noted that the project is entirely dependent on volunteers so it may be that
> contributors don't have enough time available to achieve regular releases. If
> that's the case we would revert back to irregular releases.
>
> There are various improvements that could be made to this process over time,
> but no known issues.
>
>
> # Appendix 1: Release Project Time-line
>
> To illustrate the major steps of a release project this is a rough time-line.
> The aim is for a 12 week active release project, with the first one using 16
> weeks in total to give teams time to prepare.
>
> The current outline builds from our current [release document](https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/doc/release.org)
>
> | Week of Project | Event |
> | --- | --- |
> | -5 | Nominate a release team |
> | -4 | Notify teams of upcoming release |
> | 01 | Release project start |
> | 04 | Toolchain and transition freeze |
> | 05 | Package set finalisation |
> | 06 | Initial testing |
> | 08 | Updates freeze |
> | 08 | Breaking changes to staging |
> | 08 | Ungraft master branch |
> | 09 | Bugs and documentation focus |
> | 09 | Branch and tag release branch |
> | 09 | Testing and hard freeze |
> | 10 | Release candidate |
> | 12 | Final release |
> | 13 | Staging merged to master |
> | 14 | Release retrospective |
> | 15+| Relax - it's done! |
>
> ### 1. Nominate a release team
> Nominate a release team with two Release Managers (1 is the previous RM), and
> up to 4 other people who will work on the release. Put out a call for a Release
> Advocate who can be anyone in the Guix community who's willing.
>
> ### 2. Notify teams of upcoming release
> Make sure all teams are aware of the upcoming release. This gives them 4 weeks
> to undertake any large transitions or major changes.
>
> ### 3. Release project start
> Start the project with weekly updates to guix-dev and regular meetings of the
> release team. Encourage participation in testing and identifying bugs from
> the community.
>
> ### 4. Toolchain and transition freeze
> No major changes to toolchains (e.g. gcc-toolchain, rust-1.xx) or runtimes
> (e.g. java). There should be no changes that will cause major transitions.

So total of 9 week freeze? Isn't that too long for users to not receive
those updates if they were ready?

I think that should be at least mentioned in the drawbacks, even if most
people won't consider it a major drawback, it sounds like a drawback to me.

But I suppose it will still be possible to commit those changes, you
just won't be able to switch the default toolchain. Though Rust, Python
etc. currently don't really support more than one version for building
other packages, at least not well.

Toggle quote (9 lines)
>
> Debian defines a transition as one where a change in one package causes changes
> in another, the most common being a library. This isn't suitable for Guix since
> any change in an input causes a change in another package. Nonetheless, any
> change that alters a significant number of packages should be carefully
> considered and updates that cause other packages to break should be rejected.
>
> No alterations to the Guix daemon or modules are accepted after this point.

What modules exactly, all? And what kind of alterations? I suppose some
changes will still be possible, like adding a new package or service,
no?
I think it doesn't make sense to completely block alterations to the
daemon, ie. if there was a bug or security issue.

Toggle quote (13 lines)
> Packages and services in the 'minimal' package set should not be altered.
>
> ### 5. Package set finalisation
> Specify the package sets for this release. Identify all packages and their
> inputs so that a full manifest for the release is created.
>
> ### 6. Initial testing
> An initial testing sprint to look at packages, services, install media and
> upgrade testing. This should identify:
>
> * packages or services that may need to be removed because they fail on a
> primary architecture

So hypothetically, if a package/service worked on non-primary
architecture or one primary architecture, but not the other, it will be
removed, completely? That doesn't sound right. Am I misunderstanding
here? Where is the package removed from, the guix repository or just
from the package set that should be passing for the release?
Either way, like this it conflicts with the earlier 'packages and
services
This message was truncated. Download the full message here.
A
A
Andreas Enge wrote on 9 May 07:31 -0700
(name . Rutherther)(address . rutherther@ditigal.xyz)
aB4R3k_NrIWxN-kh@jurong
Hello,

probably I should not reply quickly every time someone writes to this GCD
so as not to obstruct a healthy discussion :)

The timeline should probably be discussed and fixed to some concrete
values during the discussion period, as this is an important detail;
with a balance between moving quickly (very desirable) and what we can
effectively achieve. My fear is rather that the timeline is already
too ambitious :) Just to put things into perspective, we have a backlog
of team branches to be merged right now of about 3 months.

So then not merging to master for 5 weeks or so would almost not be
noticeable...

Andreas
G
G
Greg Hogan wrote on 9 May 08:35 -0700
(name . Steve George)(address . steve@futurile.net)
CA+3U0Zm54=1rCSOjum0aBV7pHgaUgJd7Vb-9j3UBEa3pJ4Vjhw@mail.gmail.com
On Fri, May 9, 2025 at 8:54 AM Steve George <steve@futurile.net> wrote:
Toggle quote (1 lines)
>
[...]
Toggle quote (4 lines)
> Adding a slower-moving branch akin to Nix's stable could be an eventual goal as
> it would increase Guix's suitability for some users and use-cases [^2]. However,
> this GCD only sets out to implement regular releases which is a substantial
> change that would be a big improvement for our users.
[...]

This is a proposal for a beautiful release process. The process is
detailed and well thought out, but without stability these beautiful
releases quickly decay to our status quo. And I agree that we do not
have the capacity to maintain two branches (though it could solve our
naming issue).

1) It seems a waste to synchronize around a point-in-time beautiful
release only to have this break on the user's first pull. And builds
will quickly break when the freeze is lifted and the backlog
unblocked. The alternative to a pull is to forego security updates for
a year until the next release.

2) The project is currently unable to keep up with the teams workflow,
and now we are introducing an additional, quite long pause into the
calendar.

3) Package cleanup is a problem that I believe we are afraid to
address. I agree that we should not have package "ownership", but
perhaps "sponsorship" or (to borrow from this GCD) "advocate" with
notifications when builds break on CI. I believe this proposal is too
aggressive in pruning packages without considering alternatives (in
another GCD).

I think we should greatly reduce the scope and initially try (as I
noted in December buried in the "On the quest for a new release model"
discussion) creating a release team which would:
1) operate as any other team
2) be responsible only for building and improving release artifacts
3) operate with a cadence sufficient to build and retain this
expertise (which would currently be one cycle of the queue, but
ideally every ~3-4 months)

By using the teams queue everyone will know when the release is
coming, and whether their branch will be merged before or after the
next release.

Greg
Z
Re: [bug#78332] [PATCH 1/1] 005-regular-releases: Initial draft of GCD005 'Regular and efficient releases'.
(name . Steve George)(address . steve@futurile.net)(address . 78332@debbugs.gnu.org)
87ecwxkbaw.fsf@z572.online
Steve George <steve@futurile.net> writes:

Toggle quote (20 lines)
> On 9 May, Z572 wrote:
>> Steve George <steve@futurile.net> writes:
>>
>> > +
>> > +### 8. Breaking changes to staging
>> > +To avoid a period of time where teams can't commit breaking changes, these are
>> > +sent to a new 'staging' branch, rather than directly to master. The master
>>
>> I think we may need to change the name. We used the name staging before
>> switching to the team-based process. If we reuse this name, it may cause
>> confusion for later users when searching for information.
>>
>
> No problem, is there something you would favour?
>
> If not, what about `next-master` to indicate that it's the next
> master? If we think that's too generic we could give it a time-based
> date `202509-next-master` - meaning it will be merged back in during
> September 2025.

I don't have any idea, 202509-next-master might be good, I don't know
what others think
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEfr6klGDOXiwIdX/bO1qpk+Gi3/AFAmgeKscACgkQO1qpk+Gi
3/BMOxAArqq/sgyKGq2EAJORvj8wAmHP0UZaQpRCXLXhKOaKJ1gdGToegbaM46PC
YZRx/FGHuVqyWGwEJRK/veEucAWw08zrtQURgtERkGyrYHPWRYbrhLaSp0m8qIDt
uIc15UseErWTOBYn7/9q28b8iK7t3BcU7sH/71bNgLq/aZqfgF5P7x2oe1vLxJr/
XKLj9Ujk6EqJESDt7JbcANqleIrW4ASvxbgXL12CDvY9ylctEl3E01HAHYdRRiBS
Zdbp4sD82vB47+857thScxE5dLQn6DhsqamkJ5UKpYtX8y9UcmMCdjMls+Gx9KhK
KbMk35vC/jbrpKku0lZ2PRm9FKd2jBtCzRyR85L3B+A8ukGhaGDmL8gLSIJc+gvp
NTSDZJcMtcUg4nVtkkqDfoltjzQzUklYDFG3cgsV7Uamt/wCqLLopHL99BaIeEYJ
FkqiwI6RZkqeTXKvnFUpvP252ihjSUfcNM4ie92idfCdOFuNa7obd5yowchfUOgf
uKJ5LmNJ7BpJyt4vwimy5CMqiB5T6xt8uVrn5qOMzILYhslt5tj6w6uPI3oS2se9
1z/Jcwp7+m/MMHbeRyD7EWQi5ZfC2Fda02LQh6VmgAGI/bERutYft+Cnr9kyFksq
vqlrjs2gqzkf1bQixuC7iPlJBDaT38wvNUt1oFz6HNwFCfjGG/Q=
=9wAj
-----END PGP SIGNATURE-----

V
V
Vagrant Cascadian wrote on 9 May 12:48 -0700
Re: GCD005: Regular and efficient releases
(address . 78332@debbugs.gnu.org)
8734ddpnu7.fsf@wireframe
On 2025-05-09, Steve George wrote:
Toggle quote (5 lines)
> It's been ~2.5 years since the last Guix release, which led me to
> think we should do another one! Initially, I was just going to see if
> anyone wanted to create a release project. But, before I knew it I was
> writing a GCD! ...

Thanks for nudging this forward! :)

Toggle quote (53 lines)
> # Summary
>
> Guix doesn't have regular release cycle which has led to infrequent new
> releases. Sporadic releases are detrimental for our users, contributors and
> the project. This GCD proposes we implement an annual release cadence and
> simplify the release process to make releases easier.
>
> The project currently releases new versions of Guix on an ad hoc frequency.
> The 1.4.0 release happened in December 2022 [^1], which is almost 2.5 years
> ago, at the time of writing.
>
> The weaknesses in this release strategy are:
>
> 1. No clarity on when the next Guix release is.
> 2. Releases are complex and toil for developers.
> 3. Rolling updates aren't suitable for all users.
>
> This GCD proposes the following combined solution:
>
> 1. Regular releases: switch to a time-based release of Guix every year.
> 2. Efficient releases: use *package sets* and *supported architectures* to
> reduce the scope of work required to create a Guix release.
>
> The benefits will be:
>
> 1. New installations of Guix will be better because installation media and
> manuals will be up to date, and the initial 'guix pull' will be faster.
> 2. Package installation will improve for all users. Packages will be ungrafted
> during each release cycle.
> 3. Package quality will improve for all users, because regular releases will
> provide a cadence for focusing on our quality.
> 4. A regular cadence for promoting the project to potential users. Helping us
> to inform more people about the benefits of using GNU Guix!
> 5. A regular release cycle is a rallying point for our contributors giving them a
> consistent calendar of when to focus on releases versus other hacking.
>
> Adding a slower-moving branch akin to Nix's stable could be an eventual goal as
> it would increase Guix's suitability for some users and use-cases [^2]. However,
> this GCD only sets out to implement regular releases which is a substantial
> change that would be a big improvement for our users.
>
>
> # Motivation
>
> Releases are important for any Free Software project because they update the
> user experience and are a focal point for excitement [^3]. Regular releases
> help us to improve the quality of our software by bringing focus, and
> exercising regular usage scenarios (e.g. testing the installer).
>
> The majority of distributions follow time-based releases, six months is a
> common cycle time. For further comparison see the research on the
> [release strategies of distributions] (https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt)
> . A summary is:
...
Toggle quote (3 lines)
> - Debian: Every 2 years (not time fixed), with about six months of package
> updates freeze before the release while bugs are ironed out.

Maybe more like 4 or 5 months, but who's counting? :)

Notably, Debian has time based freezes, and releases "quando paratus
est" ... e.g. when it is ready (e.g. no major blockers to release).

I think this is a more realistic and honest model for a volunteer
project than trying to make a time-based "release", as you can predict
or decree when you are going to start the process, but you cannot
reliably predict when you will finish.


Toggle quote (3 lines)
> Many desktop distributions release every six months to align with the major
> desktop environments (GNOME/KDE) who release two or three times a year. This is
> why Nix (May/November) and Ubuntu (April/October) align their releases.
...
Toggle quote (5 lines)
> This GCD proposes an annual release cycle, with releases **in May**.
>
> To move onto this cycle the first release would be a little later: aiming for
> the **November of 2025**, with a short cycle to release in May 2026.

For what it is worth, May would be awful timing for getting guix into
Debian stable releases, which tend to approach a hard freeze around that
time of year, so Debian stable will always end up effectively (at least)
one release behind... but you cannot please everybody. :/

A yearly release cycle would at least allow Debian to provide backports
of guix more reliably, at least...

Of course, we are about to see the second Debian release since the
release of guix 1.4.0, so this proposal would still be a huge
improvement!

Toggle quote (1 lines)
> ## Package Sets
...
Toggle quote (15 lines)
> Guix is both a package manager that can be hosted on other Linux distributions,
> and a Linux distribution. Limiting the range of packages that receive attention
> is consequently more complicated. Guix already has manifests to track which
> packages are used by [Guix System's installer](https://git.savannah.gnu.org/cgit/guix.git/tree/etc/manifests/release.scm)
> , so this proposal extends that concept.
>
> For this proposal Guix would identify key package sets which would receive the
> most attention for QA'ing a release.
>
> The package sets would be:
>
> * minimal: packages required to boot and install a minimal Guix or Guix System
> install. This would include the guix daemon, kernels, boot loaders,
> file-systems and minimal utilities.

This seems a reasonable broad-strokes starting point, nice!


Toggle quote (3 lines)
> * standard: packages that create a core installation for all other
> uses.

I fail to see a distinction between minimal and standard, perhaps due to
"core installation", so this perhaps could use a bit more elaboration.


Toggle quote (3 lines)
> * desktop: provides the packages necessary for a desktop. This would include
> things like X11/Wayland, desktop environments, key applications and themes.

It seems like all desktop environments is awfully broad, as there are
some unusual or niche desktop environments in Guix, although Guix users
maybe also tend to fill certain niches more than the general
population. Still, I suspect this should maybe be narrowed down to a
more specific set...


Toggle quote (3 lines)
> * server: provides packages and services for a server. This would include
> standard server packages and services.

What are "standard server packages and services" ?


Toggle quote (2 lines)
> * hosted: provides packages and services which are necessary in hosted usage.

What are these?


Toggle quote (5 lines)
> ## Platforms and Architecture tiers
>
> Guix is built and maintained on multiple different architectures, and two
> kernels (Linux, GNU Hurd). As the goal of the project is to maximise user
> freedom this variety is significant and is a key motivator for developers.
...
Toggle quote (22 lines)
> - Primary architectures:
> - Architectures: x86_64, AArch64
> - Kernel: Linux
> - Coverage: all packages and services that are not explicitly platform
> specific must work to be included in the archive.
> - Package status: package updates should build for this architecture. If a
> package update is broken it must not be pushed to users (e.g. master).
> - Security: all packages that are maintained upstream receive updates
>
> - Alternative architectures
> - Architectures: all others
> - Kernel: Linux, Hurd
> - Coverage: all packages and services that are not explicitly platform
> specific may build
> - Package status: package updates should work for this architecture.
> Updates that do not build for this architecure, but do build for a primary
> architecture may be pushed to users.
> - Security: no commitment to providing security updates for this architecture.
>
> Packages or services that do not build for the Primary architectures as part of
> a release would be removed from the archive using Guix's deprecation policy.

Sounds reasonable.


Toggle quote (13 lines)
> ## Release artifacts
>
> Using the primary architecture tier and the package sets would involve creating
> the following release artifacts:
>
> - GNU Guix System ISO image
> - GNU Guix System QCOW2 image
> - GNU Guix installer
>
> Again in an effort to reduce developer toil, additional release artifacts could
> be created but would not be part of the formal release testing and errors would
> not block a release.

Do we currently have all these for x86_64-linux and aarch64-linux, the
two proposed primary architectures?


Toggle quote (10 lines)
> # Drawbacks and open issues
>
> There's no particular drawback to attempting regular release. It should be
> noted that the project is entirely dependent on volunteers so it may be that
> contributors don't have enough time available to achieve regular releases. If
> that's the case we would revert back to irregular releases.
>
> There are various improvements that could be made to this process over time,
> but no known issues.

I think someone already mentioned freezing master should be noted as a
drawback. I would, in a weird way, second that, despite thinking it is
actually a feature. :)


Toggle quote (6 lines)
> # Appendix 1: Release Project Time-line
>
> To illustrate the major steps of a release project this is a rough time-line.
> The aim is for a 12 week active release project, with the first one using 16
> weeks in total to give teams time to prepare.

Ambitious, but may as well aim high!


Toggle quote (22 lines)
> The current outline builds from our current [release document](https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/doc/release.org)
>
> | Week of Project | Event |
> | --- | --- |
> | -5 | Nominate a release team |
> | -4 | Notify teams of upcoming release |
> | 01 | Release project start |
> | 04 | Toolchain and transition freeze |
> | 05 | Package set finalisation |
> | 06 | Initial testing |
> | 08 | Updates freeze |
> | 08 | Breaking changes to staging |
> | 08 | Ungraft master branch |
> | 09 | Bugs and documentation focus |
> | 09 | Branch and tag release branch |
> | 09 | Testing and hard freeze |
> | 10 | Release candidate |
> | 12 | Final release |
> | 13 | Staging merged to master |
> | 14 | Release retrospective |
> | 15+| Relax - it's done! |

The weeks listed here are -5 indexed, but are described as a 1 indexed
bulleted list, it would be nice to keep them using the same indexing!

Toggle quote (1 lines)
> ### 1. Nominate a release team
(a.k.a. ### -5.)

Toggle quote (3 lines)
> ### 4. Toolchain and transition freeze
> No major changes to toolchains (e.g. gcc-toolchain, rust-1.xx) or runtimes
> (e.g. java). There should be no changes that will cause major transitions.
...
Toggle quote (7 lines)
> No alterations to the Guix daemon or modules are accepted after this point.
> Packages and services in the 'minimal' package set should not be altered.
>
> ### 5. Package set finalisation
> Specify the package sets for this release. Identify all packages and their
> inputs so that a full manifest for the release is created.

It seems like you would need to clarify the toolchain package set the
week prior.


Toggle quote (4 lines)
> ### 7. Updates freeze
> Major package updates are frozen on 'master' as the focus is on fixing any
> blocking packages. Security updates still go to 'master'.

Yay! This should also give the build farms a chance to "catch up" with
builds.


Toggle quote (4 lines)
> ### 8. Breaking changes to staging
> To avoid a period of time where teams can't commit breaking changes, these are
> sent to a new 'staging' branch, rather than directly to master. The master
> branch slows down from this week.
...
Toggle quote (3 lines)
> Team branches can still be folded into the release branch as long as changes are
> minor package upgrades.

If they are minor package upgrades, do you even need a team branch?


Toggle quote (10 lines)
> ### 11. Branch and tag release branch
> The master branch is tagged and a new release branch is created.
>
> * master branch: security only.
> * release branch: security updates as normal. Only RC blocking bugs.
>
> Only security updates go to the master branch from week 9->13. All other
> changes stay in a team branch or go to the `staging` branch. The focus on the
> release branch is to stabilise so only RC bugs should be pushed.

Spell out "RC" at least once in the document, presumably "Release
Critical"?


Toggle quote (4 lines)
> ### 13. Release candidate
> Release artifacts are created for the release candidate. There's a final 2
> weeks of testing with these artifacts.

Not sure how you cram two weeks into week 13! (or... is that week 10?)
:)


Toggle quote (1 lines)
> If there are no release blocking bugs discovered then the releas uses
^^ release ^^
Toggle quote (3 lines)
> these artifacts. If bugs are found/fixed then release artifacts are
> regenerated as needed.

As a downstream packager of Guix for Debian, I would appreciate
(pre)release candidates be included earlier in the process somehow.

Maybe even in sync with a weekly cadence in line with this release
process?

I usually do find bugs in the process of packaging Guix for Debian, and
it would be nice to more easily catch those earlier.


Toggle quote (3 lines)
> ### 14. Final release
> Final release is announced and new release artifacts are published.

Yay!


Thanks again, really glad to see some good thoughts and energy go into
this!


live well,
vagrant
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCaB5cEAAKCRDcUY/If5cW
qmcvAQChBe2Pej7p14rBcXiOdwid8XY6WaWoFEQfQyoVG1xzCQD/Y5VLsm/EUiVe
n6fVTQIqIrqhnT7Q/O15iBhrDtaAEQk=
=njw/
-----END PGP SIGNATURE-----

S
S
Steve George wrote on 9 May 14:24 -0700
(name . Rutherther)(address . rutherther@ditigal.xyz)
l4armgnciaep33iazyscmv4jkxseklak3kusrvaaxfbdhgerih@d36lugi75wbp
Attachment: file
S
S
Steve George wrote on 9 May 14:54 -0700
(name . Greg Hogan)(address . code@greghogan.com)
n27cpfnbzut4hswe6rdp4tncuvy45pnfyhafquwef3xheui46s@nb6zwm5mfibj
Hi Greg,

On 9 May, Greg Hogan wrote:
Toggle quote (13 lines)
> On Fri, May 9, 2025 at 8:54 AM Steve George <steve@futurile.net> wrote:
> >
> [...]
> > Adding a slower-moving branch akin to Nix's stable could be an eventual goal as
> > it would increase Guix's suitability for some users and use-cases [^2]. However,
> > this GCD only sets out to implement regular releases which is a substantial
> > change that would be a big improvement for our users.
> [...]
>
> This is a proposal for a beautiful release process. The process is
> detailed and well thought out, but without stability these beautiful
> releases quickly decay to our status quo.

Thank-you for the kind words - my aim is to be pragmatic about what we can achieve. Taking a concrete step forward allows us to make progress and who knows maybe we can achieve more in subsequent steps.

Toggle quote (9 lines)
> And I agree that we do not
> have the capacity to maintain two branches (though it could solve our
> naming issue).
>
> 1) It seems a waste to synchronize around a point-in-time beautiful
> release only to have this break on the user's first pull. And builds
> will quickly break when the freeze is lifted and the backlog
> unblocked. The alternative to a pull is to forego security updates for
> a year until the next release.
(...)

I hope the initial user experience wouldn't be to "break on the user's first pull", since with annual releases we wouldn't have release artefacts that are 2.5 years out of date. And, we'd also degraft regularly which would be beneficial for all users.

As you can tell I would _love_ us to be able to have a slower moving branch, but purposefully have kept the GCD more limited. For now focusing on the step forward of regular releases.

Toggle quote (5 lines)
> 2) The project is currently unable to keep up with the teams workflow,
> and now we are introducing an additional, quite long pause into the
> calendar.
>

I agree this is a problem, for the purposes of focusing discussion on this GCD lets keep it out of the remit. Perhaps a separate discussion or separate GCD!

Toggle quote (7 lines)
> 3) Package cleanup is a problem that I believe we are afraid to
> address. I agree that we should not have package "ownership", but
> perhaps "sponsorship" or (to borrow from this GCD) "advocate" with
> notifications when builds break on CI. I believe this proposal is too
> aggressive in pruning packages without considering alternatives (in
> another GCD).

Can you point me to the part where you think it's too aggressive? Maybe it's overstating it in some way. In my mind I think the release is a checkpoint where we can use the package sets and the project plan focus to do what we should be doing using our existing process.

Toggle quote (13 lines)
> I think we should greatly reduce the scope and initially try (as I
> noted in December buried in the "On the quest for a new release model"
> discussion) creating a release team which would:
> 1) operate as any other team
> 2) be responsible only for building and improving release artifacts
> 3) operate with a cadence sufficient to build and retain this
> expertise (which would currently be one cycle of the queue, but
> ideally every ~3-4 months)
>
> By using the teams queue everyone will know when the release is
> coming, and whether their branch will be merged before or after the
> next release.

In a way this does create a team in the way you brought up in December [0]. It creates a "release team" for one project and tries to limit the "toil" by keeping the project to 3-4 months of effort. It defines a specific time when a release will happen so everyone knows when it's happening, can get involved and help.

Where it differs is that realistically the release artifacts involve the kernel, core packages, networking, base utils, guix daemon, and graphical environments [1]. I don't think this can be done by 3-4 volunteers, there has to be some co-ordination and energy from all teams - we are a small team after all!

Does that address your concerns?

Steve / Futurile

E
E
Ekaitz Zarraga wrote on 9 May 15:59 -0700
(address . 78332@debbugs.gnu.org)
6599e0d9-ce75-470d-bcbc-511da7aedf66@elenq.tech
Hi Steve,

I agree on the motivation and the analysis, but I want to share a
thought before getting into the specifics.

From the GCD I understand that:

We don't release much because it requires a lot of work to make them,
but your proposal is make more of them, making the process easier,
clearer and more effective, but still requiring some coordination and
work (two things we might lack a lot in our community).

All this because releasing more often is better for:

- a shorter first guix pull
- substitutes maintenance
- promotion (features, excitement, documentation...)

From here I'm trying to take a lazier approach that is to step
backwards a little bit and think about what a release actually is.

And I wonder: what is preventing us from embracing our master branch and
making the whole process fully automatic?

It's not a rhetorical question, I actually mean it.

We already have a News system that lists the major changes since the
previous guix pull and everybody is in master already (that's how this
software works!). Could we just create the release artifacts with an
automatic process that is launched every N days or N commits?

That process would cover the three points properly if our master branch
was more or less stable, which it is or at least we are supposing it is
every single time we `guix pull`, and if we had an up-to-date
documentation, which we should have anyway. Maybe the excitement and
feature communication is not as well covered but we could make some
release notes from the News we have like in any other guix pull, and
point to blog posts that we have been writing as the features were
implemented (maybe write more of them?).

I'm not proposing it as a practical solution (well, maybe I am!), but as
a thought process to find where the rough corners are and what are we
*really* trying to solve with the process. If we could just generate the
release artifacts from a script, then it's not just that our releases
are slow, but something else. Get what I mean?

That would be for me the ideal world, where our software is stable
enough to be released by itself just because we want to provide a
shorter first `guix pull`. Or is it something else that we are providing?

How stupid it is what I'm saying here?

Sometimes, if something feels like a lot to do, because it is important,
the solution is not to put more resources on it, but to make it less
important, let it happen more often and don't pay as much as attention
to it.

My feelings here are we don't really release much because we already
bought the rolling-release and we just don't think about the release
that much. If we lived for two years and a half without a release, maybe
we are right and the releases are not that important.

Should we make them more important or less important?

Somehow what I'm trying to say here is if we need an exceptional effort
(meaning releases are an exception) for every release or if we should
bet more on the everyday work and let the rest happen. This might give
us some relief about the obligation to make releases but also some extra
motivation to be exceptionally good every single day of the year.

I don't know.

Steve, you asked for my thoughts, and here they are: probably not what
you expected (:

The proposal feels very good though, this was just my overall impression.

Best,
Ekaitz

On 2025-05-09 14:53, Steve George wrote:
Toggle quote (341 lines)
> Hi all,
>
> It's been ~2.5 years since the last Guix release, which led me to think we should do another one! Initially, I was just going to see if anyone wanted to create a release project. But, before I knew it I was writing a GCD! ...
>
> Below you'll find a proposal for moving to a regular release cycle.
>
> Thanks to Andreas Enge, Ludovic Courtès and Efraim Flashner for their initial comments and insights. They've agreed to sponsor it - which means they agree with the general direction (but not necessarily with all aspects), and will help to 'garden' the discussion to move us towards a consensus on whether it's a good proposal.
>
> This is a **draft** submission so I look forward to your consideration of it, thoughts and comments.
>
> Thanks,
>
> Steve / Futurile
>
>
> title: Regular and efficient releases
> id: 005
> status: draft
> discussion: https://issues.guix.gnu.org/78332
> authors: Steve George
> sponsors: Andreas Enge, Ludovic Courtès, Efraim Flashner
> date: <date when the discussion period starts>
> SPDX-License-Identifier: CC-BY-SA-4.0 OR GFDL-1.3-no-invariants-or-later
> ---
>
> # Summary
>
> Guix doesn't have regular release cycle which has led to infrequent new
> releases. Sporadic releases are detrimental for our users, contributors and
> the project. This GCD proposes we implement an annual release cadence and
> simplify the release process to make releases easier.
>
> The project currently releases new versions of Guix on an ad hoc frequency.
> The 1.4.0 release happened in December 2022 [^1], which is almost 2.5 years
> ago, at the time of writing.
>
> The weaknesses in this release strategy are:
>
> 1. No clarity on when the next Guix release is.
> 2. Releases are complex and toil for developers.
> 3. Rolling updates aren't suitable for all users.
>
> This GCD proposes the following combined solution:
>
> 1. Regular releases: switch to a time-based release of Guix every year.
> 2. Efficient releases: use *package sets* and *supported architectures* to
> reduce the scope of work required to create a Guix release.
>
> The benefits will be:
>
> 1. New installations of Guix will be better because installation media and
> manuals will be up to date, and the initial 'guix pull' will be faster.
> 2. Package installation will improve for all users. Packages will be ungrafted
> during each release cycle.
> 3. Package quality will improve for all users, because regular releases will
> provide a cadence for focusing on our quality.
> 4. A regular cadence for promoting the project to potential users. Helping us
> to inform more people about the benefits of using GNU Guix!
> 5. A regular release cycle is a rallying point for our contributors giving them a
> consistent calendar of when to focus on releases versus other hacking.
>
> Adding a slower-moving branch akin to Nix's stable could be an eventual goal as
> it would increase Guix's suitability for some users and use-cases [^2]. However,
> this GCD only sets out to implement regular releases which is a substantial
> change that would be a big improvement for our users.
>
>
> # Motivation
>
> Releases are important for any Free Software project because they update the
> user experience and are a focal point for excitement [^3]. Regular releases
> help us to improve the quality of our software by bringing focus, and
> exercising regular usage scenarios (e.g. testing the installer).
>
> The majority of distributions follow time-based releases, six months is a
> common cycle time. For further comparison see the research on the
> [release strategies of distributions] (https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt)
> . A summary is:
>
> - NixOS: releases every six months (May/November), both rolling release and
> slower stable branch.
> - OpenSUSE: rolling release, slow-roll release and fixed releases.
> - Ubuntu: every six months, with 9 months maintenance. LTS releases every
> 2 years.
> - Debian: Every 2 years (not time fixed), with about six months of package
> updates freeze before the release while bugs are ironed out.
>
> As a rolling release Guix immediately provides the latest improvements to
> users. Consequently, it could be argued that releases are unnecessary.
> However, they provide a focal point for the project to undertake additional
> testing and stabilisation across the repository. They also ensure we update
> installation media, documentation, themes and web site.
>
> A specific issue caused by irregular releases is that new users/installs face a
> significant first "guix pull". This provides a poor initial user experience,
> and in some cases may even deter users [^4]. Additionally, it requires the
> project to keep old substitutes on our servers.
>
> Regular releases are also good for casual users because they provide an
> opportunity for us to promote new features and improvements. For prospective
> users promotional activity about the release means they are more likely to hear
> about capabilities that will attract them to experiment with Guix.
>
> Many desktop distributions release every six months to align with the major
> desktop environments (GNOME/KDE) who release two or three times a year. This is
> why Nix (May/November) and Ubuntu (April/October) align their releases.
>
> Since Guix is used [extensively as a desktop] (https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-1/)
> it would make sense to align with these upstream releases. However, given that
> Guix is a volunteer project that doesn't have the practise of releasing it's
> unrealistic to move to two releases a year. Something along these lines could
> be a future goal [^5].
>
> This GCD proposes an annual release cycle, with releases **in May**.
>
> To move onto this cycle the first release would be a little later: aiming for
> the **November of 2025**, with a short cycle to release in May 2026.
>
>
> ## Package Sets
>
> There are currently over 30,000 packages in the archive, it's unrealistic for
> all packages to receive the same amount of QA effort for a release.
>
> Many other distributions focus attention on the critical parts of their
> repository by identifying those packages that are required for a particular
> user-case. For example, Arch Linux limits their efforts to a specific
> repository (called "main"). Ubuntu identifies various seeds for specific
> use-cases which determines their maintained packages; other packages outside
> these sets do not receive security updates.
>
> Guix is both a package manager that can be hosted on other Linux distributions,
> and a Linux distribution. Limiting the range of packages that receive attention
> is consequently more complicated. Guix already has manifests to track which
> packages are used by [Guix System's installer](https://git.savannah.gnu.org/cgit/guix.git/tree/etc/manifests/release.scm)
> , so this proposal extends that concept.
>
> For this proposal Guix would identify key package sets which would receive the
> most attention for QA'ing a release.
>
> The package sets would be:
>
> * minimal: packages required to boot and install a minimal Guix or Guix System
> install. This would include the guix daemon, kernels, boot loaders,
> file-systems and minimal utilities.
> * standard: packages that create a core installation for all other uses.
> * desktop: provides the packages necessary for a desktop. This would include
> things like X11/Wayland, desktop environments, key applications and themes.
> * server: provides packages and services for a server. This would include
> standard server packages and services.
> * hosted: provides packages and services which are necessary in hosted usage.
>
> Guix would still make all packages and services part of a release (the entire
> archive), but only those in the `package sets` could block a release due to a
> significant bug. The goal would be for this to be as small a set of packages
> as reasonably possible. It would mean that developers could focus on the
> critical packages and services during a release. As an example, this would
> mean that a major issue in the Linux kernel could block a release, but not an
> issue in a game.
>
>
> ## Platforms and Architecture tiers
>
> Guix is built and maintained on multiple different architectures, and two
> kernels (Linux, GNU Hurd). As the goal of the project is to maximise user
> freedom this variety is significant and is a key motivator for developers.
>
> However, with limited resources (developer and CI) we want to make it as
> efficient as possible to create a release. The more toil involved in a release
> the less likely developers are to work on it.
>
> The [2025 Guix User Survey](https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-2/)
> showed that 98% of users were on x86_64 and 19% on AArch64. Consequently, the
> proposal is the following tiers:
>
> - Primary architectures:
> - Architectures: x86_64, AArch64
> - Kernel: Linux
> - Coverage: all packages and services that are not explicitly platform
> specific must work to be included in the archive.
> - Package status: package updates should build for this architecture. If a
> package update is broken it must not be pushed to users (e.g. master).
> - Security: all packages that are maintained upstream receive updates
>
> - Alternative architectures
> - Architectures: all others
> - Kernel: Linux, Hurd
> - Coverage: all packages and services that are not explicitly platform
> specific may build
> - Package status: package updates should work for this architecture.
> Updates that do not build for this architecure, but do build for a primary
> architecture may be pushed to users.
> - Security: no commitment to providing security updates for this architecture.
>
> Packages or services that do not build for the Primary architectures as part of
> a release would be removed from the archive using Guix's deprecation policy.
>
>
> ## Release artifacts
>
> Using the primary architecture tier and the package sets would involve creating
> the following release artifacts:
>
> - GNU Guix System ISO image
> - GNU Guix System QCOW2 image
> - GNU Guix installer
>
> Again in an effort to reduce developer toil, additional release artifacts could
> be created but would not be part of the formal release testing and errors would
> not block a release.
>
>
> ## Release team and project
>
> A regular release cycle should galvanise all Guix developers to work on our
> releases. But, to ensure there are sufficient people involved a call will be
> put out to create a specific release team for each release project. We would
> expect the final release team to be around four-six members. The release team
> will work together to fix issues and test the various release artifacts. The
> expectation is that the release projects will be as short as possible, around
> a 12 week commitment with each team member having a few hours a week to take
> part.
>
> To manage the release it's proposed that each release will have a Release Manager
> role. The role of the Release Manager is to:
>
> - co-ordinate the release project
> - communicate with the release team and wider developers status and blockers
> - arbitrate changes to release blocking bugs, package sets and release
> artifacts
> - influence and assist teams to resolve problems
> - define the release artifacts and create them
> - encourage and excite **everyone to create and test the release**
>
> The Release Management role is likely to require the most effort, so it will
> be rotated and consist of two people from the release team. For each release
> there would be a primary person and a secondary person in the role. The
> primary person is new to the role. The secondary person has previously done it
> and is mentoring the new person. The impact of this is that each new release
> manager is agreeing to take responsibility during two release cycles.
> This system is modelled on the [Nix release management](https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt/nix-release-mgmt.md)
> approach.
>
> One of the release team will take on the role of Release Advocate [^6]. They
> will take responsibility for preparing the release announcement and
> coordinating the creation of content to promote the new release (e.g. web site)
> This role can be done by any member of the Guix community who has sufficient
> interest.
>
> The final release team is:
>
> - a new Release Manager
> - a returning Release Manager
> - up to 4 other members, one of whom acts as the Release Advocate
>
> The Release Managers of each release will create and communicate a release
> project plan setting out the stages and dates for each stage. To try and
> galvanise the Guix development team to focus on the release it's envisioned
> that a release project will be about 12 weeks. See Appendix 1: Release Project
> Time-line for an example.
>
> In order to improve knowledge transfer and reduce the toil of doing releases
> the Release Managers for a release will document the release process. There is
> inspiration for this in [NixOS's release wiki](https://nixos.github.io/release-wiki/Home.html)
> and we already have detailed [release documentation](https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/doc/release.org)
> .
>
>
> # Cost of Reverting
>
> If regular releases were not successful then the project would switch back to
> irregular releases. There would be no impact for exiting users as they will
> be tracking the rolling release's master branch.
>
> If the project is able to successfully undertake regular releases then over
> time it may be possible to undertake full releases every six months or some
> other release cadence.
>
>
> # Drawbacks and open issues
>
> There's no particular drawback to attempting regular release. It should be
> noted that the project is entirely dependent on volunteers so it may be that
> contributors don't have enough time available to achieve regular releases. If
> that's the case we would revert back to irregular releases.
>
> There are various improvements that could be made to this process over time,
> but no known issues.
>
>
> # Appendix 1: Release Project Time-line
>
> To illustrate the major steps of a release project this is a rough time-line.
> The aim is for a 12 week active release project, with the first one using 16
> weeks in total to give teams time to prepare.
>
> The current outline builds from our current [release document](https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/doc/release.org)
>
> | Week of Project | Event |
> | --- | --- |
> | -5 | Nominate a release team |
> | -4 | Notify teams of upcoming release |
> | 01 | Release project start |
> | 04 | Toolchain and transition freeze |
> | 05 | Package set finalisation |
> | 06 | Initial testing |
> | 08 | Updates freeze |
> | 08 | Breaking changes to staging |
> | 08 | Ungraft master branch |
> | 09 | Bugs and documentation focus |
> | 09 | Branch and tag release branch |
> | 09 | Testing and hard freeze |
> | 10 | Release candidate |
> | 12 | Final release |
> | 13 | Staging merged to master |
> | 14 | Release retrospective |
> | 15+| Relax - it's done! |
>
> ### 1. Nominate a release team
> Nominate a release team with two Release Managers (1 is the previous RM), and
> up to 4 other people who will work on the release. Put out a call for a Release
> Advocate who can be anyone in the Guix community who's willing.
>
> ### 2. Notify teams of upcoming release
> Make sure all teams are aware of the upcoming release. This gives them 4 weeks
> to undertake any large transitions or major changes.
>
> ### 3. Release project start
> Start the project with weekly updates to guix-dev and regular meetings of the
> release team. Encourage participation in testing and identifying bugs from
> the community.
>
> ### 4. Toolchain and transition freeze
> No major changes to toolchains (e.g. gcc-toolchain, rust-1.xx) or runtimes
> (e.g. java). There should be no changes that will cause major transitions.
>
> Debian defines a transition as one where a change in one package causes changes
> in another, the most common being a library. This isn't suitable for Guix since
> any change in an input causes a change in another package. Nonetheless, any
> change that alters a significant number of packages should be carefully
> cons
This message was truncated. Download the full message here.
A
A
Andreas Enge wrote on 10 May 02:15 -0700
(name . Ekaitz Zarraga)(address . ekaitz@elenq.tech)
aB8ZGWUXd7zIPxnA@jurong
Hello Ekaitz,

Am Sat, May 10, 2025 at 12:59:32AM +0200 schrieb Ekaitz Zarraga:
Toggle quote (3 lines)
> Steve, you asked for my thoughts, and here they are: probably not what you
> expected (:

thanks for your contribution, which brings up some interesting thoughts;
they sound provocative, but I find it useful to step out of the box and
ask the question: "do we need releases at all?". (Which goes a little
bit beyond what you actually suggested.) And one possible outcome of our
GCDs is that in the end, we decide the problem they try to solve is not
really a problem, but the GCD process has allowed us to come to this
joint conclusion and thus to move forward as a project.

Indeed if we have lived without releases for a long time, it is because
the rolling model makes them less pressing: As long as one can install
any Guix version at all, one can do a "guix pull" afterwards and be
up to date.

An automatic release process would solve some of the problems that
motivated this proposal: Debian could package the latest release no matter
how it was obtained; "guix pull" would start from a point closer to the
current master branch; and so on.

What is added by a manual release process, in my opinion, is quality
control. While the master branch is supposed to be in perfect shape all
the time, it actually is not:
- Sometimes there are breaking changes with problems only discovered
afterwards. For instance, the move to a non-privileged daemon caused
problems which are being solved now. Hopefully such a breaking change
would not make it into a release due to the freezing period.
- Ungrafting is a big issue that would be done during a release, and
the past has shown that it cannot be done completely automatically
(sometimes things break when ungrafting). Currently on a high-speed
Internet line it may take more time to graft the packages than to
download them.
- Recently when updating a package and checking which dependent packages
it would break, I noticed that several of them (!) had not been built
for years (!), and nobody had taken the time to fix or remove them.
Filing removal requests resulted in them being fixed or removed, and
a better quality of Guix (in a very small niche) and easier
maintenance: now doing a "guix build -P 1 this-package" actually tells
whether this-package update breaks anything or not.

These are things we *could* do any time, but which are probably not much
fun, and so they are not done. Crafting manual releases means we *must*
address such problems and face our quality issues.

This could also be a first step towards an additional stable branch,
which people have called for, on which security updates and (to be
discussed) limited package updates could be made. This is outside the
scope of this GCD, but I think that quality based releases on a certain
schedule are a prerequisite.

Clearly we could not (or would not like to) do security updates on a
branch as old as our 1.4 release; and it would also not work in your
alternative model in which, if I understand it correctly, releases would
be made essentially by putting a 3 digit version number periodically on
git commits, which would essentially be a purely rolling model.

Andreas
S
S
Steve George wrote on 10 May 02:42 -0700
(name . Vagrant Cascadian)(address . vagrant@debian.org)
fgc57qffjxkfbqq5paewtef2tnsnr5kqrh2jw53btuehocly27@ubjbk5vtq5q2
Attachment: file
-----BEGIN PGP SIGNATURE-----

iHUEABYKAB0WIQQIB6x23+hDA21fWHn1HUoW3O5vpwUCaB8fkgAKCRD1HUoW3O5v
p71CAP9rOrDl/23gbMCastSlDw89O4cGDgiV0o0m5wOvWcAUSwEA6yTMBqvzz2hs
Ubs7TN7kfndN/+rjC5DjO5XlDOXmgAk=
=L79l
-----END PGP SIGNATURE-----


R
(name . 78332@debbugs.gnu.org)(address . 78332@debbugs.gnu.org)
01020196b9d67d65-4ddf4f05-f643-4607-8337-af969cb8b074-000000@eu-west-1.amazonses.com
Hi Steve
Thanks for the effort you put into this, I just wanted to add my
thoughts when reading it...
Toggle quote (343 lines)
> Hi all,
>
> It's been ~2.5 years since the last Guix release, which led me to think we should do another one! Initially, I was just going to see if anyone wanted to create a release project. But, before I knew it I was writing a GCD! ...
>
> Below you'll find a proposal for moving to a regular release cycle.
>
> Thanks to Andreas Enge, Ludovic Courtès and Efraim Flashner for their initial comments and insights. They've agreed to sponsor it - which means they agree with the general direction (but not necessarily with all aspects), and will help to 'garden' the discussion to move us towards a consensus on whether it's a good proposal.
>
> This is a **draft** submission so I look forward to your consideration of it, thoughts and comments.
>
> Thanks,
>
> Steve / Futurile
> title: Regular and efficient releases
> id: 005
> status: draft
> discussion: https://issues.guix.gnu.org/78332
> authors: Steve George
> sponsors: Andreas Enge, Ludovic Courtès, Efraim Flashner
> date: <date when the discussion period starts>
> SPDX-License-Identifier: CC-BY-SA-4.0 OR GFDL-1.3-no-invariants-or-later
> ---
>
> # Summary
>
> Guix doesn't have regular release cycle which has led to infrequent new
> releases. Sporadic releases are detrimental for our users, contributors and
> the project. This GCD proposes we implement an annual release cadence and
> simplify the release process to make releases easier.
>
> The project currently releases new versions of Guix on an ad hoc frequency.
> The 1.4.0 release happened in December 2022 [^1], which is almost 2.5 years
> ago, at the time of writing.
>
> The weaknesses in this release strategy are:
>
> 1. No clarity on when the next Guix release is.
> 2. Releases are complex and toil for developers.
> 3. Rolling updates aren't suitable for all users.
>
> This GCD proposes the following combined solution:
>
> 1. Regular releases: switch to a time-based release of Guix every year.
> 2. Efficient releases: use *package sets* and *supported architectures* to
> reduce the scope of work required to create a Guix release.
>
> The benefits will be:
>
> 1. New installations of Guix will be better because installation media and
> manuals will be up to date, and the initial 'guix pull' will be faster.
> 2. Package installation will improve for all users. Packages will be ungrafted
> during each release cycle.
> 3. Package quality will improve for all users, because regular releases will
> provide a cadence for focusing on our quality.
> 4. A regular cadence for promoting the project to potential users. Helping us
> to inform more people about the benefits of using GNU Guix!
> 5. A regular release cycle is a rallying point for our contributors giving them a
> consistent calendar of when to focus on releases versus other hacking.
>
> Adding a slower-moving branch akin to Nix's stable could be an eventual goal as
> it would increase Guix's suitability for some users and use-cases [^2]. However,
> this GCD only sets out to implement regular releases which is a substantial
> change that would be a big improvement for our users.
>
>
> # Motivation
>
> Releases are important for any Free Software project because they update the
> user experience and are a focal point for excitement [^3]. Regular releases
> help us to improve the quality of our software by bringing focus, and
> exercising regular usage scenarios (e.g. testing the installer).
>
> The majority of distributions follow time-based releases, six months is a
> common cycle time. For further comparison see the research on the
> [release strategies of distributions] (https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt)
> . A summary is:
>
> - NixOS: releases every six months (May/November), both rolling release and
> slower stable branch.
> - OpenSUSE: rolling release, slow-roll release and fixed releases.
> - Ubuntu: every six months, with 9 months maintenance. LTS releases every
> 2 years.
> - Debian: Every 2 years (not time fixed), with about six months of package
> updates freeze before the release while bugs are ironed out.
>
> As a rolling release Guix immediately provides the latest improvements to
> users. Consequently, it could be argued that releases are unnecessary.
> However, they provide a focal point for the project to undertake additional
> testing and stabilisation across the repository. They also ensure we update
> installation media, documentation, themes and web site.
>
> A specific issue caused by irregular releases is that new users/installs face a
> significant first "guix pull". This provides a poor initial user experience,
> and in some cases may even deter users [^4]. Additionally, it requires the
> project to keep old substitutes on our servers.
>
> Regular releases are also good for casual users because they provide an
> opportunity for us to promote new features and improvements. For prospective
> users promotional activity about the release means they are more likely to hear
> about capabilities that will attract them to experiment with Guix.
>
> Many desktop distributions release every six months to align with the major
> desktop environments (GNOME/KDE) who release two or three times a year. This is
> why Nix (May/November) and Ubuntu (April/October) align their releases.
>
> Since Guix is used [extensively as a desktop] (https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-1/)
> it would make sense to align with these upstream releases. However, given that
> Guix is a volunteer project that doesn't have the practise of releasing it's
> unrealistic to move to two releases a year. Something along these lines could
> be a future goal [^5].
>
> This GCD proposes an annual release cycle, with releases **in May**.
>
> To move onto this cycle the first release would be a little later: aiming for
> the **November of 2025**, with a short cycle to release in May 2026.
>
>
> ## Package Sets
>
> There are currently over 30,000 packages in the archive, it's unrealistic for
> all packages to receive the same amount of QA effort for a release.
>
> Many other distributions focus attention on the critical parts of their
> repository by identifying those packages that are required for a particular
> user-case. For example, Arch Linux limits their efforts to a specific
> repository (called "main"). Ubuntu identifies various seeds for specific
> use-cases which determines their maintained packages; other packages outside
> these sets do not receive security updates.
>
> Guix is both a package manager that can be hosted on other Linux distributions,
> and a Linux distribution. Limiting the range of packages that receive attention
> is consequently more complicated. Guix already has manifests to track which
> packages are used by [Guix System's installer](https://git.savannah.gnu.org/cgit/guix.git/tree/etc/manifests/release.scm)
> , so this proposal extends that concept.
>
> For this proposal Guix would identify key package sets which would receive the
> most attention for QA'ing a release.
>
> The package sets would be:
>
> * minimal: packages required to boot and install a minimal Guix or Guix System
> install. This would include the guix daemon, kernels, boot loaders,
> file-systems and minimal utilities.
> * standard: packages that create a core installation for all other uses.
> * desktop: provides the packages necessary for a desktop. This would include
> things like X11/Wayland, desktop environments, key applications and themes.
> * server: provides packages and services for a server. This would include
> standard server packages and services.
> * hosted: provides packages and services which are necessary in hosted usage.
>
> Guix would still make all packages and services part of a release (the entire
> archive), but only those in the `package sets` could block a release due to a
> significant bug. The goal would be for this to be as small a set of packages
> as reasonably possible. It would mean that developers could focus on the
> critical packages and services during a release. As an example, this would
> mean that a major issue in the Linux kernel could block a release, but not an
> issue in a game.
>
>
> ## Platforms and Architecture tiers
>
> Guix is built and maintained on multiple different architectures, and two
> kernels (Linux, GNU Hurd). As the goal of the project is to maximise user
> freedom this variety is significant and is a key motivator for developers.
>
> However, with limited resources (developer and CI) we want to make it as
> efficient as possible to create a release. The more toil involved in a release
> the less likely developers are to work on it.
>
> The [2025 Guix User Survey](https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-2/)
> showed that 98% of users were on x86_64 and 19% on AArch64. Consequently, the
> proposal is the following tiers:
>
> - Primary architectures:
> - Architectures: x86_64, AArch64
> - Kernel: Linux
> - Coverage: all packages and services that are not explicitly platform
> specific must work to be included in the archive.
> - Package status: package updates should build for this architecture. If a
> package update is broken it must not be pushed to users (e.g. master).
> - Security: all packages that are maintained upstream receive updates
>
> - Alternative architectures
> - Architectures: all others
> - Kernel: Linux, Hurd
> - Coverage: all packages and services that are not explicitly platform
> specific may build
> - Package status: package updates should work for this architecture.
> Updates that do not build for this architecure, but do build for a primary
> architecture may be pushed to users.
> - Security: no commitment to providing security updates for this architecture.
>
> Packages or services that do not build for the Primary architectures as part of
> a release would be removed from the archive using Guix's deprecation policy.
>
>
> ## Release artifacts
>
> Using the primary architecture tier and the package sets would involve creating
> the following release artifacts:
>
> - GNU Guix System ISO image
> - GNU Guix System QCOW2 image
> - GNU Guix installer
>
> Again in an effort to reduce developer toil, additional release artifacts could
> be created but would not be part of the formal release testing and errors would
> not block a release.
>
>
> ## Release team and project
>
> A regular release cycle should galvanise all Guix developers to work on our
> releases. But, to ensure there are sufficient people involved a call will be
> put out to create a specific release team for each release project. We would
> expect the final release team to be around four-six members. The release team
> will work together to fix issues and test the various release artifacts. The
> expectation is that the release projects will be as short as possible, around
> a 12 week commitment with each team member having a few hours a week to take
> part.
>
> To manage the release it's proposed that each release will have a Release Manager
> role. The role of the Release Manager is to:
>
> - co-ordinate the release project
> - communicate with the release team and wider developers status and blockers
> - arbitrate changes to release blocking bugs, package sets and release
> artifacts
> - influence and assist teams to resolve problems
> - define the release artifacts and create them
> - encourage and excite **everyone to create and test the release**
>
> The Release Management role is likely to require the most effort, so it will
> be rotated and consist of two people from the release team. For each release
> there would be a primary person and a secondary person in the role. The
> primary person is new to the role. The secondary person has previously done it
> and is mentoring the new person. The impact of this is that each new release
> manager is agreeing to take responsibility during two release cycles.
> This system is modelled on the [Nix release management](https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt/nix-release-mgmt.md)
> approach.
>
> One of the release team will take on the role of Release Advocate [^6]. They
> will take responsibility for preparing the release announcement and
> coordinating the creation of content to promote the new release (e.g. web site)
> This role can be done by any member of the Guix community who has sufficient
> interest.
>
> The final release team is:
>
> - a new Release Manager
> - a returning Release Manager
> - up to 4 other members, one of whom acts as the Release Advocate
>
> The Release Managers of each release will create and communicate a release
> project plan setting out the stages and dates for each stage. To try and
> galvanise the Guix development team to focus on the release it's envisioned
> that a release project will be about 12 weeks. See Appendix 1: Release Project
> Time-line for an example.
>
> In order to improve knowledge transfer and reduce the toil of doing releases
> the Release Managers for a release will document the release process. There is
> inspiration for this in [NixOS's release wiki](https://nixos.github.io/release-wiki/Home.html)
> and we already have detailed [release documentation](https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/doc/release.org)
> .
>
>
> # Cost of Reverting
>
> If regular releases were not successful then the project would switch back to
> irregular releases. There would be no impact for exiting users as they will
> be tracking the rolling release's master branch.
>
> If the project is able to successfully undertake regular releases then over
> time it may be possible to undertake full releases every six months or some
> other release cadence.
>
>
> # Drawbacks and open issues
>
> There's no particular drawback to attempting regular release. It should be
> noted that the project is entirely dependent on volunteers so it may be that
> contributors don't have enough time available to achieve regular releases. If
> that's the case we would revert back to irregular releases.
>
> There are various improvements that could be made to this process over time,
> but no known issues.
>
>
> # Appendix 1: Release Project Time-line
>
> To illustrate the major steps of a release project this is a rough time-line.
> The aim is for a 12 week active release project, with the first one using 16
> weeks in total to give teams time to prepare.
>
> The current outline builds from our current [release document](https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/doc/release.org)
>
> | Week of Project | Event |
> | --- | --- |
> | -5 | Nominate a release team |
> | -4 | Notify teams of upcoming release |
> | 01 | Release project start |
> | 04 | Toolchain and transition freeze |
> | 05 | Package set finalisation |
> | 06 | Initial testing |
> | 08 | Updates freeze |
> | 08 | Breaking changes to staging |
> | 08 | Ungraft master branch |
> | 09 | Bugs and documentation focus |
> | 09 | Branch and tag release branch |
> | 09 | Testing and hard freeze |
> | 10 | Release candidate |
> | 12 | Final release |
> | 13 | Staging merged to master |
> | 14 | Release retrospective |
> | 15+| Relax - it's done! |
>
> ### 1. Nominate a release team
> Nominate a release team with two Release Managers (1 is the previous RM), and
> up to 4 other people who will work on the release. Put out a call for a Release
> Advocate who can be anyone in the Guix community who's willing.
>
> ### 2. Notify teams of upcoming release
> Make sure all teams are aware of the upcoming release. This gives them 4 weeks
> to undertake any large transitions or major changes.
>
> ### 3. Release project start
> Start the project with weekly updates to guix-dev and regular meetings of the
> release team. Encourage participation in testing and identifying bugs from
> the community.
>
> ### 4. Toolchain and transition freeze
> No major changes to toolchains (e.g. gcc-toolchain, rust-1.xx) or runtimes
> (e.g. java). There should be no changes that will cause major transitions.
>
> Debian defines a transition as one where a change in one package causes changes
> in another, the most common being a library. This isn't suitable for Guix since
> any change in an input causes a change in another package. Nonetheless, any
> change that alters a significant number of packages should be carefully
> considered and updates that cause other packages to break should be rejected.
>
> No alterations to the Guix daemon or modules are accepted after this point.
> Packages and services in the 'minimal' package set should not be
> altered.
Should this not be done on a separate release branch as soon as we start
with the release? There seems to be no need to freeze master as soon as
we branch off a release branch. Or did I understand something wrong?
Toggle quote (59 lines)
>
> ### 5. Package set finalisation
> Specify the package sets for this release. Identify all packages and their
> inputs so that a full manifest for the release is created.
>
> ### 6. Initial testing
> An initial testing sprint to look at packages, services, install media and
> upgrade testing. This should identify:
>
> * packages or services that may need to be removed because they fail on a
> primary architecture
> * packages and services in the package sets install and can be used
> * installation artifacts can be created and used
> * example system definitions can be used
> * system upgrades
>
> A build failure of a package or service will result in it being identified for
> removal. A build failure of a package or service that's in a package set will
> be marked as a blocker for the release.
>
> ### 7. Updates freeze
> Major package updates are frozen on 'master' as the focus is on fixing any
> blocking packages. Security updates still go to 'master'.
>
> ### 8. Breaking changes to staging
> To avoid a period of time where teams can't commit breaking changes, these are
> sent to a new 'staging' branch, rather than directly to master. The master
> branch slows down from this week.
>
> This concept comes from the Nix project where they flow big changes into a
> staging branch while they do release stabilisation to prevent big flows of
> breaking changes into master which broke one of their releases [^7].
>
> Team branches can still be folded into the release branch as long as changes are
> minor package upgrades.
>
> ### 9. Ungraft master branch
> Guix master is ungrafted to minimise the difference with users of the release
> initial 'guix pull' experience.
>
> ### 10. Bugs and documentation focus
> The master branch should be quiet at this point as everyone should focus on
> testing and resolving any bugs. New documentation can also be done.
>
> ### 11. Branch and tag release branch
> The master branch is tagged and a new release branch is created.
>
> * master branch: security only.
> * release branch: security updates as normal. Only RC blocking bugs.
>
> Only security updates go to the master branch from week 9->13. All other
> changes stay in a team branch or go to the `staging` branch. The focus on the
> release branch is to stabilise so only RC bugs should be pushed.
>
> ### 12. Testing and Hard Freeze
> RC bugs and issues should be solved for the release branch.
>
> Only changes that will fix a non-building package, or a bug in a package are
> allowed. Ideally avoid new upstream versions, but it
This message was truncated. Download the full message here.
E
E
Ekaitz Zarraga wrote on 10 May 04:04 -0700
(name . Andreas Enge)(address . andreas@enge.fr)
a0140074-92f7-4e7b-9c58-24dfd075088a@elenq.tech
On 2025-05-10 11:15, Andreas Enge wrote:
Toggle quote (63 lines)
> Hello Ekaitz,
>
> Am Sat, May 10, 2025 at 12:59:32AM +0200 schrieb Ekaitz Zarraga:
>> Steve, you asked for my thoughts, and here they are: probably not what you
>> expected (:
>
> thanks for your contribution, which brings up some interesting thoughts;
> they sound provocative, but I find it useful to step out of the box and
> ask the question: "do we need releases at all?". (Which goes a little
> bit beyond what you actually suggested.) And one possible outcome of our
> GCDs is that in the end, we decide the problem they try to solve is not
> really a problem, but the GCD process has allowed us to come to this
> joint conclusion and thus to move forward as a project.
>
> Indeed if we have lived without releases for a long time, it is because
> the rolling model makes them less pressing: As long as one can install
> any Guix version at all, one can do a "guix pull" afterwards and be
> up to date.
>
> An automatic release process would solve some of the problems that
> motivated this proposal: Debian could package the latest release no matter
> how it was obtained; "guix pull" would start from a point closer to the
> current master branch; and so on.
>
> What is added by a manual release process, in my opinion, is quality
> control. While the master branch is supposed to be in perfect shape all
> the time, it actually is not:
> - Sometimes there are breaking changes with problems only discovered
> afterwards. For instance, the move to a non-privileged daemon caused
> problems which are being solved now. Hopefully such a breaking change
> would not make it into a release due to the freezing period.
> - Ungrafting is a big issue that would be done during a release, and
> the past has shown that it cannot be done completely automatically
> (sometimes things break when ungrafting). Currently on a high-speed
> Internet line it may take more time to graft the packages than to
> download them.
> - Recently when updating a package and checking which dependent packages
> it would break, I noticed that several of them (!) had not been built
> for years (!), and nobody had taken the time to fix or remove them.
> Filing removal requests resulted in them being fixed or removed, and
> a better quality of Guix (in a very small niche) and easier
> maintenance: now doing a "guix build -P 1 this-package" actually tells
> whether this-package update breaks anything or not.
>
> These are things we *could* do any time, but which are probably not much
> fun, and so they are not done. Crafting manual releases means we *must*
> address such problems and face our quality issues.
>
> This could also be a first step towards an additional stable branch,
> which people have called for, on which security updates and (to be
> discussed) limited package updates could be made. This is outside the
> scope of this GCD, but I think that quality based releases on a certain
> schedule are a prerequisite.
>
> Clearly we could not (or would not like to) do security updates on a
> branch as old as our 1.4 release; and it would also not work in your
> alternative model in which, if I understand it correctly, releases would
> be made essentially by putting a 3 digit version number periodically on
> git commits, which would essentially be a purely rolling model.
>
> Andreas
>

So, there it goes!

You answered my question really clearly: We don't actually *need* to
make the releases manually, but we need the stability that process gives
us, specially for ungrafting.

My proposal was the most radical I could think about: just don't have a
release process. Or as you put it "put a three digit version number in
git commits". But the idea was to think about the grey, adding some
black to the white the GCD proposed.

So, now, realistically speaking, we are not ready for total automation
and we should make a release process. That I agree with, and we could
use the process to try to slowly make the process lighter until it
barely exists, which would at some point let us make releases more often
and with lower effort.

The question now is how do we achieve that. You point the goal of the
release process is the quality control. Now I wonder if there's any way
to relief the release of some of that weight (or all of it), being a
little bit more cautious during the rest of the year.

I know that makes every day less fun, but I'm thinking on how could we
share the responsibility to make the work of those that are going to
make the release as light as possible.

And this takes me to the actual specifics of the GCD:

I think one of the reasons we don't have a release for that long time is
the lack of people taking care of it. The GCD has a plan about it, but
it relies on having people involved in the process.

I'm a little bit pessimistic about how many people would get involved in
that, or better said: I'm worried that the very same people would be the
ones that get involved in the process over and over again.

That's why I'm trying to find a way to make everybody get involved in
the process in their everyday work, so the actual release process is not
that hard and makes it more likely to people to join. The way I have to
think about it is to imagine a future when releases can be automatic,
and think about what is preventing us from having that now.

I like the GCD, I think it's thoughtful and well organized, but it might
lack some of that: let's see how it went and try to make it lighter and
lighter for the future.

Maybe adding that is just a matter of publishing some
blogpost/survey/... after the first release is done using this process
where people share ideas on how we could implement improvements in our
everyday lives. After that, I suppose more GCDs would be proposed: a
long-lived stable branch, a full-automation proposal, better CI/CD
process, proper package testing... Whatever that is so we keep the wheel
rolling.

There's already some of that in the GCD: package sets are a very nice
way to make sure we are specially careful with some packages, and that's
something we can do every single day.

Does this make more sense now?

Thanks Andreas for your response,
Ekaitz
S
S
Steve George wrote on 10 May 10:08 -0700
(name . reza)(address . reza@housseini.me)
fs5f2nwfhsnr4qbld6hbexkbdacal5rcjdayjp2i6zsjxygs67@4abdernkt2e2
Attachment: file
I
I
Ian Eure wrote on 11 May 12:18 -0700
(name . Steve George)(address . steve@futurile.net)
87frhb5529.fsf@retrospec.tv
Hi Steve,

Steve George <steve@futurile.net> writes:

Toggle quote (2 lines)
> 3. Rolling updates aren't suitable for all users.

If a Guix release is a point in time snapshot of a rolling
release, and the first `guix pull' after
installation puts you back into the rolling release model, I don’t
think more frequent releases address this need.


Toggle quote (17 lines)
> Adding a slower-moving branch akin to Nix's stable could be an
> eventual goal as
> it would increase Guix's suitability for some users and
> use-cases [^2]. However,
> this GCD only sets out to implement regular releases which is a
> substantial
> change that would be a big improvement for our users.


> A specific issue caused by irregular releases is that new
> users/installs face a
> significant first "guix pull". This provides a poor initial user
> experience,
> and in some cases may even deter users [^4]. Additionally, it
> requires the
> project to keep old substitutes on our servers.

It also causes user confusion becasue the assumption is that the
release is what they should be using. We get a good number of
folks in #guix reading the 1.4.0 manual, which doesn’t accurately
reflect the current state of things.

Toggle quote (8 lines)
> This GCD proposes an annual release cycle, with releases **in
> May**.
>
> To move onto this cycle the first release would be a little
> later: aiming for
> the **November of 2025**, with a short cycle to release in May
> 2026.

I think it’d be better to align the initial release with the
schedule we want to keep, so if we plan for a November release,
plan to release every November.


Toggle quote (10 lines)
> ## Release artifacts
>
> Using the primary architecture tier and the package sets would
> involve creating
> the following release artifacts:
>
> - GNU Guix System ISO image
> - GNU Guix System QCOW2 image
> - GNU Guix installer

I’m not sure what the difference is between the installer and
system ISO image is, could you elaborate please?


Toggle quote (6 lines)
> Again in an effort to reduce developer toil, additional release
> artifacts could
> be created but would not be part of the formal release testing
> and errors would
> not block a release.

The 1.4.0 release artifacts are[1]:

- Installer image for i686 and x86_64.
- QCow image for x86_64.
- Binary for i686, x86_64, armhf, aarch64, and powerpc64e.
- Source tarball.

Are the binaries and source tarballs "additional release
artifacts?"


Toggle quote (22 lines)
> ### 4. Toolchain and transition freeze
> No major changes to toolchains (e.g. gcc-toolchain, rust-1.xx)
> or runtimes
> (e.g. java). There should be no changes that will cause major
> transitions.
>
> Debian defines a transition as one where a change in one package
> causes changes
> in another, the most common being a library. This isn't
> suitable for Guix since
> any change in an input causes a change in another package.
> Nonetheless, any
> change that alters a significant number of packages should be
> carefully
> considered and updates that cause other packages to break should
> be rejected.
>
> No alterations to the Guix daemon or modules are accepted after
> this point.
> Packages and services in the 'minimal' package set should not be
> altered.

I think it’s worth considering doing this the other way around:
instead of freezing master, cut a release branch and cherry-pick
fixes into it as needed. I don’t expect that development on
non-release features will stop during the freeze, which means
we’ll have a large backlog of work to merge once the freeze ends;
this is a thing Guix has historically not been good at working
through in a timely manner.

A release branch would also support longer-term stable releases,
if we wanted to do that.

The downside is that it’s more work to cherry-pick fixes between
branches, and there’s the potential for merge conflicts.


Toggle quote (5 lines)
> ### 7. Updates freeze
> Major package updates are frozen on 'master' as the focus is on
> fixing any
> blocking packages. Security updates still go to 'master'.

This could prove troublesome, as the current Guix approach is to
update packages to the version containing the fix. Are you
thinking that we’d maintain that, or adopt a Debian style of
backporting fixes where possible?

Toggle quote (7 lines)
> ### 8. Breaking changes to staging
> To avoid a period of time where teams can't commit breaking
> changes, these are
> sent to a new 'staging' branch, rather than directly to master.
> The master
> branch slows down from this week.

This is going to be difficult to manage, especially for
contributions from those new to Guix development.

Thank you for starting the discussion!

-- Ian
R
R
Rutherther wrote on 11 May 13:38 -0700
87y0v2993p.fsf@ditigal.xyz
Hi Ian,

Ian Eure <ian@retrospec.tv> writes:

Toggle quote (15 lines)
>
> I think it’s worth considering doing this the other way around:
> instead of freezing master, cut a release branch and cherry-pick
> fixes into it as needed. I don’t expect that development on
> non-release features will stop during the freeze, which means
> we’ll have a large backlog of work to merge once the freeze ends;
> this is a thing Guix has historically not been good at working
> through in a timely manner.
>
> A release branch would also support longer-term stable releases,
> if we wanted to do that.
>
> The downside is that it’s more work to cherry-pick fixes between
> branches, and there’s the potential for merge conflicts.

I think that currently this isn't achievable very well. If release and
master are diverging branches, and they will be if work is in both of
them, then if users install the system from that, then pull, and reconfigure,
their forward update check will fail as it expects the new commit to be
descendant of the old one, and it won't be. That would be causing confusion.

Regards
Rutherther
I
I
Ian Eure wrote on 11 May 18:49 -0700
(name . Rutherther)(address . rutherther@ditigal.xyz)
87a57i7g3m.fsf@retrospec.tv
Hi Rutherther,

Rutherther <rutherther@ditigal.xyz> writes:

Toggle quote (32 lines)
> Ian Eure <ian@retrospec.tv> writes:
>
>>
>> I think it’s worth considering doing this the other way around:
>> instead of freezing master, cut a release branch and
>> cherry-pick
>> fixes into it as needed. I don’t expect that development on
>> non-release features will stop during the freeze, which means
>> we’ll have a large backlog of work to merge once the freeze
>> ends;
>> this is a thing Guix has historically not been good at working
>> through in a timely manner.
>>
>> A release branch would also support longer-term stable
>> releases,
>> if we wanted to do that.
>>
>> The downside is that it’s more work to cherry-pick fixes
>> between
>> branches, and there’s the potential for merge conflicts.
>
> I think that currently this isn't achievable very well. If
> release and
> master are diverging branches, and they will be if work is in
> both of
> them, then if users install the system from that, then pull, and
> reconfigure,
> their forward update check will fail as it expects the new
> commit to be
> descendant of the old one, and it won't be. That would be
> causing confusion.

Hmm, good point, I think you’re right.

-- Ian
F
F
Felix Lechner wrote on 11 May 20:16 -0700
(name . Rutherther)(address . rutherther@ditigal.xyz)
87bjryjz6s.fsf@lease-up.com
Hi Ian and Rutherther,

On Sun, May 11 2025, Rutherther wrote:

Toggle quote (2 lines)
> If release and master are diverging branches

Could the monorepo be broken up in such a way that release work might
take place in one part while regular development continues in the
others?

The release team would focus on each part in turn, going back if needed,
and would block regular contributions while there.

The release would be the pin to the high-quality commits in each part of
the code base.

Kind regards
Felix
F
F
Felix Lechner wrote on 11 May 20:35 -0700
(name . Rutherther)(address . rutherther@ditigal.xyz)
875xi6jyb3.fsf@lease-up.com
Hi Ian and Rutherther,

On Sun, May 11 2025, Rutherther wrote:

Toggle quote (2 lines)
> If release and master are diverging branches

Sorry to double up.

From a technical point of view, I think it would be superior to have
package functions that accept a version (i.e. not variables like now)
and define releases and the current development "branch" by the package
versions they pull in.

There would be no conflict between release work and regular development
activity.

Services would also have to be versioned.

Kind regards
Felix
S
S
Steve George wrote on 12 May 03:09 -0700
(name . Ian Eure)(address . ian@retrospec.tv)
hy2p7yhcsl5o4p3as77ne2ffqzzslikuvdmir6t3gyqo3fw5zm@gcslqzch3i2p
Attachment: file
S
S
Steve George wrote on 12 May 03:16 -0700
Re: [bug#78332] GCD005: Regular and efficient releases
(name . Felix Lechner)(address . felix.lechner@lease-up.com)
izqwz32rmde6tsbd3qljhqdl6tkojnqrc6kscrziqo6wnpfbjj@7y4ynujbkpiz
Hi Felix,

On 11 May, Felix Lechner via Guix-patches via wrote:
Toggle quote (17 lines)
> Hi Ian and Rutherther,
>
> On Sun, May 11 2025, Rutherther wrote:
>
> > If release and master are diverging branches
>
> Sorry to double up.
>
> From a technical point of view, I think it would be superior to have
> package functions that accept a version (i.e. not variables like now)
> and define releases and the current development "branch" by the package
> versions they pull in.
>
> There would be no conflict between release work and regular development
> activity.
>
> Services would also have to be versioned.
(...)

There's lots of interesting approaches we could take, advice from more experienced Guix people than me (sponsors) was to try and keep the GCD to a single change. I've seen it myself that we've had lots of great conversations, but for a small volunteer team it's difficult to make large systemic changes. So this is definitely a "pragmatic" GCD which doesn't require big code changes, and even as (Reza pointed out) distinctly avoids creating a dependency on any new functionality being implemented.

Thanks,

Steve / Futurile
E
E
Efraim Flashner wrote on 12 May 05:38 -0700
Re: GCD005: Regular and efficient releases
(name . Steve George)(address . steve@futurile.net)
aCHrvMvMq6AcAeMs@X1
Attachment: file
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmgh67kACgkQQarn3Mo9
g1HQTQ/8CdXHYNCHHM6cr6bZYEQSLbs3+w/dOO+FKykZKSyukUmxPhsSCfXy/hOm
sA0asKJxE8tMIFkD5azEl/hcx/iiXElalcnPQtg8fQBXMOsqDXj+tDCleLfK1sTb
qRE1ZCSbQSKap+liK4eSOXti5AoCzFEPF33uSlwodHhM+a7QEfb7QBdBGzfOJWAI
cfnXw6kallh+/SIzqYtC36B/v1SS85VvSu9+q8enY3OcFinR3Xc86XwMpXw0U5Le
IdHgxX0cA9u5/1MRFc7ULG1CMQiuhvESNXFDmyJNxGLEV6+Wv/ko+qAtk22UjJY3
4vhSQGrHptE+i1VkzM0MyyJ2ENzowV/AZP/tXY2jYLra+fCYWuawutpLirwOmPIi
XbF48+LZRAHCQe9GVyfup/YcoSivvIFY/ClmABlbIsspjMARMpmpVXTRYTUSwJF2
mlV00U0nyFCUBiZWrkt7RdROX7f2woZp2clpwKjd9MRkUSVHJEQxeCbjaUfiFC0c
64sl8ZGpPxeMIu6ehz6XPcrr71ZiQxacfkE2UrLHd9gIFdqj/LpbuUN3E7jDzhPy
OesIWOhxWLKgpS2C2LgkOq91Qefaam5hH9xQ4cY1lEItmOH+lvc778aO+C+S7qwm
y1qPYqJwJWqcuX/6rbyOKisBLSXP34CaJsKUFmwLX3EFkXJlyWM=
=/c2f
-----END PGP SIGNATURE-----


G
G
Greg Hogan wrote on 12 May 08:34 -0700
(name . Steve George)(address . steve@futurile.net)
CA+3U0Z=dzaT+_hJCA6oyi6DnLCXoW3KrsZmxcjZAcrJEHN3a2A@mail.gmail.com
On Fri, May 9, 2025 at 5:55 PM Steve George <steve@futurile.net> wrote:
Toggle quote (5 lines)
>
> I hope the initial user experience wouldn't be to "break on the user's first pull", since with annual releases we wouldn't have release artefacts that are 2.5 years out of date. And, we'd also degraft regularly which would be beneficial for all users.
>
> As you can tell I would _love_ us to be able to have a slower moving branch, but purposefully have kept the GCD more limited. For now focusing on the step forward of regular releases.

I have not updated a 2.5+ year old Guix system, but what is the issue
here? How is this any different from updating a week old system? If
the archive contains broken packages then the user upgrade experience
will fail just the same. And clearing the archive of broken packages
also breaks user manifests!

Toggle quote (6 lines)
> > 2) The project is currently unable to keep up with the teams workflow,
> > and now we are introducing an additional, quite long pause into the
> > calendar.

> I agree this is a problem, for the purposes of focusing discussion on this GCD let's keep it out of the remit. Perhaps a separate discussion or separate GCD!

Performance of the teams workflow is integral to this proposal. We can
barely get a handful of teams processed in a month, and now we propose
allowing all teams a go within a four week window. And it seems to me
the biggest issue with the teams workflow is the indeterminate nature
of moving to the head of the queue. This proposal synchronizes many
activities to an annual process for which the volunteer developers may
likewise not be available.

### 2. Notify teams of upcoming release
Make sure all teams are aware of the upcoming release. This gives
them 4 weeks
to undertake any large transitions or major changes.

Toggle quote (9 lines)
> > 3) Package cleanup is a problem that I believe we are afraid to
> > address. I agree that we should not have package "ownership", but
> > perhaps "sponsorship" or (to borrow from this GCD) "advocate" with
> > notifications when builds break on CI. I believe this proposal is too
> > aggressive in pruning packages without considering alternatives (in
> > another GCD).
>
> Can you point me to the part where you think it's too aggressive? Maybe it's overstating it in some way. In my mind I think the release is a checkpoint where we can use the package sets and the project plan focus to do what we should be doing using our existing process.

The removal of any broken package:

Packages or services that do not build for the Primary
architectures as part of a release
would be removed from the archive using Guix's deprecation policy.

Toggle quote (17 lines)
> > I think we should greatly reduce the scope and initially try (as I
> > noted in December buried in the "On the quest for a new release model"
> > discussion) creating a release team which would:
> > 1) operate as any other team
> > 2) be responsible only for building and improving release artifacts
> > 3) operate with a cadence sufficient to build and retain this
> > expertise (which would currently be one cycle of the queue, but
> > ideally every ~3-4 months)
> >
> > By using the teams queue everyone will know when the release is
> > coming, and whether their branch will be merged before or after the
> > next release.
>
> In a way this does create a team in the way you brought up in December [0]. It creates a "release team" for one project and tries to limit the "toil" by keeping the project to 3-4 months of effort. It defines a specific time when a release will happen so everyone knows when it's happening, can get involved and help.
>
> Where it differs is that realistically the release artifacts involve the kernel, core packages, networking, base utils, guix daemon, and graphical environments [1]. I don't think this can be done by 3-4 volunteers, there has to be some co-ordination and energy from all teams - we are a small team after all!

Yes, those teams are involved if packages or the release scripts are
broken? I'm with Ekaitz on this one, the process to build the release
artifacts should be automated. We already do this for the binary,
which is why I have not had to install a 2.5+ year old system :)

I see Andreas' response that we need a big release hullabaloo to rally
around since tidying up and testing the release is "probably not much
fun". But this process simply codifies the pre-teams workflow that did
not work. And while I certainly welcome this discussion, I don't see
this as a whole qualifying as a GCD (from 001: "A change may be deemed
*significant* when it could only be reverted at a high cost or, for
technical changes, when it has the potential to disrupt user scripts
and programs or user workflows").

This proposal simply takes the processes which are performing poorly
and stuffs them into a very manual annual release process. Ungrafting
can and should be coordinated on feature branches. We need better
methods to identify, track, and notify users of their broken packages.
The teams workflow needs to be clarified (QA vs CI) and coordinated
(thanks, Andreas!) and possibly preemptive.

We tested codeberg before the GCD to switch over. We should likewise
test this release schedule before codifying in a GCD.

Greg
R
R
Rutherther wrote on 12 May 09:23 -0700
87tt5pajcc.fsf@ditigal.xyz
Hi Greg,

Greg Hogan <code@greghogan.com> writes:

Toggle quote (12 lines)
> On Fri, May 9, 2025 at 5:55 PM Steve George <steve@futurile.net> wrote:
>>
>> I hope the initial user experience wouldn't be to "break on the user's first pull", since with annual releases we wouldn't have release artefacts that are 2.5 years out of date. And, we'd also degraft regularly which would be beneficial for all users.
>>
>> As you can tell I would _love_ us to be able to have a slower moving branch, but purposefully have kept the GCD more limited. For now focusing on the step forward of regular releases.
>
> I have not updated a 2.5+ year old Guix system, but what is the issue
> here? How is this any different from updating a week old system? If
> the archive contains broken packages then the user upgrade experience
> will fail just the same. And clearing the archive of broken packages
> also breaks user manifests!

There isn't an issue as long as you use substitutes. But if you decided
you won't, then there is an issue currently. Specifically there is a
misbehaving mirror crysys.hu that returns 200, but returns page not
found html page. That means packages like gnutls aren't building. For
people that are installing Guix from their system's package manager,
they will get hit by this unless they actively activate the substitutes.

This points to a more general problem that can be happening in the
future, it can be misbehaving mirrors or pages that aren't handled well
by Guix and lead to non-buildable software. As long as pages behave as
they should, everything should be fine, ie. SWH gets triggered on
missing repositories, subsequent mirror urls are used, etc. But
misbehaving pages are always going to cause issues.

Apart from that there has been a mistake made in generation of the 1.4.0
iso, the iso has used a local channel url, /home/ludo/..., so now if you
install from the iso, your system will have this path in the
channels.scm provenance file. Then if you do not pull at all, but
reconfigure right away, you will get an error that /home/ludo/... is not
found. That is because of the forward update check that is going to try
to check if your current commit is descendant of the previous one.
(I think that the check should have a way to abort early if no
commits have changed btw)
Mistakes like that will probably be happening with new releases
as well. Though this one should be impossible already - the url is going
to be replaced in the operating-system from install.scm.

The more releases the faster issues like this can get resolved, and not
confuse the users.

Regards
Rutherther
G
G
Greg Hogan wrote on 12 May 10:11 -0700
(name . Rutherther)(address . rutherther@ditigal.xyz)
CA+3U0Zk8WCvJ+YPKoSwvYeGQTxuqaM5zWNSdZVsBWboS86VWVw@mail.gmail.com
On Mon, May 12, 2025 at 12:23 PM Rutherther <rutherther@ditigal.xyz> wrote:
Toggle quote (31 lines)
>
> Hi Greg,
>
> Greg Hogan <code@greghogan.com> writes:
>
> > On Fri, May 9, 2025 at 5:55 PM Steve George <steve@futurile.net> wrote:
> >>
> >> I hope the initial user experience wouldn't be to "break on the user's first pull", since with annual releases we wouldn't have release artefacts that are 2.5 years out of date. And, we'd also degraft regularly which would be beneficial for all users.
> >>
> >> As you can tell I would _love_ us to be able to have a slower moving branch, but purposefully have kept the GCD more limited. For now focusing on the step forward of regular releases.
> >
> > I have not updated a 2.5+ year old Guix system, but what is the issue
> > here? How is this any different from updating a week old system? If
> > the archive contains broken packages then the user upgrade experience
> > will fail just the same. And clearing the archive of broken packages
> > also breaks user manifests!
>
> There isn't an issue as long as you use substitutes. But if you decided
> you won't, then there is an issue currently. Specifically there is a
> misbehaving mirror crysys.hu that returns 200, but returns page not
> found html page. That means packages like gnutls aren't building. For
> people that are installing Guix from their system's package manager,
> they will get hit by this unless they actively activate the substitutes.
>
> This points to a more general problem that can be happening in the
> future, it can be misbehaving mirrors or pages that aren't handled well
> by Guix and lead to non-buildable software. As long as pages behave as
> they should, everything should be fine, ie. SWH gets triggered on
> missing repositories, subsequent mirror urls are used, etc. But
> misbehaving pages are always going to cause issues.

So for the (small?) subset of users (myself included) who do not
enable substitutes, then for the small set of packages provided
pre-built with the installation ...

Toggle quote (1 lines)
>> guix depends on gnutls
guix@1.4.0-36.0772d36
guile-gnutls@4.0.0
gnutls@3.8.3

Can we not retry mirrors on checksum mismatch? And differentiate
between binary substitutes and sources? The latter are strongly hashed
and therefore no different from patches or the package code itself.
Does use of SWH require substitutes to be enabled?

Toggle quote (16 lines)
> Apart from that there has been a mistake made in generation of the 1.4.0
> iso, the iso has used a local channel url, /home/ludo/..., so now if you
> install from the iso, your system will have this path in the
> channels.scm provenance file. Then if you do not pull at all, but
> reconfigure right away, you will get an error that /home/ludo/... is not
> found. That is because of the forward update check that is going to try
> to check if your current commit is descendant of the previous one.
> (I think that the check should have a way to abort early if no
> commits have changed btw)
> Mistakes like that will probably be happening with new releases
> as well. Though this one should be impossible already - the url is going
> to be replaced in the operating-system from install.scm.
>
> The more releases the faster issues like this can get resolved, and not
> confuse the users.

I think we should release more often (multiple times per year) and
also add checks like building release artifacts and bootstrapping
systems with clocks set into the future to detect another major
annoyance: timebombs. Anything which can be automated.

Toggle quote (2 lines)
> Regards
> Rutherther
E
E
Efraim Flashner wrote on 12 May 10:28 -0700
(name . Greg Hogan)(address . code@greghogan.com)
aCIvqABgKwj8SJnN@3900XT
On Mon, May 12, 2025 at 01:11:15PM -0400, Greg Hogan wrote:
Toggle quote (46 lines)
> On Mon, May 12, 2025 at 12:23 PM Rutherther <rutherther@ditigal.xyz> wrote:
> >
> > Hi Greg,
> >
> > Greg Hogan <code@greghogan.com> writes:
> >
> > > On Fri, May 9, 2025 at 5:55 PM Steve George <steve@futurile.net> wrote:
> > >>
> > >> I hope the initial user experience wouldn't be to "break on the user's first pull", since with annual releases we wouldn't have release artefacts that are 2.5 years out of date. And, we'd also degraft regularly which would be beneficial for all users.
> > >>
> > >> As you can tell I would _love_ us to be able to have a slower moving branch, but purposefully have kept the GCD more limited. For now focusing on the step forward of regular releases.
> > >
> > > I have not updated a 2.5+ year old Guix system, but what is the issue
> > > here? How is this any different from updating a week old system? If
> > > the archive contains broken packages then the user upgrade experience
> > > will fail just the same. And clearing the archive of broken packages
> > > also breaks user manifests!
> >
> > There isn't an issue as long as you use substitutes. But if you decided
> > you won't, then there is an issue currently. Specifically there is a
> > misbehaving mirror crysys.hu that returns 200, but returns page not
> > found html page. That means packages like gnutls aren't building. For
> > people that are installing Guix from their system's package manager,
> > they will get hit by this unless they actively activate the substitutes.
> >
> > This points to a more general problem that can be happening in the
> > future, it can be misbehaving mirrors or pages that aren't handled well
> > by Guix and lead to non-buildable software. As long as pages behave as
> > they should, everything should be fine, ie. SWH gets triggered on
> > missing repositories, subsequent mirror urls are used, etc. But
> > misbehaving pages are always going to cause issues.
>
> So for the (small?) subset of users (myself included) who do not
> enable substitutes, then for the small set of packages provided
> pre-built with the installation ...
>
> >> guix depends on gnutls
> guix@1.4.0-36.0772d36
> guile-gnutls@4.0.0
> gnutls@3.8.3
>
> Can we not retry mirrors on checksum mismatch? And differentiate
> between binary substitutes and sources? The latter are strongly hashed
> and therefore no different from patches or the package code itself.
> Does use of SWH require substitutes to be enabled?

SWH doesn't require substitutes to be enabled, they only serve source
files.

Toggle quote (21 lines)
> > Apart from that there has been a mistake made in generation of the 1.4.0
> > iso, the iso has used a local channel url, /home/ludo/..., so now if you
> > install from the iso, your system will have this path in the
> > channels.scm provenance file. Then if you do not pull at all, but
> > reconfigure right away, you will get an error that /home/ludo/... is not
> > found. That is because of the forward update check that is going to try
> > to check if your current commit is descendant of the previous one.
> > (I think that the check should have a way to abort early if no
> > commits have changed btw)
> > Mistakes like that will probably be happening with new releases
> > as well. Though this one should be impossible already - the url is going
> > to be replaced in the operating-system from install.scm.
> >
> > The more releases the faster issues like this can get resolved, and not
> > confuse the users.
>
> I think we should release more often (multiple times per year) and
> also add checks like building release artifacts and bootstrapping
> systems with clocks set into the future to detect another major
> annoyance: timebombs. Anything which can be automated.

These are still things that we can do. I hope that any manual parts of
the release process we can identify and automate going forward,
including making sure any package or service we offer from the installer
actually builds.

Toggle quote (4 lines)
> > Regards
> > Rutherther
>

--
Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmgiL6gACgkQQarn3Mo9
g1GyTBAAnStgLpDT6DiwbVLXVKJjpDHxx7NP1QbUWZ1OmTQYNoIPRXb47/oZ70aB
N+0XzB95kyxBXL1wf+kmsEb2kOMLwr+by8pOEaR7F8/dtzUh5gJ4YqTnVSTaFLHr
Ua8KtbP0oYGrJjrXqtKD+IZ5wx+Pl5W/nmgzTvie+hm7fz34bEx37yU41qkJyViA
uCJHZnxmNXA4ntk712ndw16ndeIynqNUSU41gP3HwEzAJu4qM6od9NvKNYGGqQwg
FsaqL1028V92Z8qMLcKSs7FMss5wRYYZKCh5nsW11MFEr1N18aK097QBkRc22Axz
TmJnPlIeAi3XtHKOzKqm1/aF7Xwx4pJ4H29tOve0PMe5yeTZ0Eoznartzdvwqu73
ZBfFmHDVtJa5H464JGBFVLKhoGjmIcYTrmywTdofIeOpRaGDXmyfIrGkFuI1owR2
/0uj/FLSOdZWEx1on4HfUW+SFkPCOL9S3Kgg1UeGkEAUwr3KMUhC3SYzeFkHwAa+
TWzmH0/B3QUz198XhElO6W29UBkLGqK3zhZ7EHtWVnyi7vQyZ2kVxbGIc2wltcy/
xEEW7YALzLo1ESFmZKAqUXbFqaSbpfl2SMp0qZVRdXAsDqqV5DItb0LcR0RCrjkG
azyXuKpZjw5uOdSsNDu8YTjY0eMxj/43Yk2T+SaDJRAWqgKxBY8=
=XXRz
-----END PGP SIGNATURE-----


R
R
Rutherther wrote on 12 May 10:32 -0700
(name . Greg Hogan)(address . code@greghogan.com)
87plgdag58.fsf@ditigal.xyz
Greg Hogan <code@greghogan.com> writes:

Toggle quote (11 lines)
> On Mon, May 12, 2025 at 12:23 PM Rutherther <rutherther@ditigal.xyz> wrote:
>
> So for the (small?) subset of users (myself included) who do not
> enable substitutes, then for the small set of packages provided
> pre-built with the installation ...
>
>>> guix depends on gnutls
> guix@1.4.0-36.0772d36
> guile-gnutls@4.0.0
> gnutls@3.8.3

Yeah, which means users cannot pull from 1.4.0

Toggle quote (3 lines)
>
> Can we not retry mirrors on checksum mismatch?

I don't know why not. I would also think it's good way to mitigate
issues like this. But my main point was meant to be that I think issues
like that will happen in the future as well, so having old releases
means users have to deal with them more often.

Toggle quote (2 lines)
> Does use of SWH require substitutes to be enabled?

SWH should be used even without substitutes to my knowledge.
A
A
Andreas Enge wrote on 13 May 05:56 -0700
(name . Ekaitz Zarraga)(address . ekaitz@elenq.tech)
aCNBcdRUBBYEb7mm@jurong
Hello Ekaitz,

Am Sat, May 10, 2025 at 01:04:18PM +0200 schrieb Ekaitz Zarraga:
Toggle quote (9 lines)
> So, now, realistically speaking, we are not ready for total automation and
> we should make a release process. That I agree with, and we could use the
> process to try to slowly make the process lighter until it barely exists,
> which would at some point let us make releases more often and with lower
> effort.
> (...) I'm thinking on how could we share
> the responsibility to make the work of those that are going to make the
> release as light as possible.

I think this is something we agree upon: Things should be as automatic
as possible, if we can make machines do the work for us, this would be
perfect!

But clearly this is not easy. Given past problems with CI and QA, we see
that there are not enough people working on automation, and that the
problems are complex.

Toggle quote (4 lines)
> I'm a little bit pessimistic about how many people would get involved in
> that, or better said: I'm worried that the very same people would be the
> ones that get involved in the process over and over again.

Indeed, the idea is to have a turn-over, which is partially spelt out in
the proposal. If everybody takes part twice and there is a renewal of
half of the people every time, we would avoid that people get burnt out
and still pass on experiences with the process.

Toggle quote (4 lines)
> That's why I'm trying to find a way to make everybody get involved in the
> process in their everyday work, so the actual release process is not that
> hard and makes it more likely to people to join.

Good point, which maybe should not be a part of this GCD, but a subject
of further thought: How can we make our life easier? How can we improve
the quality of Guix? When Ludovic added the deprecation policy to the
manual, I suppose that was something he had in mind. Similarly it is the
goal of the Codeberg migration.

Toggle quote (4 lines)
> I like the GCD, I think it's thoughtful and well organized, but it might
> lack some of that: let's see how it went and try to make it lighter and
> lighter for the future.

The GCD contains step 14: "Release retrospective". That covers your
point, in my opinion.


But more fundamentally, I think it is not realistic to end up with a
fully automatic procedure. In the end Guix is a social endeavour (lots
of people working together towards a common goal), and I think we need
social processes to reach our goals. For instance, when merging team
branches, we somehow need to negotiate the order; individual teams will
look at their branches and try to advance them, but sometimes it may be
better to let another branch go to the front. Similarly for a release,
decisions will have to be made. Packages may have to be dropped, the
latest release of desktop environment X which is almost, but not quite,
ready may have to be excluded, and so on. Having a team to coordinate
this, and also invested to take unpopular decisions, is necessary in my
opinion.

Also I think we need a period of manual testing. As Vagrant said,
sometimes packaging for Debian, for instance, reveals problems that we
had not seen before. Or asking people to try an installation on an
exotic architecture.

Andreas
A
A
Andreas Enge wrote on 13 May 06:11 -0700
(name . Greg Hogan)(address . code@greghogan.com)
aCNFFWE9AuiKAgfQ@jurong
Hello Greg,

I am having some trouble following your argumentation; in the beginning
of your different postings I got the impression that you did not see
a need for releases, since one could always do a "guix pull". But then
you end with:

Am Mon, May 12, 2025 at 01:11:15PM -0400 schrieb Greg Hogan:
Toggle quote (2 lines)
> I think we should release more often (multiple times per year)

So I am definitely not getting your point! With the goal of moving forward,
could you try to reformulate your ideas? Are there concrete points we could
improve in the GCD, or do you think it should simply be dropped as not
relevant to the real problem? If we missed it, what is the real problem?

As to automation, I made a few arguments in my reply to Ekaitz, so I will
not repeat them here.

Andreas
G
G
Greg Hogan wrote on 13 May 08:03 -0700
(name . Andreas Enge)(address . andreas@enge.fr)
CA+3U0ZmtbgvDXM_Q9jZM03hVHn7zpnmRhCf2b2pP=u_vmOLBXg@mail.gmail.com
On Tue, May 13, 2025 at 9:11 AM Andreas Enge <andreas@enge.fr> wrote:
Toggle quote (8 lines)
>
> Hello Greg,
>
> I am having some trouble following your argumentation; in the beginning
> of your different postings I got the impression that you did not see
> a need for releases, since one could always do a "guix pull". But then
> you end with:

Hi Andreas,

There may be some confusion in terms. The GCD states "there are
currently over 30,000 packages in the archive" and "Guix would still
make all packages and services part of a release (the entire
archive)". And when I look up the definition of archive I see
references to "historical documents" and "preservation".

If a release is build artifacts plus every package in working order
then I find that to be a Herculean task. There is of course tremendous
value in this because on every contribution the developer must
investigate whether build failures are newly caused or preexisting (or
ephemeral or system dependent). I fully support this attempt, I just
think we should first attempt to get every package in working order
before codifying this annual process in a GCD.

If a release is simply build artifacts, then we are already automating
part of this process. I count 10 builds of the binary release across
March and April:

Can we not similarly automate creation of the ISO and QCOW2 artifacts?
Then, as you note, these need to be manually tested and blessed as a
release. But I don't see why the ancillary packages need to be in
working order to cut a new release.

Toggle quote (2 lines)
> For instance, when merging team branches, we somehow need to negotiate the order; individual teams will look at their branches and try to advance them, but sometimes it may be better to let another branch go to the front.

It would be nice to make your teams coordinator position official.
Considering the number of ideas for improving the teams workflow, we
are probably due for a GCD. And I think that is the right process, to
have the GCD deliberate the lessons learned rather than speculate
beforehand.

Toggle quote (8 lines)
> Am Mon, May 12, 2025 at 01:11:15PM -0400 schrieb Greg Hogan:
> > I think we should release more often (multiple times per year)
>
> So I am definitely not getting your point! With the goal of moving forward,
> could you try to reformulate your ideas? Are there concrete points we could
> improve in the GCD, or do you think it should simply be dropped as not
> relevant to the real problem? If we missed it, what is the real problem?

Does this clarify? I see this proposal as trying to 1) manually fix 2)
all of Guix's problems in 3) a shortened time window, shrinking what
we are unable to maintain in 12 months into a few weeks (the only
thing missing is closing all issues during the release cycle).

And maybe it works! Maybe the 10x and 100x contributors, including the
sponsors of this GCD, will happily fix everything and make this
happen. I can accept that. But why not just do that already? Are the
core developers not empowered? Too deferential? What improvements does
this GCD offer other than a process to "encourage and excite"?

Greg
A
A
Andreas Enge wrote on 13 May 08:54 -0700
(name . Greg Hogan)(address . code@greghogan.com)
aCNrKOtzF5pBa9no@jurong
Hi Greg,

thanks for clarifying, this is indeed very helpful.

Am Tue, May 13, 2025 at 11:03:02AM -0400 schrieb Greg Hogan:
Toggle quote (11 lines)
> There may be some confusion in terms. The GCD states "there are
> currently over 30,000 packages in the archive" and "Guix would still
> make all packages and services part of a release (the entire
> archive)". And when I look up the definition of archive I see
> references to "historical documents" and "preservation".
> (...)
> If a release is simply build artifacts, then we are already automating
> part of this process. I count 10 builds of the binary release across
> March and April:
> https://ci.guix.gnu.org/search?query=guix-binary

I think the release proposal tries to reach some middle ground between
these. There is supposed to be a set of "important" packages which
should build (or be removed, so that the users get what the description
says), the "package sets". These are not yet really defined, and doing
so is given as a task for the release team (no 05, "package set
finalisation"). They would block a release.

The remaining close to 30000 ones will be shipped ("released") whether
they build or not; it is clear we will never reach a 100% perfect
distribution (and I think it is a task for the teams to more
aggressively remove packages in their realm that do not work, which
should not be postponed and left to the release team).

I agree that the GCD is a bit ambiguous about this and in particular the
removal procedure; it mentions the "deprecation policy", but this takes
a month in itself, so is probably not compatible with the tight release
schedule.

So as a practical example, I suppose we will define a desktop
environment package set; gnome will certainly be a part of it, and maybe
something else (xfce? sway?), but probably neiter lxqt nor kde. Then if
lxqt does not build, the release team would not care. If gnome does not
build, the release team would push the gnome team to repair it. In
theory gnome could be removed from the release, but I find it difficult
to imagine, although it would be possible as a last resort, together
with an entry in the release announcement. More likely, we will all push
very hard to get gnome in. But probably renounce at a last minute
transition to a newer gnome version.

Toggle quote (5 lines)
> Does this clarify? I see this proposal as trying to 1) manually fix 2)
> all of Guix's problems in 3) a shortened time window, shrinking what
> we are unable to maintain in 12 months into a few weeks (the only
> thing missing is closing all issues during the release cycle).

Definitely not all problems, but we hope at least some!

Toggle quote (6 lines)
> And maybe it works! Maybe the 10x and 100x contributors, including the
> sponsors of this GCD, will happily fix everything and make this
> happen. I can accept that. But why not just do that already? Are the
> core developers not empowered? Too deferential? What improvements does
> this GCD offer other than a process to "encourage and excite"?

This is the hope, that "encourage and excite" will make the difference
during a release cycle. Clearly we cannot all be excited all the time :)

Andreas
A
A
André Batista wrote on 16 May 13:02 -0700
Re: [bug#78332] GCD005: Regular and efficient releases
(name . Steve George)(address . steve@futurile.net)(address . 78332@debbugs.gnu.org)
aCeZxK0-0dbsc6kb@andel
Hi,

sex 09 mai 2025 �s 13:53:39 (1746809619), steve@futurile.net enviou:
Toggle quote (11 lines)
> Hi all,
>
> It's been ~2.5 years since the last Guix release, which led me to think we should do another one! Initially, I was just going to see if anyone wanted to create a release project. But, before I knew it I was writing a GCD! ...
>
> Below you'll find a proposal for moving to a regular release cycle.
>
> Thanks to Andreas Enge, Ludovic Court�s and Efraim Flashner for their initial comments and insights. They've agreed to sponsor it - which means they agree with the general direction (but not necessarily with all aspects), and will help to 'garden' the discussion to move us towards a consensus on whether it's a good proposal.
>
> This is a **draft** submission so I look forward to your consideration of it, thoughts and comments.
>

First of all, thanks for this initiative, we're certainly in need of a more
structured and reliable release process. I have no experience doing guix
(or any distro) release, so take or drop my comments as you see fit.

I'm not sure a GCD is the proper way to tackle the release issue. As we say
here in the global south - where November is spring :) - "you are putting the
cart before the oxen", meaning its the oxen that should be dragging the cart,
not the other way around.

Since we've been having problems producing a release for the past years, I feel
that aiming to shorten the release time span before even having had a release
might not be the best way to achieve the proposed goal. What happens if we
approve this GCD, but then no one assumes the roles of a release team? How
could we "enforce" this GCD on a volunteer project?

Wouldn't it be better to first establish and organize a release team, with the
goal of releasing v. 1.5.0 as soon as possible and with the secondary goal
of establishing/documenting a release process/schedule for future releases?
IMO, this does not require a GCD, "just" people volunteering to the work at
hand.

In a sense, I agree with other comments here that maybe we should treat
releases as something less disruptive of our normal activities. So, instead
of aiming to mimick what other - larger and more resourceful - distros do, we
could aim to do it in a way that is compatible with our own routines and
resources.

What I envision is something like:

1. The release team focuses mainly on the artifacts. Those should routinely
be automatically built, regardless if we are about to release;

2. The relase team keeps a watchful eye on CI/QA for the build status of main
architectures and packages needed to build the installer and images for those;

3. Once some major changes (linux-lts, gnome, toolchain, etc) hit master and
CI shows that those are good and the successful build percentage is on a
historical high on CI/QA for the major architectues, the release team proposes
a new release to guix-devel;

4. Once proposed, any other major changes (anything that currently warrants
a separate branch) are delayed for two weeks;

5. During these two weeks, the release team has the authority to revert any
breaking changes (new build failures) commited to master and everyone is
invited to test the latest beta-release artifacts;

6. If no release critical bugs are found, the relase team adds a commit
tagging the new release with a news entry and a blog post summarizing the
main changes since the last release and publishes the artifacts;

7. If release critical bugs are found and cannot be fixed in time, the
release proposal is withdrawn and people are invited to work on the rc-bugs
and major changes can be again merged to master. Go back to item 3, but a
new release proposal can only be made if the already rc-bugs are fixed and
the major changes that were delayed at the time of the last proposal had the
opportunity to be merged.

Does that make any sense?

Cheers
A
A
Andrew Tropin wrote on 17 May 23:27 -0700
Re: [bug#78332] [PATCH 1/1] 005-regular-releases: Initial draft of GCD005 'Regular and efficient releases'.
(name . Steve George)(address . steve@futurile.net)
87ikly5t74.fsf@trop.in
Hi Steve,

Thank you very much for all the effort you put into research, analysis
and comming up with this very detailed proccess proposal.

I'm a very slow reader, so I went through the whole GCD, but only
briefly skimmed the discussions in this thread. Will share my overall
thoughts below.

Slow guix pull is a technical problem, not organizational, while we can
work around it by including checkout and auth cache into iso and
releasing often, ideally the guix pull itself and its speed should be
improved, not the release cycle introduced.

The similiar for quality control. We have a huge number of contributors
and very small number of maintainers and there can be a bottleneck here.
Also we have very blurry maintanance responsibility for any particular
package or group of packages. So, we can definitely improve in this
area as well. By asking release team for commitment we just push those
duties and responsibilities to release managers and engineers (which can
be viable strategy, but I'm not sure). I also have concerncs on the
amount of commitment and effort required by a volunteering release team.

My intuition suggests to radically reduce the scope and complexity of
the release process and focus only on producing fresh live system and a
few other artifacts. We can just ensure that live system and standalone
package manager work properly and people can boot it/install via apt in
Debian/etc. After that they anyway make guix pull/time-machine, so we
probably don't need to make a release commit from which iso is built to
have all the packages in a perfect working shape.

I actually have much more thoughts, but I think those above are most
relevant and hope clear and useful. Appreciate your work!

Toggle quote (375 lines)
> * 005-regular-releases: New file.
> ---
> 005-regular-releases.md | 449 ++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 449 insertions(+)
> create mode 100644 005-regular-releases.md
>
> diff --git a/005-regular-releases.md b/005-regular-releases.md
> new file mode 100644
> index 0000000..c9fb0ac
> --- /dev/null
> +++ b/005-regular-releases.md
> @@ -0,0 +1,449 @@
> +title: Regular and efficient releases
> +id: 005
> +status: draft
> +discussion: https://issues.guix.gnu.org/<number assigned by issue tracker>
> +authors: Steve George
> +sponsors: Andreas Enge, Ludovic Courtès, Efraim Flashner
> +date: <date when the discussion period starts>
> +SPDX-License-Identifier: CC-BY-SA-4.0 OR GFDL-1.3-no-invariants-or-later
> +---
> +
> +# Summary
> +
> +Guix doesn't have regular release cycle which has led to infrequent new
> +releases. Sporadic releases are detrimental for our users, contributors and
> +the project. This GCD proposes we implement an annual release cadence and
> +simplify the release process to make releases easier.
> +
> +The project currently releases new versions of Guix on an ad hoc frequency.
> +The 1.4.0 release happened in December 2022 [^1], which is almost 2.5 years
> +ago, at the time of writing.
> +
> +The weaknesses in this release strategy are:
> +
> +1. No clarity on when the next Guix release is.
> +2. Releases are complex and toil for developers.
> +3. Rolling updates aren't suitable for all users.
> +
> +This GCD proposes the following combined solution:
> +
> +1. Regular releases: switch to a time-based release of Guix every year.
> +2. Efficient releases: use *package sets* and *supported architectures* to
> +reduce the scope of work required to create a Guix release.
> +
> +The benefits will be:
> +
> +1. New installations of Guix will be better because installation media and
> + manuals will be up to date, and the initial 'guix pull' will be faster.
> +2. Package installation will improve for all users. Packages will be ungrafted
> + during each release cycle.
> +3. Package quality will improve for all users, because regular releases will
> + provide a cadence for focusing on our quality.
> +4. A regular cadence for promoting the project to potential users. Helping us
> + to inform more people about the benefits of using GNU Guix!
> +5. A regular release cycle is a rallying point for our contributors giving them a
> + consistent calendar of when to focus on releases versus other hacking.
> +
> +Adding a slower-moving branch akin to Nix's stable could be an eventual goal as
> +it would increase Guix's suitability for some users and use-cases [^2]. However,
> +this GCD only sets out to implement regular releases which is a substantial
> +change that would be a big improvement for our users.
> +
> +
> +# Motivation
> +
> +Releases are important for any Free Software project because they update the
> +user experience and are a focal point for excitement [^3]. Regular releases
> +help us to improve the quality of our software by bringing focus, and
> +exercising regular usage scenarios (e.g. testing the installer).
> +
> +The majority of distributions follow time-based releases, six months is a
> +common cycle time. For further comparison see the research on the
> +[release strategies of distributions] (https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt)
> +. A summary is:
> +
> +- NixOS: releases every six months (May/November), both rolling release and
> +slower stable branch.
> +- OpenSUSE: rolling release, slow-roll release and fixed releases.
> +- Ubuntu: every six months, with 9 months maintenance. LTS releases every
> +2 years.
> +- Debian: Every 2 years (not time fixed), with about six months of package
> +updates freeze before the release while bugs are ironed out.
> +
> +As a rolling release Guix immediately provides the latest improvements to
> +users. Consequently, it could be argued that releases are unnecessary.
> +However, they provide a focal point for the project to undertake additional
> +testing and stabilisation across the repository. They also ensure we update
> +installation media, documentation, themes and web site.
> +
> +A specific issue caused by irregular releases is that new users/installs face a
> +significant first "guix pull". This provides a poor initial user experience,
> +and in some cases may even deter users [^4]. Additionally, it requires the
> +project to keep old substitutes on our servers.
> +
> +Regular releases are also good for casual users because they provide an
> +opportunity for us to promote new features and improvements. For prospective
> +users promotional activity about the release means they are more likely to hear
> +about capabilities that will attract them to experiment with Guix.
> +
> +Many desktop distributions release every six months to align with the major
> +desktop environments (GNOME/KDE) who release two or three times a year. This is
> +why Nix (May/November) and Ubuntu (April/October) align their releases.
> +
> +Since Guix is used [extensively as a desktop] (https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-1/)
> +it would make sense to align with these upstream releases. However, given that
> +Guix is a volunteer project that doesn't have the practise of releasing it's
> +unrealistic to move to two releases a year. Something along these lines could
> +be a future goal [^5].
> +
> +This GCD proposes an annual release cycle, with releases **in May**.
> +
> +To move onto this cycle the first release would be a little later: aiming for
> +the **November of 2025**, with a short cycle to release in May 2026.
> +
> +
> +## Package Sets
> +
> +There are currently over 30,000 packages in the archive, it's unrealistic for
> +all packages to receive the same amount of QA effort for a release.
> +
> +Many other distributions focus attention on the critical parts of their
> +repository by identifying those packages that are required for a particular
> +user-case. For example, Arch Linux limits their efforts to a specific
> +repository (called "main"). Ubuntu identifies various seeds for specific
> +use-cases which determines their maintained packages; other packages outside
> +these sets do not receive security updates.
> +
> +Guix is both a package manager that can be hosted on other Linux distributions,
> +and a Linux distribution. Limiting the range of packages that receive attention
> +is consequently more complicated. Guix already has manifests to track which
> +packages are used by [Guix System's installer](https://git.savannah.gnu.org/cgit/guix.git/tree/etc/manifests/release.scm)
> +, so this proposal extends that concept.
> +
> +For this proposal Guix would identify key package sets which would receive the
> +most attention for QA'ing a release.
> +
> +The package sets would be:
> +
> +* minimal: packages required to boot and install a minimal Guix or Guix System
> +install. This would include the guix daemon, kernels, boot loaders,
> +file-systems and minimal utilities.
> +* standard: packages that create a core installation for all other uses.
> +* desktop: provides the packages necessary for a desktop. This would include
> +things like X11/Wayland, desktop environments, key applications and themes.
> +* server: provides packages and services for a server. This would include
> +standard server packages and services.
> +* hosted: provides packages and services which are necessary in hosted usage.
> +
> +Guix would still make all packages and services part of a release (the entire
> +archive), but only those in the `package sets` could block a release due to a
> +significant bug. The goal would be for this to be as small a set of packages
> +as reasonably possible. It would mean that developers could focus on the
> +critical packages and services during a release. As an example, this would
> +mean that a major issue in the Linux kernel could block a release, but not an
> +issue in a game.
> +
> +
> +## Platforms and Architecture tiers
> +
> +Guix is built and maintained on multiple different architectures, and two
> +kernels (Linux, GNU Hurd). As the goal of the project is to maximise user
> +freedom this variety is significant and is a key motivator for developers.
> +
> +However, with limited resources (developer and CI) we want to make it as
> +efficient as possible to create a release. The more toil involved in a release
> +the less likely developers are to work on it.
> +
> +The [2025 Guix User Survey](https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-2/)
> +showed that 98% of users were on x86_64 and 19% on AArch64. Consequently, the
> +proposal is the following tiers:
> +
> +- Primary architectures:
> + - Architectures: x86_64, AArch64
> + - Kernel: Linux
> + - Coverage: all packages and services that are not explicitly platform
> + specific must work to be included in the archive.
> + - Package status: package updates should build for this architecture. If a
> + package update is broken it must not be pushed to users (e.g. master).
> + - Security: all packages that are maintained upstream receive updates
> +
> +- Alternative architectures
> + - Architectures: all others
> + - Kernel: Linux, Hurd
> + - Coverage: all packages and services that are not explicitly platform
> + specific may build
> + - Package status: package updates should work for this architecture.
> + Updates that do not build for this architecure, but do build for a primary
> + architecture may be pushed to users.
> + - Security: no commitment to providing security updates for this architecture.
> +
> +Packages or services that do not build for the Primary architectures as part of
> +a release would be removed from the archive using Guix's deprecation policy.
> +
> +
> +## Release artifacts
> +
> +Using the primary architecture tier and the package sets would involve creating
> +the following release artifacts:
> +
> +- GNU Guix System ISO image
> +- GNU Guix System QCOW2 image
> +- GNU Guix installer
> +
> +Again in an effort to reduce developer toil, additional release artifacts could
> +be created but would not be part of the formal release testing and errors would
> +not block a release.
> +
> +
> +## Release team and project
> +
> +A regular release cycle should galvanise all Guix developers to work on our
> +releases. But, to ensure there are sufficient people involved a call will be
> +put out to create a specific release team for each release project. We would
> +expect the final release team to be around four-six members. The release team
> +will work together to fix issues and test the various release artifacts. The
> +expectation is that the release projects will be as short as possible, around
> +a 12 week commitment with each team member having a few hours a week to take
> +part.
> +
> +To manage the release it's proposed that each release will have a Release Manager
> +role. The role of the Release Manager is to:
> +
> +- co-ordinate the release project
> +- communicate with the release team and wider developers status and blockers
> +- arbitrate changes to release blocking bugs, package sets and release
> + artifacts
> +- influence and assist teams to resolve problems
> +- define the release artifacts and create them
> +- encourage and excite **everyone to create and test the release**
> +
> +The Release Management role is likely to require the most effort, so it will
> +be rotated and consist of two people from the release team. For each release
> +there would be a primary person and a secondary person in the role. The
> +primary person is new to the role. The secondary person has previously done it
> +and is mentoring the new person. The impact of this is that each new release
> +manager is agreeing to take responsibility during two release cycles.
> +This system is modelled on the [Nix release management](https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt/nix-release-mgmt.md)
> +approach.
> +
> +One of the release team will take on the role of Release Advocate [^6]. They
> +will take responsibility for preparing the release announcement and
> +coordinating the creation of content to promote the new release (e.g. web site)
> +This role can be done by any member of the Guix community who has sufficient
> +interest.
> +
> +The final release team is:
> +
> +- a new Release Manager
> +- a returning Release Manager
> +- up to 4 other members, one of whom acts as the Release Advocate
> +
> +The Release Managers of each release will create and communicate a release
> +project plan setting out the stages and dates for each stage. To try and
> +galvanise the Guix development team to focus on the release it's envisioned
> +that a release project will be about 12 weeks. See Appendix 1: Release Project
> +Time-line for an example.
> +
> +In order to improve knowledge transfer and reduce the toil of doing releases
> +the Release Managers for a release will document the release process. There is
> +inspiration for this in [NixOS's release wiki](https://nixos.github.io/release-wiki/Home.html)
> +and we already have detailed [release documentation](https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/doc/release.org)
> +.
> +
> +
> +# Cost of Reverting
> +
> +If regular releases were not successful then the project would switch back to
> +irregular releases. There would be no impact for exiting users as they will
> +be tracking the rolling release's master branch.
> +
> +If the project is able to successfully undertake regular releases then over
> +time it may be possible to undertake full releases every six months or some
> +other release cadence.
> +
> +
> +# Drawbacks and open issues
> +
> +There's no particular drawback to attempting regular release. It should be
> +noted that the project is entirely dependent on volunteers so it may be that
> +contributors don't have enough time available to achieve regular releases. If
> +that's the case we would revert back to irregular releases.
> +
> +There are various improvements that could be made to this process over time,
> +but no known issues.
> +
> +
> +# Appendix 1: Release Project Time-line
> +
> +To illustrate the major steps of a release project this is a rough time-line.
> +The aim is for a 12 week active release project, with the first one using 16
> +weeks in total to give teams time to prepare.
> +
> +The current outline builds from our current [release document](https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/doc/release.org)
> +
> +| Week of Project | Event |
> +| --- | --- |
> +| -5 | Nominate a release team |
> +| -4 | Notify teams of upcoming release |
> +| 01 | Release project start |
> +| 04 | Toolchain and transition freeze |
> +| 05 | Package set finalisation |
> +| 06 | Initial testing |
> +| 08 | Updates freeze |
> +| 08 | Breaking changes to staging |
> +| 08 | Ungraft master branch |
> +| 09 | Bugs and documentation focus |
> +| 09 | Branch and tag release branch |
> +| 09 | Testing and hard freeze |
> +| 10 | Release candidate |
> +| 12 | Final release |
> +| 13 | Staging merged to master |
> +| 14 | Release retrospective |
> +| 15+| Relax - it's done! |
> +
> +### 1. Nominate a release team
> +Nominate a release team with two Release Managers (1 is the previous RM), and
> +up to 4 other people who will work on the release. Put out a call for a Release
> +Advocate who can be anyone in the Guix community who's willing.
> +
> +### 2. Notify teams of upcoming release
> +Make sure all teams are aware of the upcoming release. This gives them 4 weeks
> +to undertake any large transitions or major changes.
> +
> +### 3. Release project start
> +Start the project with weekly updates to guix-dev and regular meetings of the
> +release team. Encourage participation in testing and identifying bugs from
> +the community.
> +
> +### 4. Toolchain and transition freeze
> +No major changes to toolchains (e.g. gcc-toolchain, rust-1.xx) or runtimes
> +(e.g. java). There should be no changes that will cause major transitions.
> +
> +Debian defines a transition as one where a change in one package causes changes
> +in another, the most common being a library. This isn't suitable for Guix since
> +any change in an input causes a change in another package. Nonetheless, any
> +change that alters a significant number of packages should be carefully
> +considered and updates that cause other packages to break should be rejected.
> +
> +No alterations to the Guix daemon or modules are accepted after this point.
> +Packages and services in the 'minimal' package set should not be altered.
> +
> +### 5. Package set finalisation
> +Specify the package sets for this release. Identify all packages and their
> +inputs so that a full manifest for the release is created.
> +
> +### 6. Initial testing
> +An initial testing sprint to look at packages, services, install media and
> +upgrade testing. This should identify:
> +
> +* packages or services that may need to be removed because they fail on a
> + primary architecture
> +* packages and services in the package sets install and can be used
> +* installation artifacts can be created and used
> +* example system definitions can be used
> +* system upgrades
> +
> +A build failure of a package or service will result in it being identified for
> +removal. A build failure of a package or service that's in a package set will
> +be marked as a blocker for the release.
> +
> +### 7. Updates freeze
> +Major package updates are frozen on 'master' as the focus is on fixing any
> +blocking packages. Security updates still go to 'master'.
> +
> +### 8. Breaking changes to staging
> +To avoid a period of time where teams can't commit breaking changes, these are
> +sent to a new 'staging' branch, rather than directly to master. The master
> +branch slows down from this week.
> +
> +This concept comes from the Nix project where they flow big changes into a
> +staging branch while they do release stabilisation to prevent big flows of
> +breaking changes into master which broke one of their releases [^7].
> +
> +Team branches can still be folded into the re
This message was truncated. Download the full message here.
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEKEGaxlA4dEDH6S/6IgjSCVjB3rAFAmgpfe8ACgkQIgjSCVjB
3rD0wQ//Uxq96fUqDymORUv7aY2ZWFqAPwrg/GLK35EDj/Sg1jd/JxwDA/5+oi9i
JTAqy4PtWJ5ugj0KQTixRIOw7Ydd4AfJhZUw3k4M9n4zpnrArjbn14GpdVe5gmjf
ozh9hwfHWTcIDHc6sRwSQaUvZvoDvXYtCXHNUT/aBKnAzRc7zJAHdQdqEFAT7/8Z
2nB2oGZHfsTxGOrLaoJtJFPWDfi+ASWKYnjiVdehTtkRVUcQP3qDcRt4m2ya+ZYC
4cAKVy0IFKvaNjJeLRzlr9OCX75I+931j5C96T3YD9K/ac1e+jH0hvleMGDtdvmb
xZ+OhV9kDbkXILpv4PFt4ak2Oc+PWBXJSzHlqZ0T+HtosLcwY4XQ2zCxXYAnvIDx
xS40mmYFxsrEVwLw0IhbkS+Ec5du6GrBZS9InncYWb6XvWfIkd+aIeSDn54VVSAx
utr/XYobWMd61rtPl5zYI+I6JqAp39ppUPjfPbsebVLK4KDW8Z5xhWqxDJ+KXVLL
Z37jtk9tt7qM+2pK6fdkMbn4Zuk8Zo/y2q7/cQFwkhFAKUDdVvdr++VxYkg0OCwO
eYvEL3AZWi7Uv2YYbzyhFJoVD1GSIy0Jl2LZCTpeEry+r7U2C/Fp/RrNsPAIWS83
6zdkqzoCPCP9p74DnoeJCNUmDGzhDwrhZgWDwFxsEQgK0a20Tps=
=4Ic+
-----END PGP SIGNATURE-----

J
J
Jelle Licht wrote on 19 May 06:04 -0700
Re: GCD005: Regular and efficient releases
(address . 78332@debbugs.gnu.org)
87ecwkzr8o.fsf@fsfe.org
Hey folks,

Steve George <steve@futurile.net> writes:

Toggle quote (4 lines)
> Hi all,
>
> It's been ~2.5 years since the last Guix release, which led me to think we should do another one! Initially, I was just going to see if anyone wanted to create a release project. But, before I knew it I was writing a GCD! ...

it happens to the best of us ;-). Thanks for working on this!

Toggle quote (5 lines)
>[snip]
> Many desktop distributions release every six months to align with the major
> desktop environments (GNOME/KDE) who release two or three times a year. This is
> why Nix (May/November) and Ubuntu (April/October) align their releases.

I think that this is a good point to make, but at the same time we may
not want to have other projects to direct our release cadence. Not
because we don't want to play along, but rather because it causes undue
stress and adds arbitrary deadlines that are hard to work around
w.r.t. our current volunteer group of contributors.

Toggle quote (45 lines)
> it would make sense to align with these upstream releases. However, given that
> Guix is a volunteer project that doesn't have the practise of releasing it's
> unrealistic to move to two releases a year. Something along these lines could
> be a future goal [^5].
>
> This GCD proposes an annual release cycle, with releases **in May**.
>
> To move onto this cycle the first release would be a little later: aiming for
> the **November of 2025**, with a short cycle to release in May 2026.
>
>
> ## Package Sets
>
> There are currently over 30,000 packages in the archive, it's unrealistic for
> all packages to receive the same amount of QA effort for a release.
>
> Many other distributions focus attention on the critical parts of their
> repository by identifying those packages that are required for a particular
> user-case. For example, Arch Linux limits their efforts to a specific
> repository (called "main"). Ubuntu identifies various seeds for specific
> use-cases which determines their maintained packages; other packages outside
> these sets do not receive security updates.
>
> Guix is both a package manager that can be hosted on other Linux distributions,
> and a Linux distribution. Limiting the range of packages that receive attention
> is consequently more complicated. Guix already has manifests to track which
> packages are used by [Guix System's installer](https://git.savannah.gnu.org/cgit/guix.git/tree/etc/manifests/release.scm)
> , so this proposal extends that concept.
>
> For this proposal Guix would identify key package sets which would receive the
> most attention for QA'ing a release.
>
> The package sets would be:
>
> * minimal: packages required to boot and install a minimal Guix or Guix System
> install. This would include the guix daemon, kernels, boot loaders,
> file-systems and minimal utilities.
> * standard: packages that create a core installation for all other uses.
> * desktop: provides the packages necessary for a desktop. This would include
> things like X11/Wayland, desktop environments, key applications and themes.
> * server: provides packages and services for a server. This would include
> standard server packages and services.
> * hosted: provides packages and services which are necessary in hosted usage.

My two cents: focus only on minimal, perhaps extended in such a way that
this is a system that after the first reboot allows one to run guix
pull.

Ditto for 'foreign-guix': any version of guix that doesn't burn down the
house on updating itself seems like it would be 'enough', and still a
strict improvement over the current situation.

Toggle quote (8 lines)
> Guix would still make all packages and services part of a release (the entire
> archive), but only those in the `package sets` could block a release due to a
> significant bug. The goal would be for this to be as small a set of packages
> as reasonably possible. It would mean that developers could focus on the
> critical packages and services during a release. As an example, this would
> mean that a major issue in the Linux kernel could block a release, but not an
> issue in a game.

This makes a lot of sense to me, although I could be centered around
'functional' breakage w.r.t. allowing the installation to update itself
past any major issues via guix pull (+ guix system reconfigure or
equivalent).

Toggle quote (2 lines)
> [snip]

Thanks again for the detailed analysis and proposal,
- Jelle
S
S
Steve George wrote on 21 May 10:10 -0700
Re: GCD005: Regular and efficient releases (submitted)
(address . guix-devel@gnu.org)(address . 78332@debbugs.gnu.org)
lv4hf46qhytwl6jlsi75wkldy45s3mcgyucaqxtzhls7trofk4@fxpbnuwb3zjt
Hi all,

Thanks for all the feedback on the initial proposal.

I've integrated it into the GCD so attached is a revised version. I think it's ready to move to the Discussion Period (minimum 30 days from today).

A short summary of the changes in this version:

- Rename staging to integration branch with suggestion of next-master [Zheng Junjie]
- Add benefit of updated distribution through other package managers [Rutherther]
- Remove reference to faster initial git pull [Rutherther]
- Move target annual release to June [Rutherther]
- Reduce freeze period by breaking it up into stages [Rutherther & others]
- updates freeze (week 8->12), hard freeze (week 10-12)
- Identify pacakge sets earlier [Vagrant]
- Reword template plan to show weeks [Vagrant]
- Add alternative release target weeks to plan [Vagrant]
- Identify 'at risk' packages earlier [Greg / Andreas]
- Make automation a goal of the Release process & release team [Greg / Ekaitz / reza]
- Reduce the scope of package sets [Jelle / Efraim]
- Provide more clarity on dealing issues in package sets [Rurtherther]
- Try to clarify options around RC bugs and package build failures
- Try to clarify purpose of release project plan as a template

I would love to know if this improves things from any feedback that you gave?

As well as any other thoughts, comments or ideas on how to improve this GCD!

Steve / Futurile
E
E
Efraim Flashner wrote on 22 May 00:15 -0700
(name . Steve George)(address . steve@futurile.net)
aC7PAHZ9lHox0scM@3900XT
Attachment: file
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmguzvwACgkQQarn3Mo9
g1EwqA//elN6mHe1dECbhI1e9I+hGj08d62WiFL2uC+ZlCoLk0B6/orbFgeurP/5
xrAJEMEyRrhgSh3vBn9JvOzLbToxsvnYX5S4+E9/CnqNBUYJdoMkqXEQXti2RSMM
sY+PmOHym4cjWb3HKmP8aA2ja++vuBu0aahMjOL6tj3Bas9QOOhBrG1ZsW7qAiIP
8GjlIwgWsZ5zv9/Kwybk6d2dDiKYzGTucLhSQ4Qjuc9csTMbPwpuhGuvxQP/6btE
BQYvFf07GqMUjHjArt0xFKrB41s/zWkgIjTUPWvdOEcmj0rLo0t4a5NIpO//3rIE
B6AAYL8dyn548MDFlEZ4yUobOzvijOHM8gOrgLgoVRnH7UWghLd5QLVFkylo/s6p
v/zTY7wgwacNZEB00aia+x03jT4vU8NLZ3y5swgR+WPW6kpEWSjL3g427lNQ2NBo
yAKAj2nYjlKzIqt7JxSj7fkySxgO7bVoW98jswnRg8mI+kNJT2GcQOODgDejZ+P3
CyLhyulxqHLQ3PNoGx9sE5Ea4koDpFggXKmoKxtUxETXjc+2RPenG9Yckce3nL/y
f8PLddm6WlUkCJeQjUwHbpJsC52XgjlC4AfKRzzbNhweTkZjXxcjMM35Q0HowvwJ
V7ikHgaNdsNM+PPR+1D60mQ5ZdI3IMN8oQ4/hp7WEUUJh7y8dX8=
=fYPZ
-----END PGP SIGNATURE-----


N
N
Noé Lopez wrote on 22 May 01:55 -0700
(address . 78332@debbugs.gnu.org)
87ldqpxbw1.fsf@xn--no-cja.eu
Steve George <steve@futurile.net> writes:

Toggle quote (29 lines)
> Hi all,
>
> Thanks for all the feedback on the initial proposal.
>
> I've integrated it into the GCD so attached is a revised version. I think it's ready to move to the Discussion Period (minimum 30 days from today).
>
> A short summary of the changes in this version:
>
> - Rename staging to integration branch with suggestion of next-master [Zheng Junjie]
> - Add benefit of updated distribution through other package managers [Rutherther]
> - Remove reference to faster initial git pull [Rutherther]
> - Move target annual release to June [Rutherther]
> - Reduce freeze period by breaking it up into stages [Rutherther & others]
> - updates freeze (week 8->12), hard freeze (week 10-12)
> - Identify pacakge sets earlier [Vagrant]
> - Reword template plan to show weeks [Vagrant]
> - Add alternative release target weeks to plan [Vagrant]
> - Identify 'at risk' packages earlier [Greg / Andreas]
> - Make automation a goal of the Release process & release team [Greg / Ekaitz / reza]
> - Reduce the scope of package sets [Jelle / Efraim]
> - Provide more clarity on dealing issues in package sets [Rurtherther]
> - Try to clarify options around RC bugs and package build failures
> - Try to clarify purpose of release project plan as a template
>
> I would love to know if this improves things from any feedback that you gave?
>
> As well as any other thoughts, comments or ideas on how to improve this GCD!
>

Hi Steve,

Thanks for this great GCD!

I assume the GCD would end after June, so will there be a july/august
release or will we have to wait for a year?

Few comments below.

Have a great day,
Noé

Toggle quote (58 lines)
> Steve / Futurile
>
> title: Regular and efficient releases
> id: 005
> status: submitted
> discussion: https://issues.guix.gnu.org/78332
> authors: Steve George
> sponsors: Andreas Enge, Ludovic Courtès, Efraim Flashner
> date: <date when the discussion period starts>
> SPDX-License-Identifier: CC-BY-SA-4.0 OR GFDL-1.3-no-invariants-or-later
> ---
>
> # Summary
>
> Guix doesn't have a regular release cycle which has led to infrequent new
> releases. Sporadic releases are detrimental for our users, contributors and
> the project. This GCD proposes we implement an annual release cadence and
> simplify the release process to make releases easier.
>
> The project currently releases new versions of Guix on an ad hoc frequency.
> The 1.4.0 release happened in December 2022 [^1], which is almost 2.5 years
> ago, at the time of writing.
>
> The weaknesses in this release strategy are:
>
> 1. No clarity on when the next Guix release is.
> 2. Releases are complex and toil for developers.
> 3. Rolling updates aren't suitable for all users.
>
> This GCD proposes the following combined solution for solving the challenges
> associated with #1. and #2. above:
>
> 1. Regular releases: switch to a time-based release of Guix every year.
> 2. Efficient releases: use *package sets* and *supported architectures* to
> reduce the scope of work required to create a Guix release. Create a
> rotating *Release Team* who will organise each release, with the goal of
> *automating releases* wherever possible.
>
> The benefits will be:
>
> 1. New installations of Guix will be better because installation media and
> manuals will be up to date. The version of Guix distributed through other
> Linux distributions will also be more recent.
> 2. Package installation will improve for all users. Packages will be ungrafted
> during each release cycle.
> 3. Package quality will improve for all users, because regular releases will
> provide a cadence for focusing on our quality.
> 4. A regular cadence for promoting the project to potential users. Helping us
> to inform more people about the benefits of using GNU Guix!
> 5. A regular release cycle is a rallying point for our contributors giving them a
> consistent calendar of when to focus on releases versus other hacking.
>
> This GCD doesn't attempt to address the challenge that rolling updates aren't
> suitable for all users (#3. above). Adding a slower-moving branch akin to
> Nix's stable could be an eventual goal [^2]. However, this GCD aims a single
> achievable change by implementng regular releases which is a
> substantial change

implementing*

Toggle quote (15 lines)
> that would be a big improvement for our users.
>
>
> # Motivation
>
> Releases are important for any Free Software project because they update the
> user experience and are a focal point for excitement [^3]. Regular releases
> help us to improve the quality of our software by bringing focus, and
> exercising regular usage scenarios (e.g. testing the installer).
>
> The majority of distributions follow time-based releases, six months is a
> common cycle time. For further comparison see the research on the
> [release strategies of distributions]
> (https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt)

No space between ] and (

Toggle quote (194 lines)
> . A summary is:
>
> - NixOS: releases every six months (May/November), both rolling release and
> slower stable branch.
> - OpenSUSE: rolling release, slow-roll release and fixed releases.
> - Ubuntu: every six months, with 9 months maintenance. LTS releases every
> 2 years.
> - Debian: Every 2 years (not time fixed), with about 4-5 months of package
> updates freeze before the release while bugs are ironed out.
>
> As a rolling release Guix immediately provides the latest improvements to
> users. Consequently, it could be argued that releases are unnecessary.
> However, they provide a focal point for the project to undertake additional
> testing and stabilisation across the repository. They also ensure we update
> installation media, documentation, themes and web site.
>
> A specific issue caused by irregular releases is that new users/installs face a
> significant first "guix pull". This provides a poor initial user experience,
> and in some cases may even deter users [^4]. Additionally, it requires the
> project to keep old substitutes on our servers.
>
> Regular releases are also good for casual users because they provide an
> opportunity for us to promote new features and improvements. For prospective
> users promotional activity about the release means they are more likely to hear
> about capabilities that will attract them to experiment with Guix.
>
> Many desktop distributions release every six months to align with the major
> desktop environments (GNOME/KDE) who release two or three times a year. This is
> why Nix (May/November) and Ubuntu (April/October) align their releases.
>
> Since Guix is used [extensively as a desktop] (https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-1/)
> it would make sense to align with these upstream releases. However, given that
> Guix is a volunteer project that doesn't have the practise of releasing it's
> unrealistic to move to two releases a year. Something along these lines could
> be a future goal [^5].
>
> This GCD proposes an annual release cycle, with releases **in June**.
>
> To move onto this cycle the first release would be a little later: aiming for
> the **November of 2025**, with a short cycle to release in June 2026.
>
>
> ## Package Sets
>
> There are currently over 30,000 packages in the archive, it's unrealistic for
> all packages to receive the same amount of QA effort for a release.
>
> Many other distributions focus attention on the critical parts of their
> repository by identifying those packages that are required for a particular
> use-case. For example, Arch Linux limits their efforts to a specific
> repository (called "main"). Ubuntu identifies various seeds for specific
> use-cases which determines their maintained packages; other packages outside
> these sets do not receive security updates.
>
> Guix is both a package manager that can be hosted on other Linux distributions,
> and a Linux distribution. Limiting the range of packages and services that
> receive attention is consequently more complicated. Guix already has manifests
> to track which packages are used by [Guix System's installer](https://git.savannah.gnu.org/cgit/guix.git/tree/etc/manifests/release.scm)
> , so this proposal extends that concept.
>
> For this proposal each successive Release Team would identify key packages which
> would receive the most Quality Assurance (QA) attention in that release.
>
> The package sets would be:
>
> * minimal: packages required to boot and install a minimal Guix or Guix System
> install. This would include the guix daemon, kernels, boot loaders,
> file-systems and minimal utilities.
> * standard: packages that create a core installation for all other uses.
> * desktop: provides the packages necessary for a desktop. This would include
> the smallest set required for the initial environment.
>
> Guix would still make all packages and services part of a release (the entire
> archive). Guix teams would be asked to test the parts of the archive that they
> look after. But, only Release Critical bugs in the `package sets` would block
> a release.
>
> Packages within the `packages sets` must build on the primary architectures
> (see definition lower). As part of the release's QA contributors would be asked
> to test these packages.
>
> Where a significant issue is found within a package or service that's part of
> a `package set` the Release Team would work to resolve the problem. This could
> involve (but isn't limited to) fixing the underlying issue, documenting it as
> a limitation in the release notes or promoting an alternative and removing the
> broken package from the archive using the Deprecation Policy.
>
> Given the constraints on developers the overal aim of the `package sets` would
> be for them to be as small a set of packages and services as reasonably possible.
> It would mean that developers could focus on the critical packages and services
> during a release. As an example, this would mean that a major issue in the
> Linux kernel could block a release, but not an issue in a game.
>
>
> ## Platforms and Architecture tiers
>
> Guix is built and maintained on multiple different architectures, and two
> kernels (Linux, GNU Hurd). As the goal of the project is to maximise user
> freedom this variety is significant and is a key motivator for developers.
>
> However, with limited resources (developer and CI) we want to make it as
> efficient as possible to create a release. The more toil involved in a release
> the less likely developers are to work on it.
>
> The [2025 Guix User Survey](https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-2/)
> showed that 98% of users were on x86_64 and 19% on AArch64. Consequently, the
> proposal is the following tiers:
>
> - Primary architectures:
> - Architectures: x86_64, AArch64
> - Kernel: Linux
> - Coverage: all packages and services that are not explicitly platform
> specific must work to be included in the archive.
> - Package status: package updates should build for this architecture. If a
> package update is broken it must not be pushed to users (e.g. master).
> - Security: all packages that are maintained upstream receive updates
>
> - Alternative architectures
> - Architectures: all others
> - Kernel: Linux, Hurd
> - Coverage: all packages and services that are not explicitly platform
> specific may build
> - Package status: package updates should work for this architecture.
> Updates that do not build for this architecure, but do build for a primary
> architecture may be pushed to users.
> - Security: no commitment to providing security updates for this architecture.
>
> Packages or services that do not build for the Primary architectures as part of
> a release would be removed from the archive using Guix's deprecation policy.
>
>
> ## Release artifacts
>
> Using the primary architecture tier and the package sets would involve creating
> the following release artifacts:
>
> - GNU Guix System ISO image
> - GNU Guix System QCOW2 image
> - GNU Guix installer
>
> Again in an effort to reduce developer toil, additional release artifacts could
> be created but would not be part of the formal release testing and errors would
> not block a release.
>
>
> ## Release team and project
>
> A regular release cycle should galvanise all Guix developers to work on our
> releases. But, to ensure there are sufficient people involved a call will be
> put out to create a specific release team for each release project. We would
> expect the final release team to be around four-six members. The release team
> will work together to fix issues and test the various release artifacts. The
> expectation is that the release projects will be as short as possible, around
> a 12 week commitment with each team member having a few hours a week to take
> part.
>
> The project would like to achieve releases with the minimum amount of effort
> by developers. Consequently, a goal for each Release Team is to find ways to
> **automate releases** reducing the toil of successive releases.
>
> To manage the release it's proposed that each release will have a Release Manager
> role. The role of the Release Manager is to:
>
> - co-ordinate the release project
> - communicate with the release team and wider developers status and release
> critical bugs
> - arbitrate changes to release blocking bugs, package sets and release
> artifacts
> - influence and assist teams to resolve problems
> - define the release artifacts and create them
> - encourage and excite **everyone to create and test the release**
>
> The Release Manager role is likely to require the most effort, so it will be
> rotated and consist of two people from the release team. For each release
> there would be a primary person and a secondary person in the role. The
> primary person is new to the role. The secondary person has previously done it
> and is mentoring the new person. The impact of this is that each new release
> manager is agreeing to take responsibility during two release cycles.
> This system is modelled on the [Nix release management](https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt/nix-release-mgmt.md)
> approach.
>
> One of the release team will take on the role of Release Advocate [^6]. They
> will take responsibility for preparing the release announcement and
> coordinating the creation of content to promote the new release (e.g. web site)
> This role can be done by any member of the Guix community who has sufficient
> interest.
>
> The final release team is:
>
> - a new Release Manager
> - a returning Release Manager
> - up to 4 other members, one of whom acts as the Release Advocate
>

What happens in 6 years when there are no new release managers
available, can we reuse someone?

Toggle quote (107 lines)
> The Release Managers of each release will create and communicate a release
> project plan setting out the stages and dates for each stage. To try and
> galvanise the Guix development team to focus on the release it's envisioned
> that a release project will be about 12 weeks. See Appendix 1: Release Project
> Template for an example.
>
> In order to improve knowledge transfer and reduce the toil of doing releases
> the Release Managers for a release will document the release process. There is
> inspiration for this in [NixOS's release wiki](https://nixos.github.io/release-wiki/Home.html)
> and we already have detailed [release documentation](https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/doc/release.org)
> .
>
>
> # Cost of Reverting
>
> If regular releases were not successful then the project would switch back to
> irregular releases. There would be no impact for exiting users as they will
> be tracking the rolling release's master branch.
>
> If the project is able to successfully undertake regular releases then over
> time it may be possible to undertake full releases every six months or some
> other release cadence.
>
>
> # Drawbacks and open issues
>
> There's no particular drawback to attempting regular release. It should be
> noted that the project is entirely dependent on volunteers so it may be that
> contributors don't have enough time available to achieve regular releases. If
> that's the case we would revert back to irregular releases.
>
> Appendix 1: Release Project Template sets out a proposed time-line and major
> steps to be undertaken by the project to release a new version of Guix. It
> proposes freezing master while the team focuses on releasing the new version
> of Guix. Specifically, a major updates freeze (week 8->12), and a hard freeze
> (week 10->12). The drawback of this approach is that it would slow the
> velocity of changes. During this period contributors would have to keep
> updates on team branches, or use an alternative temporary branch. Each Release
> Team will iterate and improve the release process, so it's possible that this
> freeze period will be reduced, changed, or removed over successive releases.
>
> There are various improvements that could be made to the release strategy over
> time, such as adding an additional slower release cadence.
>
>
> # Appendix 1: Release Project Template
>
> To show the major steps of a release this release project template is a starting
> point. After each successive release the Release Team will undertake a
> retrospective and will document improvements that can be made to the release
> process and areas to automate to improve efficiency.
>
> The aim in this template is for a 12 week active release project, with the first
> one using 16 weeks in total to give teams time to prepare.
>
> The current outline builds from our current [release document](https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/doc/release.org)
>
> | Week of Project | Event |
> | --- | --- |
> | -5 | Nominate a release team |
> | -4 | Notify teams of upcoming release |
> | 01 | Release project start |
> | 03 | Package set finalisation |
> | 04 | Toolchain and transition freeze |
> | 06 | Initial testing |
> | 08 | Major updates freeze |
> | 08 | Breaking changes to next-master |
> | 08 | Ungraft master branch |
> | 09 | Bugs and documentation focus |
> | 09 | Branch and tag release branch |
> | 10 | Testing and hard freeze |
> | 10 | Release candidate |
> | 12 | Final release target |
> | 14 | Alternative release target #1 |
> | 16 | Alternative release target #2 |
> | +1 | Integration branch merged to master |
> | +2 | Release retrospective |
> | +2 | Relax - it's done! |
>
> ### Nominate a release team (week -5)
> Nominate a release team with two Release Managers (1 is the previous RM), and
> up to 4 other people who will work on the release. Put out a call for a Release
> Advocate who can be anyone in the Guix community who's willing.
>
> ### Notify teams of upcoming release (week -4)
> Make sure all teams are aware of the upcoming release. This gives them 4 weeks
> to undertake any large transitions or major changes.
>
> ### Release project start (week 01)
> Start the project with weekly updates to guix-dev and regular meetings of the
> release team. Encourage participation in testing and identifying bugs from
> the community.
>
> ### Package set finalisation (week 03)
> Specify the package sets for this release. The Release Team will identify all
> packages and their inputs so that a full manifest for the release is created.
>
> Packages that do not build for the primary architectures so could be risk of
> removal will be identified and developers will be notified following the
> Deprecation Policy.
>
> ### Toolchain and transition freeze (week 04)
> No major changes to toolchains (e.g. gcc-toolchain, rust-1.xx) or runtimes
> (e.g. java). There should be no changes that will cause major transitions.
>
> Debian defines a transition as one where a change in one package causes changes
> in another, the most common being a library. This isn't suitab
This message was truncated. Download the full message here.
-----BEGIN PGP SIGNATURE-----

iQHFBAEBCAAvFiEEXVTPJVeyOOiNwYCiLSIyQQq3QEMFAmgu5o8RHG5vZWxvcGV6
QGZyZWUuZnIACgkQLSIyQQq3QEPTqwv9Gq0/euKnA1bZmx5VQDiTjlb0sUkKWXsM
sie5i/72F+t9p9MpkDgBlCYhUpJh98RW5FbqEY0pvaju260eMUQLZK1Daap0a9AV
aWKkIGyEF9aHppbHAtA3DImwpJtMGqnZLed8kfhbLCfJ3HmHQfj+8MB09LnC+i68
Q2N083RcwlyUHl7gbTmpZyI6gJ6t9qnTGNgW161yUqtNWxmtym81Z/e3nWHxViQM
eXRCMO+79vcIGL+ZIKPkS4zl34wz7nQNEZWchIM535pCrFxOT+1FQv0kBARhLpDl
BxpN9hFB6jVLGm62OnDDH+xoDR9bGRqshx7aBvIydgpGGwtJRe9t6sJXMJ79ggIo
B4OSfjnVkdUvBSWw/Z4kZZ5zZ9D4fBUce9uew1L4Ii/6D9ko9EcLB1kBAEMiTgCv
welPitUZ0HO6NVzHMoWd5IaOV2idN2V8Et/I2UXMiHtepf2yYodzIpaz2jtaQO2y
4tdTWcl5zlH/tyx2cDMSgVUY50ym7Oaq
=lxSX
-----END PGP SIGNATURE-----

S
S
Steve George wrote on 22 May 02:11 -0700
6ihlri4vbh5wyes72lted4aog4rgsvknwfd2mmob7jocfvdna3@eopgziwcqu6g
On 22 May, Efraim Flashner wrote:
Toggle quote (1 lines)
> On Wed, May 21, 2025 at 06:10:13PM +0100, Steve George wrote:
(...)
Toggle quote (23 lines)
> > A specific issue caused by irregular releases is that new users/installs face a
> > significant first "guix pull". This provides a poor initial user experience,
> > and in some cases may even deter users [^4]. Additionally, it requires the
> > project to keep old substitutes on our servers.
>
> I think the guix pull issue isn't related to the release cadence but due
> to the size of the git repo and the number of authenticated commits.
> There's definitely work to be done to speed up the first guix pull, but
> I don't think it belongs in this GCD. How about:
>
> A specific issue caused by irregular releases is the time-bombs which
> exist in a number of packages and their test suites. People installing
> from a release tarball often find that important packages fail to build,
> making their initial attempts to use Guix unnecessarily hard. There are
> also the issues of disappearing upstream sources and the need to keep
> old substitutes on our servers.
>
> People using Guix on a foreign distro also often use the guix-daemon as
> packaged by that distribution. This means that any daemon related
> changes, such as a change in the compression algorithm of the
> substitutes or changing substitute servers can only be considered
> complete after the guix-daemon has been updated in those distributions
> as well.
(...)

Yes, fair enough that's more specific and clear. Added it.

(...)
Toggle quote (22 lines)
> > ### Branch and tag release branch (week 09)
> > The master branch is tagged and a new release branch is created.
> >
> > * master branch: security only.
> > * release branch: security updates as normal. Only RC blocking bugs.
> >
> > Only security updates go to the master branch from this point. All other
> > changes stay in a team branch or go to an integration branch. The focus on the
> > release branch is to stabilise so only resolutions to bugs should be pushed.
>
> I'm still not entirely sure about the branches.
> release-branch: security, RC bugs and where the release is prepared
> master branch: security only
> next-master: everything that would've gone to master
>
> Looking at some of the other bits of appendix 1 I'm better able to wrap
> my head around something like:
>
> release-branch: where the release is prepared, with merges from master
> master branch: security and RC bugs
> next-master: everything that would've gone to master

Given that the main purpose of the 'release-branch' is to track the final release artifacts I think we can do it either way around.

So, either:

- do work in master and sync to release at the end
- or work in release and sync to master at the end

I've updated to your scheme and tried to provide a short explanation, without lengthing this area too much!

(...)
Toggle quote (12 lines)
> > ### Testing and Hard Freeze (week 10)
> > Release Crictical (RC) bugs and issues should be solved for the release branch.
> >
> > Only changes that will fix a non-building package, or a RC bug in a
> > package/service are allowed. Ideally avoid new upstream versions, but it's
> > acceptable to use a new minor upstream version to solve a bug.
> >
> > Any non-building packages are removed using the Deprecation Policy.
>
> perhaps add: As always, packages can be un-deprecated at a later date.
>

Done.

Toggle quote (14 lines)
> > ### Alternative release target #2 (week 16)
> > This release target date may be used if the Release Team determines that there
> > are Release Critical bugs without workarounds at one of the previous target
> > dates.
> >
> > If the Release Team determines that the release has Release Critical bugs
> > without workarounds they may move the release to an alternative date or cancel
> > the release.
>
> I do like that there's a built-in "release or pass" time period where we
> can punt on the release and try again at another date. We don't want
> the possibility of a freeze dragging on for months.
>

It also speaks to Jelle's point, if the project doesn't have the volunteers to complete the release then we can just move on.

Steve / Futurile
-----BEGIN PGP SIGNATURE-----

iHUEABYKAB0WIQQIB6x23+hDA21fWHn1HUoW3O5vpwUCaC7qSQAKCRD1HUoW3O5v
p7UqAQCLJ8ikywJG9MdPKs8jrrkiWQMq0K3PgeSiYdkguuOU2gD+M3IuAkd3fmrq
UENk1ee4dFqIqozlZ87d50L9CZEgIwY=
=upTt
-----END PGP SIGNATURE-----


S
S
Steve George wrote on 22 May 02:36 -0700
(name . Noé Lopez)(address . noelopez@free.fr)
jvwqegcfdkoi4etv23lki5e3ana42bxdeoc34f5vbnwfobonjx@7k5soohkbfjx
Hi Noé,

On 22 May, Noé Lopez wrote:
Toggle quote (1 lines)
> Steve George <steve@futurile.net> writes:
(...)
Toggle quote (6 lines)
> Hi Steve,
>
> Thanks for this great GCD!
>
> I assume the GCD would end after June, so will there be a july/august
> release or will we have to wait for a year?
(...)

Asking other developers about timing the general sense was that asking volunteers to contribute to a release over July/August wouldn't work because everyone is on holiday (and hopefully doing something better than staring at their screen!).

Rather than wait a year I proposed:

Toggle quote (5 lines)
> > This GCD proposes an annual release cycle, with releases **in June**.
> >
> > To move onto this cycle the first release would be a little later: aiming for
> > the **November of 2025**, with a short cycle to release in June 2026.

Essentially, this would mean we'd start working on a release in the Autumn.

(...)
Toggle quote (11 lines)
> > The Release Manager role is likely to require the most effort, so it will be
> > rotated and consist of two people from the release team. For each release
> > there would be a primary person and a secondary person in the role. The
> > primary person is new to the role. The secondary person has previously done it
> > and is mentoring the new person. The impact of this is that each new release
> > manager is agreeing to take responsibility during two release cycles.
> > This system is modelled on the [Nix release management](https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt/nix-release-mgmt.md)
> > approach.
>
> What happens in 6 years when there are no new release managers
> available, can we reuse someone?
I wasn't suggesting a strict rotation where you can only do it once out of the X committers that we have. The new person is still a volunteer from the pool of committers. The idea of the "rotation" is to prevent it becoming one persons permanent chore and because of the 'bus-factor' risk. I expect that there will be a subset of active contributors who are interested/willing/able to work on a release, so the 'release manager' role will probably rotate around amongst that group - but not all contributors.

In principle, if we did get a lot of automation the RM role wouldn't have to be a committer, but as I understand it at the moment it does.

Fixed the other typos - thanks for going through it in detail, appreciated!

Steve / Futurile
-----BEGIN PGP SIGNATURE-----

iHQEABYKAB0WIQQIB6x23+hDA21fWHn1HUoW3O5vpwUCaC7wMQAKCRD1HUoW3O5v
px8IAPdJPlQHMBvnrGJsA6b0nCfapNomQmUpkYRPPlpHd2akAP9hffbTpfY9lB4t
RW2SMGRVmLNJL5/dtT1i+90GbqWiBg==
=eYfW
-----END PGP SIGNATURE-----


S
S
Steve George wrote on 22 May 03:01 -0700
Re: [bug#78332] GCD005: Regular and efficient releases
(name . Jelle Licht)(address . jlicht@fsfe.org)
3sq2ks4qfahmuo5jph6uq7wrttg2odsr6ck4xb6khssvfutewp@6h3fjptzk55v
Attachment: file
S
S
Steve George wrote on 22 May 03:58 -0700
(name . André Batista)(address . nandre@riseup.net)(address . 78332@debbugs.gnu.org)
i6jf2pa3hkshvyv7rsslfhglffejno5wmitun5xdbozdyvm4ld@hhmmsjqky4ql
Attachment: file
O
O
Olivier Rojon wrote on 4 Jun 21:22 -0700
Re: [bug#78332] [PATCH 1/1] 005-regular-releases: Initial draft of GCD005 'Regular and efficient releases'.
(name . Z572)(address . z572@z572.online)
87iklaq0ks.fsf@posteo.net
Hi guys :)

Z572 <z572@z572.online> writes:

Toggle quote (25 lines)
> Steve George <steve@futurile.net> writes:
>
>> On 9 May, Z572 wrote:
>>> Steve George <steve@futurile.net> writes:
>>>
>>> > +
>>> > +### 8. Breaking changes to staging
>>> > +To avoid a period of time where teams can't commit breaking changes, these are
>>> > +sent to a new 'staging' branch, rather than directly to master. The master
>>>
>>> I think we may need to change the name. We used the name staging before
>>> switching to the team-based process. If we reuse this name, it may cause
>>> confusion for later users when searching for information.
>>>
>>
>> No problem, is there something you would favour?
>>
>> If not, what about `next-master` to indicate that it's the next
>> master? If we think that's too generic we could give it a time-based
>> date `202509-next-master` - meaning it will be merged back in during
>> September 2025.
>
> I don't have any idea, 202509-next-master might be good, I don't know
> what others think

I am in favour of a naming scheme which reflects the time it was created. It might even
be sufficient to use just a year prefix since we assume there is only one created per year
(per release).

Have a good day :)
Olivier
S
S
Steve George wrote on 5 Jun 15:34 -0700
(name . Olivier Rojon)(address . o.rojon@posteo.net)
hlz25z24i4p66sq6p2ae7gda4uq5hou6lmrijk7zttl6d2lvcy@wtzhwdsfwsmt
Hi Olivier

On Thu, Jun 05, 2025 at 04:22:43AM +0000, Olivier Rojon wrote:
(...)
Toggle quote (19 lines)
> Z572 <z572@z572.online> writes:
> >>> I think we may need to change the name. We used the name staging before
> >>> switching to the team-based process. If we reuse this name, it may cause
> >>> confusion for later users when searching for information.
> >>>
> >>
> >> No problem, is there something you would favour?
> >>
> >> If not, what about `next-master` to indicate that it's the next
> >> master? If we think that's too generic we could give it a time-based
> >> date `202509-next-master` - meaning it will be merged back in during
> >> September 2025.
> >
> > I don't have any idea, 202509-next-master might be good, I don't know
> > what others think
>
> I am in favour of a naming scheme which reflects the time it was created. It might even
> be sufficient to use just a year prefix since we assume there is only one created per year
> (per release).
(...)

Just to make sure it's clear, this is the name for a branch that would be used for 8 weeks where major changes would be held. This is so that we don't destabilise our main branch ahead of a new release. The reason Z572 was concerned about reusing the name 'staging' is that this was previously tried, and this branch became long-lived and it was hard to merge it back into the main branch.

I was trying to think of a name that would imply that this branch would *only* be around for a few weeks. So suggested the month it was merging back in - to prevent it becoming long-lived. I don't think we should call it by the year as that might encourage our previous problem! What do you think, does that make sense?

Thanks,

Steve / Futurile
O
O
Olivier Rojon wrote on 5 Jun 21:07 -0700
(name . Steve George)(address . steve@futurile.net)
87bjr1wm1k.fsf@posteo.net
Ah, then there was a misunderstanding on my side, sorry. It's funny how you can misread
stuff that's clearly stated when it's early in the morning :D

Steve George <steve@futurile.net> writes:

Toggle quote (39 lines)
> Hi Olivier
>
> On Thu, Jun 05, 2025 at 04:22:43AM +0000, Olivier Rojon wrote:
> (...)
>> Z572 <z572@z572.online> writes:
>> >>> I think we may need to change the name. We used the name staging before
>> >>> switching to the team-based process. If we reuse this name, it may cause
>> >>> confusion for later users when searching for information.
>> >>>
>> >>
>> >> No problem, is there something you would favour?
>> >>
>> >> If not, what about `next-master` to indicate that it's the next
>> >> master? If we think that's too generic we could give it a time-based
>> >> date `202509-next-master` - meaning it will be merged back in during
>> >> September 2025.
>> >
>> > I don't have any idea, 202509-next-master might be good, I don't know
>> > what others think
>>
>> I am in favour of a naming scheme which reflects the time it was created. It might even
>> be sufficient to use just a year prefix since we assume there is only one created per year
>> (per release).
> (...)
>
> Just to make sure it's clear, this is the name for a branch that would be used for 8 weeks
> where major changes would be held. This is so that we don't destabilise our main branch
> ahead of a new release. The reason Z572 was concerned about reusing the name 'staging' is
> that this was previously tried, and this branch became long-lived and it was hard to merge
> it back into the main branch.
>
> I was trying to think of a name that would imply that this branch would *only* be around
> for a few weeks. So suggested the month it was merging back in - to prevent it becoming
> long-lived. I don't think we should call it by the year as that might encourage our
> previous problem! What do you think, does that make sense?
>
> Thanks,
>
> Steve / Futurile
L
L
Liam Hupfer wrote on 5 Jun 21:41 -0700
Re: GCD005: Regular and efficient releases (submitted)
(address . 78332@debbugs.gnu.org)
874iwtpjm5.fsf@hpfr.net
Attachment: file
P
P
Philip McGrath wrote on 6 Jun 12:13 -0700
(address . 78332@debbugs.gnu.org)
dfeb265a-208b-48d5-93c3-5381a4eee76b@app.fastmail.com
Hi,

I share the concerns others have already described, particularly:

On Fri, Jun 6, 2025, at 12:41 AM, Liam Hupfer wrote:
Toggle quote (16 lines)
> I tend to agree with Andrew’s feedback
> (<https://yhetil.org/guix-patches/87ikly5t74.fsf@trop.in>) and others; we
> need to be very judicious about imposing processes in this GCD that the
> volunteer community can’t properly support yet. As discussed, while
> regular releases are a useful marketing tool, we have to avoid giving
> the impression that users should stay on releases. For the foreseeable
> future stable branches are out of scope, so these releases only exist to
> provide a base for new installations and a rollback target of last
> resort. Good to see the revisions moving in this direction.
>
> I agree with others’ feedback that we should be conservative with the
> scope at first to avoid imposing on general progress. We should limit
> ourselves to only what is necessary for foreign distros to ship Guix and
> a base Guix System installer.
>

To me, it seems important to clearly identify who is the audience for Guix releases and what use releases are meant to serve.

I primarily use Guix as installed through the Debian packaging, so, to me, foreign distro packagers are obviously an important audience! Some form of Guix System installer also seems important, but I'd hope to hear more from interested people about what use-cases releases, as opposed to snapshot installers from CI, serve in that context.

Toggle quote (12 lines)
> PPS: Another release-related issue that isn’t discussed is backporting
> critical patches. We didn’t backport patches for CVEs and tag 1.4.x
> releases; distro maintainers had to apply them from blog posts. The blog
> posts were helpful but that’s not how bug fixes should be shipped! I
> help out with the Nix package and we’re carrying five patches now, four
> of which are for CVEs. Maybe this is to prevent divergence where guix
> pull thinks you are downgrading but we should look into how to handle
> that better. Maybe patch releases can ship with the SHA for the latest
> commit on master containing equivalent security patches embedded
> somewhere in the Guix modules so ‘guix pull’ can treat that as the point
> of comparison for downgrade warnings instead of the tag commit itself?

This discussion calls to mind that the Nix folks (IIUC) have a release cycle for their daemon that's different from that for their package set. From my perspective, the daemon and other software developed by Guix are the essential part of a release. Narrowing the scope and defining the audience might make it feasible to provide relevant security backports, an extremely valuable improvement.

Toggle quote (36 lines)
>> The package sets would be:
>>
>> * minimal: packages required to boot and install a minimal Guix or Guix System
>> install. This would include the guix daemon, kernels, boot loaders,
>> file-systems and minimal utilities.
>> * standard: packages that create a core installation for all other uses.
>> * desktop: provides the packages necessary for a desktop. This would include
>> the smallest set required for the initial environment.
>
> Is standard necessary? What’s the difference between minimal and
> standard? These proposed sets seems to overlap with the teams concept
> somewhat. Either the package is release-critical or it isn’t, and there
> seems to be consensus that a functioning initial installation with a
> graphical DE is critical. Can we simply define one “release set”?
> Actually, based on the freezes you discuss later, maybe one “build set”
> for toolchains and Guix, etc, and one “release set” encompassing the
> build set as well as the (closure of) critical top level applications
> like editors and DEs?
>
> ...
>
> PS: I took a look at the release manifest you mentioned and was
> surprised to see how many options the installer proposes in
> %system-packages. IMO we should feel empowered to drop quite a few of
> those when preparing a release. Emacs, Vim, and Nano should be in the
> release set but not EXWM, Ratpoison or Awesome. Anyone who wants to
> install a WM can expected to have their first Guix system generation be
> VT only or a more mainstream DE (or guix pull from a foreign distro and
> build their own installer if desired). WMs can certainly be added to the
> installer if interested parties choose to test them during the release
> cycle but should not block the release once the release set is ready
> (Bash, OpenSSH, GNOME, wpa-supplicant, etc). We can remove any broken
> options from the installer before tagging. Ideally we should have
> VM-based automated testing of any DEs offered in the installer as well.
>

Overall, I also think this concept of "package sets" should be simplified and refined, or indeed replaced by existing concepts like teams and manifests.

For Guix on a foreign distro, "kernels, boot loaders, [and] filesystems" don't actually seem relevant as part of the release.

For the installer use case, again, I think it would help to clearly articulate the audience and purpose of releases. For example, one possibility (which may or may not make sense) might be, "A user who does not have command-line experience should be able to install Guix, boot the installed system, and use Emacs-Guix to execute `M-x guix-pull`." One reason that possibility might not make sense is that I'm not sure how completely Emacs-Guix replaces the need for command-line experience. If Guix effectively requires command-line experience already, I'm not sure *any* desktop environment should be a release-critical package. (To be clear, I think it's very valuable to support users who don't use the command line, I just think we should be clear about whether we currently do or not.)

With the context in mind that a better release process wouldn't replace the recommendation for an immediate `guix pull`, I also think the discussion of timing with respect to other distros and desktop environments is backwards. If Guix releases in June, packages of Guix in Ubuntu LTS (April of even-numbered years) and Debian Stable (c. summer of odd-numbered years) will be 10+ months old at time of release. The proposed benefit of getting a more recent desktop into a Guix release seems minimal: users on foreign distros will not use it at all, and Guix System users who follow our recommendation will use it only until their first `guix pull`. It would seem better to release in November or January to get an up-to-date Guix into LTS distros.

Hope this is useful,
Philip
S
S
Steve George wrote on 7 Jun 05:03 -0700
(name . Liam Hupfer)(address . liam@hpfr.net)
r6f5xzc27hclbvb3xhaxaxmtya5ty2rled5eyv7kz65qywjncx@xvp4ke3mofl7
Attachment: file
S
S
Steve George wrote on 7 Jun 06:00 -0700
(name . Philip McGrath)(address . philip@philipmcgrath.com)
um5uo2vnap6ilbehnbk5du4wd4teoobjnd4h5qzkwaklc75jbh@cmj67azvl5i3
Attachment: file
P
P
Philip McGrath wrote on 7 Jun 12:35 -0700
(name . Steve George)(address . steve@futurile.net)
0908c85a-debb-4b70-b8f4-170cfcf82521@app.fastmail.com
Hi,

On Sat, Jun 7, 2025, at 9:00 AM, Steve George wrote:
Toggle quote (15 lines)
> But, the difficulty is
> we can't satisfy the timing of the two needs:
>
> 1. Guix installed *from* a distribution package, hosted on top of
> another distribution
> 2. Guix as a Linux distribution
>
> We are both an upstream (for a distro to package Guix) and a downstream
> (for us to package upstream software into packages).
>
> The Survey showed that about 50% adopt Guix as a distro, and 36% as a
> hosted package manager. So, overall I think the timing leans towards
> making it easier for Guix to be a Linux distro.
>

My point here is that the versions of Gnome, KDE, etc. in a release of the Guix *installer* do not affect desktop Guix users after their first `guix pull && guix system reconfigure`. No matter how old the installer is, running those commands will always get the latest (packaged) version of the desktop, along with everything else. The Guix package archive operates on a rolling-release basis, which this GCD does not propose to change. Therefore, we will still recommend that users run `guix pull` as soon as possible on installation and regularly thereafter: it is the only way to get security updates, for example. So, if a release installer includes an older version of some desktop, I would expect it to be updated by the first reboot.

Trying to get the latest and greatest desktop *before* the first reboot seems like a low priority to me. Additionally, I would hope decoupling the release cycle from the desktop teams' updates, which are significant undertakings, would reduce the friction of regular releases.

In contrast, the version of Guix in an LTS distro package is likely to be in use for a couple years.

Overall, since Guix will continue to work most like a rolling-release distro, the effort of a fixed release seems to me to require an especially compelling justification to meet a need of carefully restricted scope. I can see that justification for occasional especially-thoroughly-tested versions of Guix itself and the Guix System installer. But I don't see a benefit to widening the scope beyond packages needed to install the system and run `guix pull && guix system reconfigure`. In fact, if a release prominently announced features like updated desktops (as a Debian release might), I can see some concern into misleading users into thinking that they should stay on the "released version" and not receive security updates and bugfixes.

Philip
S
S
Sharlatan Hellseher wrote on 8 Jun 02:44 -0700
[PATCH 1/1] 005-regular-releases: Initial draft of GCD005 'Regular and efficient releases'.
(address . 78332@debbugs.gnu.org)(address . steve@futurile.net)
87tt4q4lfq.fsf@gmail.com
Hi,

* Vote

--> YES <--

* Reasoning

I see that the best effort of rapid refresh of the packages for
particular collections are already practiced in the project e.g. R
refresh by Ricardo.

From that experience I may say that it's much, much easier to keep hand
on pulse of upstream than spend weeks (Golang, the most of th Python,
Ruby, PHP, JavaScript, Perl, Java...) in endless effort to balance
too-much-dated-versions chains.

As we split efforts among teams already I think it's the next logical
step to agree on sort of predictable refresh schedule among them. The
only one constrain is a long waiting time in the queue e.g. go-team and
r-updates were waiting for about 2 months while were tested and ready to
be merged, I hope it something we may discuss in the separate thread.

The version tag of the Guix itself would benefit downstream packages
e.g. in Debian and would bring much nicer user experience, as for now I
noticed complains form foreign distro users on the need to way hours
even days before the first 'guix pull' is completed.

Workload pressure may be relaxed as well, as I mentioned above, it's
much easer to auto refresh and build recent version than resolve dated
package version dilemma, the same position here - yes it would need some
effort to keep on pace in a reasonable cadence with upstream but
comparing with amount of efforts required to bring from the older
version should be easier.

From the user experience (mostly complains on Mastodon), the stopping
point to select Guix over Nix is - dated versions for my lovely packages
stack, with understandable claim Guix has a much smaller team and
package maintenance is a hard task in general.

* Features and tooling

I've noticed in other projects - a version comparison in package
description with upstream [1] (available from the package manager and
current upstream).

Other one is a package refresh ration (it requires quite a lot of time
to collect [2]), for example how to answer this question for
commiter/contributer: If I need to list packages which defendant count
is less than 4 and refresh them all how can I do it quick?

More metadata for the package [3] which would help in maintenance or
addressing issues to the particular team which would be visible for the
user/contributor.

List of dependent packages [4], packages using <this> [5] in the first place.

* My experiance

I try to keep Astro collection on the latest available versions where
possible and submit new packages and refreshes on each 20th of the month
and merge by the end of the month nearly 2y already, there are 200+ in
(gnu packages astronomy) and a few in other modules, it takes me up to
5-8h per month for that task: package some new ones from the planned [6]
list and refresh present ones where possible. Some tasks are required a
long loop, jumping to python-team to refresh lower level packages.

It's my personal preference, as I see it's easy for me to run "guix
refresh -s module:astronomy" and work through the whole collection than
resolving conflicts in dated version after n+1 months.

I can contribute some time "to drive a refresh train to the final depot"
(c) Simon Tournier, periodically.

Hoping my position is clear ^.^ sorry for the long read.


---
Oleg
-----BEGIN PGP SIGNATURE-----

iQJKBAEBCgA0FiEEmEeB3micIcJkGAhndtcnv/Ys0rUFAmhFW3kWHHNoYXJsYXRh
bnVzQGdtYWlsLmNvbQAKCRB21ye/9izStXE4D/sGwrXvBuwyQ2sxU/+o2zHNCUEa
XFVnJHmAYtIVMizYe06uxrFEVUixUJxE/OWWOZkOh5LtVPPOOxMbQ8JaclO59zB/
wQjjf+bm54sFB4n6/V0dE9ZqcoVMLGar2vksAWeEIPUFBQxK7g5kzRVEH8TF3KJ3
4BzivS5b2q3PDzCf7yrdfJ+6vHCjY1miubmoqMkhu/QNb01TN2Utf/nXeWeUmgfY
98wMUZr/9Vz3pRwlmsGNpjhJs+sUa93XDTRCudOa9yWL5wfrsJwlJoN68oPz5aRO
u8zDhQ6XuttKup7DVFpqvD7WlMSbxd/EBEAkF7dU8OTiFWfwk0T8N81qFzZo3pUg
NU5556+vTg2eY79ZkjLDlG6nNPvwUEWyo8LYVMNWAiwPOh8CjJ8CrRVWhVa+hP0u
4dePkJNeFihIUkT7R91ny6MxXQ3hLVzJztQRC21mD3Q9HjvKZZUUbsWah06A7FBM
LUyiG1P7tTj6ztIhWZIZ0qMaEuY9G6gPTtaJ5Ul5qvQMH/R3UbyJKZkyLYwwQzCs
5ve0gwUeawuraL4xQBnY5iSUwZXwp272uUIWVPyru91RzefVD3s28Mfq7KSssd98
E1tG2vKocsdg5EbH5iJmqGGdryhwKBtrzhM+7aZctF9D9kuLy6/iYmGBp4kICv+s
GKGdtYEbxAOqLSRohg==
=I48S
-----END PGP SIGNATURE-----

L
L
Leo Famulari wrote on 8 Jun 19:25 -0700
Re: GCD005: Regular and efficient releases
(name . Steve George)(address . steve@futurile.net)(address . 78332@debbugs.gnu.org)
aEZGBdDWK27slg7u@jasmine.lan
On Fri, May 09, 2025 at 01:53:39PM +0100, Steve George wrote:
Toggle quote (2 lines)
> Below you'll find a proposal for moving to a regular release cycle.

First, my sincere thanks to you for making the effort to analyze the
situation, make a proposal, and shepherd the discussion.

Releases have always been a pain point for Guix, at least since I joined
around 2015. Of course, they seemed to get much harder as the codebase
and our ambitions grew. Now we have a binary for the package manager,
the source tarball, VMs, an installer image, desktops that we aim to
support, a variety of CPU types, two operating systems (Linux and Hurd),
etc. It's a huge amount of work on top of the Guix-specific difficulties
--- functional package management is tricky here --- that relate to
making a release.

In the past, we were able to freeze for a week here and there, but the
Guix project was much smaller and able to coordinate as a group, with
only a few committers, so it wasn't as hard to imagine a freeze as it is
now. We'd freeze for a few days and extend to a week when we had
trouble. Maybe it sounds crazy to freeze for 9 weeks, but compare us to
Debian or Linux. It's not necessary to deploy updates every minute of
the day. Git is decentralized and we all know how to use it.

Compare Guix releases to what's happened for TLS and web security since
Let's Encrypt automated the issuance and renewal of X.509 certificates.
That went from a manual, infrequent, expensive, and error-prone process
to something that is easy, automatic, and basically required for a web
site. TLS is everywhere now. Part of that process was a drastic
reduction in scope of what SSL / TLS meant. It used to be that an SSL
connection told you something about the people behind the web site. Only
trustworthy and capable organizations used SSL (banks, etc). There were
tiers of certificates that somehow vouched for the web site. I'm not
sure if younger people realize the depth of that change. Let's Encrypt
said, "No, the certificate only means that the person that controls the
DNS name is serving you the data - nothing else. The connection is
confidential and authentic". It's purely a cryptographic construct now,
and TLS is ubiquitous. Nobody's bank account is getting hacked by a
rogue wifi network anymore.

BIG POINT:

Similarly, I recommend we make releases more automatic and more frequent
by reducing their scope. Until our capabilities grow to the point that
we can actually regularly create a bunch of release artifacts that have
been well tested for a bunch of platforms, let's figure out how to make
the minimum viable release from which users can install Guix and then
instantiate whatever it is they need.

We'd need to be creative here, from a technical point of view. I don't
know what this minimal release artifact is.

All the different CPU platforms, the Hurd, the desktops, the VMs...
people need to step up. The release team should not be validating that
stuff. The release needs to install a working Guix on Debian and Fedora.
Needs to install a bootable console on x86_64-linux (no, let's not ask
users to run `guix system init`). And maybe aarch64. But I wish we had
statistics of substitute downloads, to understand what people are
actually using. We should be bold.

People love releases. Releases are an occasion to celebrate. People make
t-shirts, stickers, have a drink on IRC, in Brussels, Bordeaux, and
Paris, and hopefully other places (any New Yorkers reading this???).
This kind of hoopla can entice people to join our project, and in the
long run we may gain the capability to do big complicated releases with
a bunch of artifacts again.

Also, our old releases work until they don't. We want SWH to save us
from bitrot, but our packages keep fighting us with little time bombs
that break the build after certain dates. We need releases to keep Guix
buildable for new installations. Guix is a build-from-source distro,
although we hide that well.

Personally I'm not sure we need a GCD here. The same leadership required
to issue a release is needed to land a controversial and disruptive
change. And making releases is not controversial or significantly
disruptive. I'd say you can just start planning the release now, Steve :)

Leo
L
L
Ludovic Courtès wrote on 9 Jun 06:34 -0700
Re: GCD005: Regular and efficient releases (submitted)
(name . Steve George)(address . steve@futurile.net)
87o6ux82e5.fsf@gnu.org
Hi Steve,

Thanks for the hard work on this crucial aspect of the project.

Some wondered about the indented audience of releases. To me it’s quite
clear that it’s manifold: there’s public relation, yes, but also
downstream packagers as mentioned, and perhaps more importantly, any new
person installing Guix, be it standalone or on another distro. Starting
today from 1.4.0 makes for a terribly bad user experience.

Some more specific comments:

Toggle quote (12 lines)
> The package sets would be:
>
> * minimal: packages required to boot and install a minimal Guix or Guix System
> install. This would include the guix daemon, kernels, boot loaders,
> file-systems and minimal utilities.
> * standard: packages that create a core installation for all other uses.
> * desktop: provides the packages necessary for a desktop. This would include
> things like X11/Wayland, desktop environments, key applications and themes.
> * server: provides packages and services for a server. This would include
> standard server packages and services.
> * hosted: provides packages and services which are necessary in hosted usage.

Perhaps I overlooked it, but it’s not clear to me how package sets
affect the release process.

I would expect things like “package set X must successfully build on all
Primary Architectures at time of release”, “package set Y is provided on
a best-effort basis”, or things along these lines.

For previous releases, there were really two package sets of sorts,
although that wasn’t formally specified:

• Packages that the Guix System installer would offer had two build on
the two architectures for which images were provided (i686-linux and
x86_64-linux). That includes core packages but also things like
Xfce, GNOME, Tor, ntpd, and other things that can be selected from
the dialog boxes of the installer.

This is ‘%system-packages’ in ‘etc/manifests/release.scm’.

• “Core” packages that anyone may wish to install on any of the
architectures supported by Guix (not Guix System).

This was ‘%base-packages’ in
(not sure why it’s not there anymore).

The former had to be build on x86_64-linux and i686-linux; the latter
had to build on all architectures listed in ‘SUPPORTED_SYSTEMS’ in
‘Makefile.am’, and also listed in the manual:


I would tend to formalize on these two package sets and associated
requirements.

Toggle quote (9 lines)
> ## Release artifacts
>
> Using the primary architecture tier and the package sets would involve creating
> the following release artifacts:
>
> - GNU Guix System ISO image
> - GNU Guix System QCOW2 image
> - GNU Guix installer

This omits two important things:

• The binary tarball, used to install on top of another distro, for
all “supported architectures” (Primary and Alternative).

• The source tarball, as produced by ‘make dist’ (target audience is
primarily downstream packagers, such as Debian).

Reducing toil will be a matter of defining “supported architectures” in
a reasonable way.

Toggle quote (2 lines)
> ## Release team and project

I really like this section!

Toggle quote (5 lines)
> ### 1. Nominate a release team
> Nominate a release team with two Release Managers (1 is the previous RM), and
> up to 4 other people who will work on the release. Put out a call for a Release
> Advocate who can be anyone in the Guix community who's willing.

This raises the question of who will nominate the team. But perhaps
that’s a problem mostly for the first release (Nov. 2025) since after
that passing on the torch will be easier?

Toggle quote (3 lines)
> ### 3. Release project start
> Start the project with weekly updates to guix-dev and regular meetings of the

s/guix-dev/`guix-devel`/

Toggle quote (5 lines)
> ### 8. Breaking changes to staging
> To avoid a period of time where teams can't commit breaking changes, these are
> sent to a new 'staging' branch, rather than directly to master. The master
> branch slows down from this week.

In the past, what we did was to create a ‘version-1.4.0’ (or similar)
branch one or two weeks before release and would let ‘master’ live its
life, avoiding both total freeze and unintentional breakage while we’re
close to release (only people working on the release would commit to
that version branch).

The version branch would be prioritized by ci.guix.gnu.org too.

It’s very similar to what you wrote here but by keeping the default
unchanged for developers not part of the Release Team, it may prove to
work better.

Toggle quote (9 lines)
> ### 12. Testing and Hard Freeze
> RC bugs and issues should be solved for the release branch.
>
> Only changes that will fix a non-building package, or a bug in a package are
> allowed. Ideally avoid new upstream versions, but it's acceptable to use a new
> minor upstream version to solve a bug.
>
> Any non-building packages are removed.

According to the deprecation policy, this can be done anytime but takes
at least one month.

Overall I like what the GCD lays out. Perhaps there will be adjustments
to be made here and there but it looks sensible to me.

I expect that a big chunk of the work before the November release will
be streamlining the process, in particular ensuring that a developer can
make a release without having too many privileges or a
multi-architecture build farm at home.

Thank you!

Ludo’.
S
S
Steve George wrote on 10 Jun 00:29 -0700
Re: GCD005: Regular and efficient releases
(name . Leo Famulari)(address . leo@famulari.name)(address . 78332@debbugs.gnu.org)
w7igu5yaiot64672pmpmmxgxcesvfc4m2oas5s6rpvhb7lfhhs@lxtqwfrz4ddh
Hi Leo,

On Sun, Jun 08, 2025 at 10:25:09PM -0400, Leo Famulari wrote:
Toggle quote (1 lines)
> On Fri, May 09, 2025 at 01:53:39PM +0100, Steve George wrote:
(...)
Toggle quote (3 lines)
> Releases have always been a pain point for Guix, at least since I joined
> around 2015.

Thanks for the feedback, it's really useful to have input from a longer time-frame in the project.

At the end you said:

Toggle quote (5 lines)
> Personally I'm not sure we need a GCD here. The same leadership required
> to issue a release is needed to land a controversial and disruptive
> change. And making releases is not controversial or significantly
> disruptive.

I kind of agree, and actually I started writing a release plan and then landed up writing a GCD.

The reason I changed path is because I saw a lot of discussions and calls for a release at different times within the project. But we didn't manage as a group to make it happen. For me, that points to us not be aligned as a group and not prioritising releases.

So the purpose of the GCD is that as a group we say "we want to do regular releases" and the impact is that we'll work together to do so: for those that don't want to work on a release the ask is not to do anything that makes creating a release more difficult.


(...)
Toggle quote (17 lines)
> Compare Guix releases to what's happened for TLS and web security since
> Let's Encrypt automated the issuance and renewal of X.509 certificates.
> That went from a manual, infrequent, expensive, and error-prone process
> to something that is easy, automatic, and basically required for a web
> site. TLS is everywhere now. Part of that process was a drastic
> reduction in scope of what SSL / TLS meant. It used to be that an SSL


> Similarly, I recommend we make releases more automatic and more frequent
> by reducing their scope. Until our capabilities grow to the point that
> we can actually regularly create a bunch of release artifacts that have
> been well tested for a bunch of platforms, let's figure out how to make
> the minimum viable release from which users can install Guix and then
> instantiate whatever it is they need.
>
> We'd need to be creative here, from a technical point of view. I don't
> know what this minimal release artifact is.
(...)

I absolutely agree that we get better at what we practise, so if we release more we can learn and iterate - we'll improve.

It's a great thought experiment of what we would do differently. This is one area where my previous experiences probably doesn't help as I'm a bit "stuck" on the level quality and work that a good release has to have in it. Yeah, it's an interesting question of what a "minimum viable release" would look like from a project and user perspective.

The GCD basically said "reduce complexity by" focusing on:

- fewer packages than the whole archive
- fewer architectures
- fewer release artefacts

I've added a focus on automation in the GCD - your framing is a good way to really think about this.


Toggle quote (14 lines)
> All the different CPU platforms, the Hurd, the desktops, the VMs...
> people need to step up. The release team should not be validating that
> stuff. The release needs to install a working Guix on Debian and Fedora.
> Needs to install a bootable console on x86_64-linux (no, let's not ask
> users to run `guix system init`). And maybe aarch64. But I wish we had
> statistics of substitute downloads, to understand what people are
> actually using. We should be bold.
>
> People love releases. Releases are an occasion to celebrate. People make
> t-shirts, stickers, have a drink on IRC, in Brussels, Bordeaux, and
> Paris, and hopefully other places (any New Yorkers reading this???).
> This kind of hoopla can entice people to join our project, and in the
> long run we may gain the capability to do big complicated releases with
> a bunch of artifacts again.
(...)

Yeah, it would be great to have some of that love for the project!


Toggle quote (2 lines)
> I'd say you can just start planning the release now, Steve :)

Hah hah hah!

Steve / Futurile
S
S
Steve George wrote on 11 Jun 05:26 -0700
Re: GCD005: Regular and efficient releases (submitted)
(name . Ludovic Courtès)(address . ludo@gnu.org)
lfinhxkkoa2qgmn4t4sgy6ljh7q5keid5pig3lydie3kwszhmz@ugfownr6zfvk
Attachment: file
E
E
Efraim Flashner wrote on 11 Jun 06:41 -0700
(name . Steve George)(address . steve@futurile.net)
aEmHfDluw6ZSCQ12@3900XT
Attachment: file
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmhJh3kACgkQQarn3Mo9
g1HH5BAAvMYFJb549V8fwMUHDvzx5fvj05rNLw4y2BTfW8aRB4S6kyBud+qetcrn
VW6ltC9BP5+3qfqKGNWbpnckbQq6Js3nopbZLo/P0K4DSBzODWt6hIrmpdJ5CPQh
HcXBVaipwLPSX/wlbrLWrMUMegVkpp/yQuH4OjUa+6Z8CcZegM4EAwfXsXaYqD3L
7PDh2pAGN9ek08dApJjQK3RsGTSlNVuC+3cuOMQM52SGw8VpBIHIIKw9QgQLFW2Z
GtRgDD1AWjr1sPdPvzzZzTNrf/iYD9i7t+lTOgwQH9UvjQfjtv62cCZs5TdCxiv2
a74dUz4CfC+S/iK6z5n3HyRloW1T8zJWkEaJ+awMehYwV1FTP7G5pbrWlgOEm86+
8Sfr110a6D6V8MxOlBJrVAboQZXMdyI7O5pU1LZExie8jTFAFMh3bryauoaIO6rW
HDbV10SF0Df7zPrUIRTSqkq4+ycBw1z9QSIPosAoATqT0EdW6nXxSDn4mWOnql4z
rcaeW7Zixxqe9rFRwaHnLHBU9quB7OWR0UoQhbPNWMO47ItRS+Sa4en7+13j2+QQ
4uaC28hRbphkLzDCgdjGH1wT5KHGlYH+FITvgjiN0vSYlR6IbfBlo1uo/t+bnaT8
/LaQ58AD4BtC3Y10WZXl1I1Y1gYUa9u1uO62fNCWEGW9q7IliBU=
=+s1m
-----END PGP SIGNATURE-----


L
L
Ludovic Courtès wrote on 11 Jun 13:47 -0700
(name . Steve George)(address . steve@futurile.net)
877c1igg41.fsf@gnu.org
Hello,

Efraim Flashner <efraim@flashner.co.il> writes:

Toggle quote (6 lines)
>> > • “Core” packages that anyone may wish to install on any of the
>> > architectures supported by Guix (not Guix System).
>> >
>> > This was ‘%base-packages’ in
>> > <https://codeberg.org/guix/guix/src/commit/12d00767f036029f1f5738de644d4972db374f4f/etc/manifests/release.s

[...]

Toggle quote (10 lines)
> (define %base-packages
> ;; Packages that must be substitutable on all the platforms Guix supports.
> (map specification->package
> '("bootstrap-tarballs" "gcc-toolchain" "nss-certs"
> "openssh" "emacs" "vim" "python" "guile" "guix")))
>
> I realize that they are important packages, but they're all packages
> that, if they broke, we would've noticed anyway (perhaps not
> bootstrap-tarballs).

It’s not just about checking they’re not broken (you’re right we’d have
noticed, at least on the popular architectures), it’s also about
ensuring that substitutes are available for them.

That was the spirit of the ‘assert-binaries-available’ Makefile target.
And that, in practice, often turned out to be difficult to achieve,
especially for Arm.

Ludo’.
L
L
Ludovic Courtès wrote on 11 Jun 13:58 -0700
(name . Steve George)(address . steve@futurile.net)
87sek6f117.fsf@gnu.org
Hi Steve,

Steve George <steve@futurile.net> writes:

Toggle quote (13 lines)
>> Perhaps I overlooked it, but it’s not clear to me how package sets
>> affect the release process.
>>
>> I would expect things like “package set X must successfully build on all
>> Primary Architectures at time of release”, “package set Y is provided on
>> a best-effort basis”, or things along these lines.
>
> Maybe it's a bit too diffuse in what is a long document, it says:
>
> "Packages within the `package sets` must build on the primary
> architectures (see definition lower). As part of the release's QA
> contributors would be asked to these these packages."

Right. I guess my question is more: why do we define 5 package sets if
in the end the same requirements apply to all of them?

My thought, mostly encoded in ‘etc/manifests/release.scm’, is that we
can probably have two package sets with slightly different requirements.

BTW, there’s one thing the document doesn’t mentioned but which is/was
captured by ‘release.scm’, and that’s cross-compilation. There’s a
small selection of packages that we want to be able to cross-compile
from x86_64-linux to a small selection of target triplets (i586-pc-gnu,
aarch64-linux-gnu, etc.). But… maybe we can leave it out of the GCD?

Toggle quote (20 lines)
> The main goal is to focus attention during testing, particularly as
> there's always some level of manual testing by a Release
> Team. Efraim's version still has the %system-packages, and what I
> would propose is to tighen it up further:
>
> - %system_packages (what I called minimal): requirements for the installer including a default graphical desktop.
> - %desktop_packages (what I called desktop): additional graphical desktops, other options like NTP and Tor.
>
> The Release Team would focus testing on the things on the installer's
> critical path. In Efraim's version there's actually three sets -
> %bootloader_packages, %filesystem_packages and
> %system_packages. Anyway, these all MUST work because they align with
> the installers defaults. Failures in these packages are release
> critical bugs.
>
> Practically this means testing the end-to-end install process of Guix
> System with these defaults on (a) primary architectures (x86 and
> AArch64), also through KVM (QCow2 image), and tested on the major
> foreign distribution's (e.g. Debian, Fedora, Ubuntu).

OK.

Toggle quote (13 lines)
> Non-default packages that are in the installer (but not a default
> option) go into (a new) %desktop_packages. These get the next layer of
> testing, these SHOULD work as we shouldn't ship something we know is
> broken, but it's less critical. We're assuming that each Team is
> shipping things that work, and it's 'reasonable efforts' for the
> Release Team to try and check that the installer works for them.
>
> This focuses attention by reducing the scope that the release team "must" test.
>
> I also proposed a "minimal" group which would be "packages required to
> boot and install a minimal Guix or Guix System". Is it the same idea
> as %base_packages?

I think so.

Toggle quote (6 lines)
> I'm wondering if we should separate "Guix installed as a packge
> manager" into it's own package set. In the long run this would be a
> building lock that allow us to align with Philip's suggestion of
> following a more Nix-packages / Nix OS separation of releases. What do
> you think?

The NixOS/Nixpkgs distinction doesn’t really exist anymore (it used to
be two separate repos but the two are necessarily tightly coupled), so
I’m not sure what the suggestion is.

Toggle quote (22 lines)
>> > ## Release artifacts
>> >
>> > Using the primary architecture tier and the package sets would involve creating
>> > the following release artifacts:
>> >
>> > - GNU Guix System ISO image
>> > - GNU Guix System QCOW2 image
>> > - GNU Guix installer
>>
>> This omits two important things:
>>
>> • The binary tarball, used to install on top of another distro, for
>> all “supported architectures” (Primary and Alternative).
> (...)
>
> OK, I can add them to the GCD.
>
> Just to clarify terms, I'm looking at the download page (https://guix.gnu.org/en/download/)
>
> What you're calling the "binary tarball" is that on the download page
> as the third option labeled "GNU Guix 1.4.0 Binary"?

Yes.

Toggle quote (2 lines)
> I thought that was what I was calling the "GNU Guix installer".

Oh sorry. To me “installer” refers to the Guix System installation user
interface on the ISO.

Toggle quote (6 lines)
>> • The source tarball, as produced by ‘make dist’ (target audience is
>> primarily downstream packagers, such as Debian).
>>
>
> On the download page this is defined as "GNU Guix 1.4.0 Source". I will add this.

Yes.

Toggle quote (6 lines)
> We don't have anything about the downstream Debian/Fedora
> packages. Philip McGrath mentioned this as an important path and I
> agree. Since we don't create the packages I'm not sure what to do
> here. Ideally, we'd work with the packagers to co-ordinate with them,
> but as a project we don't actually create them.

Right, there’s not much we can do: they’re maintained by others. Our
job though is to make sure they can take the source tarball (or a
checkout) and work from there.

Toggle quote (7 lines)
> At Guix Days (2025) there was a big discussion about releasing. Efraim
> nominated himself as the first "Release Manager".
>
> I'm sure that there are others in the group would also be interested,
> there was a good discussion in December. I'm sure that Andreas and I
> would be excited to work on it!

Ah yes, excellent.

Toggle quote (2 lines)
> And, I'm assuming _you_ are mentoring us all ;-))

Sure, I’ll do my best and maybe Maxim can share his experience too.

Thanks!

Ludo’.
S
S
Simon Tournier wrote on 12 Jun 12:08 -0700
Re: GCD005: Regular and efficient releases
(address . 78332@debbugs.gnu.org)
87y0tw22wp.fsf@gmail.com
Hi Steve,

Thanks for this proposal!

Well, I’ve not commented yet because I’m very doubtful that releasing
more often can be solved with a GCD. I mean, yeah we all would like
more releases, and then? :-) Look, on February, we were all in the
same room and we all agreed that we had to work on releasing soon and
we cooked a plan to make it happen. But the release has not come yet…

Do not take me wrong. I do not want to be the pessimistic one cutting
the positive circle trying to move forward. As I wrote many times over
the years, yeah for sure, releasing more often would be more than great!

Somehow, I think that “regular and efficient release“ is a good target
but considering the current situation, I’m doubtful we will be able to
go in only one go – just by deciding from the top and writing down a
planning.

Instead, I think we need two intermediary steps:

(1) Clarify what means being a member of a team.
(2) Clarify the branching model; especially how to deal with grafts.

To me, they are requirements before being able to have regular releases.

Therefore, I read this GCD as setting the goal in order to address the
well known blockers as (1+2) and, only after, we will be able to have
regular releases without burning out.

Moreover, I think it’s difficult to find the right balance between
volunteering work and commitments. Today, make a release is a piece of
work. For sure, it’s possible to smooth the things and automatize with
various helpers etc. but if it’s not done yet, maybe it’s because it’s
not trivial or maybe even more work than the ‘piece of work’ itself. :-)

Yes, I’m convinced that committing to have “regular releases” will
improve all the releasing process over the next releases. For sure!
And it’s probably by making such commitment that the releasing process
will be improved. But we are not there yet, IMHO, so it’s still a piece
of work and it’ll still remain one for some release cycles.

Therefore, the core of this proposal appears to me what is the bar?

Until now, the bar was high. Maybe, one way to release more often is to
decrease the bar so it’s easier to pass it and then we can rise it up,
by incremental improvements. This is the section about Package Sets,
Tiers and Release Artifacts.

To me, that’s the key.

And concretely, who is ready to commit for 12 weeks (maybe 2 times) as
Release Manager?

All that said, some comments hoping it might improve the bootstrap of
“regular releases”. :-)


Toggle quote (2 lines)
> ## Package Sets

[...]

Toggle quote (20 lines)
> The package sets would be:
>
> * minimal: packages required to boot and install a minimal Guix or Guix System
> install. This would include the guix daemon, kernels, boot loaders,
> file-systems and minimal utilities.
> * standard: packages that create a core installation for all other uses.
> * desktop: provides the packages necessary for a desktop. This would include
> things like X11/Wayland, desktop environments, key applications and themes.
> * server: provides packages and services for a server. This would include
> standard server packages and services.
> * hosted: provides packages and services which are necessary in hosted usage.
>
> Guix would still make all packages and services part of a release (the entire
> archive), but only those in the `package sets` could block a release due to a
> significant bug. The goal would be for this to be as small a set of packages
> as reasonably possible. It would mean that developers could focus on the
> critical packages and services during a release. As an example, this would
> mean that a major issue in the Linux kernel could block a release, but not an
> issue in a game.

I understand the meaning however it’s unclear to me. Instead, I propose
that the Release Team defines when they start their cycle which packages
the release will support.

Somehow, each package set should be defined by a manifest file. Here
you picked 5 use-cases, so the Release Team lists the packages in the
manifests minimal.scm, standard.scm, desktop.scm, server.scm and
hosted.scm. These manifests are considered as blockers.

If one package from one manifest fails and it’s hard to fix, then it can
be excluded; i.e., moved from Tier to another Tier.

It also would help in monitoring the CI outside the release period.


Toggle quote (2 lines)
> ## Platforms and Architecture tiers

[...]

Toggle quote (9 lines)
> - Primary architectures:
> - Architectures: x86_64, AArch64
> - Kernel: Linux
> - Coverage: all packages and services that are not explicitly platform
> specific must work to be included in the archive.
> - Package status: package updates should build for this architecture. If a
> package update is broken it must not be pushed to users (e.g. master).
> - Security: all packages that are maintained upstream receive updates

This does not read as the rolling release, does it? :-)

I propose:

- Tier 1:
- Architectures: x86_64, AArch64
- Kernel: Linux
- Coverage: defined by package sets.

- Tier 2:
- Architectures: all others
- Kernel: Linux
- Coverage: defined by package sets.

- Tier 3:
- Architectures: all
- Kernel: Linux, Hurd
- Coverage: all packages

For a release, Tier 1 must be all green; Tier 2 should be green; Tier 3
as good as possible.

Obviously, we can add more Tier than only 3. The main idea here is to
define what is Tier (= list of architectures, kernel, package coverage)
and what expects when this Tier in a release.

Well, maybe we could add a “service coverage”.


Toggle quote (2 lines)
> ## Release team and project

[...]

Toggle quote (6 lines)
> The final release team is:
>
> - a new Release Manager
> - a returning Release Manager
> - up to 4 other members, one of whom acts as the Release Advocate

Hum, 2 times 12 weeks of commitment? That’s something! :-)

For sure, back up the Release Manager with 2 people is a very good idea;
especially about knowledge transfer. Cool!

If the primary Release Manager is not able to keep the commitment (busy
by life, away from keyboard, unexpected event, etc.), then the secondary
Release Manager takes the floor. Right? But then, this “absent”
primary Release Manager, does they become the next secondary Release
Manager?

Moreover, what does it happen if the both Release Manager are not
responding? Do we delay the time to find two new Release Managers? Or
is it two of the other members?

The other question: what does it happen if the Release Team is not able
to fix a blocker? Do we delay until the fix? Do we drop the blocker?
Who decides? What is the process for making such decision?


Toggle quote (10 lines)
> # Cost of Reverting
>
> If regular releases were not successful then the project would switch back to
> irregular releases. There would be no impact for exiting users as they will
> be tracking the rolling release's master branch.
>
> If the project is able to successfully undertake regular releases then over
> time it may be possible to undertake full releases every six months or some
> other release cadence.

Well, I do not have the answer and my honest question is: Is it more
detrimental to have irregular^W no release since years! than to
communicate on regular releases and fail?


Toggle quote (2 lines)
> # Appendix 1: Release Project Time-line

[...]

Toggle quote (5 lines)
> ### 1. Nominate a release team
> Nominate a release team with two Release Managers (1 is the previous RM), and
> up to 4 other people who will work on the release. Put out a call for a Release
> Advocate who can be anyone in the Guix community who's willing.

Who nominates? How?

Who decides if 7 people volunteer to be the next release team? Hum, it
will not happen, but still. :-)

The converse, what does it happen if no one volunteer? IIUC, the
primary Release Manager becomes the next secondary Release Manager, so
what does it happen if there is no one who volunteers to be the next
primary volunteer?

What does it happen if after the release, the primary Release Manager
steps down and do not become the next secondary Release Manager?


Toggle quote (4 lines)
> ### 9. Ungraft master branch
> Guix master is ungrafted to minimise the difference with users of the release
> initial 'guix pull' experience.

This will take more than one week, I guess. :-) For sure, more than few
hours in the week.

I think this needs to be done by each team all over the changes
independently of the release process. As said above, I think we should
clarify what a team does. For instance, if a team introduces a graft,
then this very same team must open a branch that ungrafts and then merge
this branch as soon as possible; independently of the release.

Somehow, we removed core-updates but we have never defined a clear
strategy for ungrafting. Well, that’s outside the scope of this GCD
but, IMHO, the success of this GCD depends on how to deal with grafts.


All in all, let me know if you need a wording proposal from me about
some of my comments.

Cheers,
simon
S
S
Simon Tournier wrote on 12 Jun 13:45 -0700
Re: [bug#78332] [PATCH 1/1] 005-regular-releases: Initial draft of GCD005 'Regular and efficient releases'.
(address . steve@futurile.net)
87v7p01ygj.fsf@gmail.com
Hi Oleg,

On Sun, 08 Jun 2025 at 10:44, Sharlatan Hellseher <sharlatanus@gmail.com> wrote:

Toggle quote (4 lines)
> It's my personal preference, as I see it's easy for me to run "guix
> refresh -s module:astronomy" and work through the whole collection than
> resolving conflicts in dated version after n+1 months.

When keeping up to date the astronomy package set, do you introduce
grafts? If yes, later what’s your process for removing them? If any. :-)

Toggle quote (3 lines)
> I can contribute some time "to drive a refresh train to the final depot"
> (c) Simon Tournier, periodically.

Euh, what did I say? :-)

Cheers,
simon
S
S
Simon Tournier wrote on 12 Jun 13:59 -0700
approximated popcon? (was Re: GCD005: Regular and efficient releases)
87plf81xrm.fsf@gmail.com
Hi,

Toggle quote (2 lines)
> As we don't have popcon I don't know what's popular with users

Once I heard a Debian Developer says: the aim of popcon isn’t to take
less care of unpopular packages but the contrary. It allows to know
that this package in appearance useless and/or outdated is still used by
one user so it’s a motivation to still maintain its availability.

Although hard when the resource is constrained, I like the
reasoning. :-)

Aside, maybe we could have a rough idea of some popular packages by
looking at the queries in the substitutes cache.

Guix sysadmin, is it doable?

Cheers,
simon
S
S
Simon Tournier wrote on 12 Jun 14:30 -0700
Re: [bug#78332] GCD005: Regular and efficient releases
(address . 78332@debbugs.gnu.org)
87jz5g1wdc.fsf@gmail.com
Hi,

On Sun, 08 Jun 2025 at 22:25, Leo Famulari <leo@famulari.name> wrote:

Toggle quote (6 lines)
> Also, our old releases work until they don't. We want SWH to save us
> from bitrot, but our packages keep fighting us with little time bombs
> that break the build after certain dates. We need releases to keep Guix
> buildable for new installations. Guix is a build-from-source distro,
> although we hide that well.

Oh that significantly rises the bar! :-)

This could be some “Tier X“ meaning cross your fingers! ;-)

Well, if we define a scale of Tiers:

1. Tier 1: this restricted package set runs on Linux x86_64;
2. Tier 2: Tier 1 + these other package set;
3. Tier 3: this restricted package set runs on Linux arm;
4. Tier 4: etc.
5. Tier 5: Hurd, best effort
6. Tier 6: etc.
Tier X: full rebuild from binary seeds and fetching source code from
Software Heritage; cross your fingers!

And having a Tier with a different physical date, etc.

I mean, this kind of thing could be part of some horizon for the next
next next … next release. It sends the signal “we care about long term
and we do thing that might last”.

Cheers,
simon
S
S
Steve George wrote on 13 Jun 07:23 -0700
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
l5b24e4ki25qqsfjl3xmw2vjir5yb7wi2oel74wj2t5litj76h@ktq34bk5siuz
On Thu, Jun 12, 2025 at 11:30:07PM +0200, Simon Tournier wrote:
Toggle quote (29 lines)
> On Sun, 08 Jun 2025 at 22:25, Leo Famulari <leo@famulari.name> wrote:
>
> > Also, our old releases work until they don't. We want SWH to save us
> > from bitrot, but our packages keep fighting us with little time bombs
> > that break the build after certain dates. We need releases to keep Guix
> > buildable for new installations. Guix is a build-from-source distro,
> > although we hide that well.
>
> Oh that significantly rises the bar! :-)
>
> This could be some “Tier X“ meaning cross your fingers! ;-)
>
> Well, if we define a scale of Tiers:
>
> 1. Tier 1: this restricted package set runs on Linux x86_64;
> 2. Tier 2: Tier 1 + these other package set;
> 3. Tier 3: this restricted package set runs on Linux arm;
> 4. Tier 4: etc.
> 5. Tier 5: Hurd, best effort
> 6. Tier 6: etc.
> …
> Tier X: full rebuild from binary seeds and fetching source code from
> Software Heritage; cross your fingers!
>
> And having a Tier with a different physical date, etc.
>
> I mean, this kind of thing could be part of some horizon for the next
> next next … next release. It sends the signal “we care about long term
> and we do thing that might last”.
(...)

This is definitely something that could be done over time, if we had people interested in it. At the moment Nix seems to operate 6 tiers, and they have similar ideas about different forms of guarantees.

Steve / Futurile
L
L
Leo Famulari wrote on 13 Jun 07:46 -0700
Re: GCD005: Regular and efficient releases
(address . 78332@debbugs.gnu.org)
96857ba3-bb96-4ab6-8298-680a94d95702@app.fastmail.com
On Thu, Jun 12, 2025, at 15:08, Simon Tournier wrote:
Toggle quote (4 lines)
> For instance, if a team introduces a graft,
> then this very same team must open a branch that ungrafts and then merge
> this branch as soon as possible; independently of the release.

+1

We have the resources to do this and there's no reason to not be doing it. Ungrafting rarely breaks anything so it should be easy.

Grafting uses energy and disk space on every user's computer.

The build farm has plenty of unused capacity to ungraft, at least on x86_64, which is the only platform that seems to be widely used (there's some evidence that aarch64 has multiple users).
A
A
Andreas Enge wrote on 13 Jun 11:30 -0700
Re: GCD005: Regular and efficient releases (submitted)
(name . Steve George)(address . steve@futurile.net)
aExuVXb_qmj6VJ2Y@jurong
Am Sat, Jun 07, 2025 at 01:03:10PM +0100 schrieb Steve George:
Toggle quote (2 lines)
> One way to consider that risk is to think about whether a GCD is irreversible (a one-day door). Trying 'regular releases' is not a one-way door. We can try it out, and if it turns out that we can't manage it as a project we'll simply fall back to our current process of irregular releases.

I think you put it very mildly; the real problem of our current process
is that it apparently has turned into "no releases"... This for me is
the most important motivation for this GCD, we need some momentum to
turn around this inertia.

Andreas
A
A
Andreas Enge wrote on 13 Jun 12:02 -0700
Re: GCD005: Regular and efficient releases
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
aEx1uJekR8ILrWOd@jurong
Hello Simon,

Am Thu, Jun 12, 2025 at 09:08:54PM +0200 schrieb Simon Tournier:
Toggle quote (4 lines)
> Instead, I think we need two intermediary steps:
> (1) Clarify what means being a member of a team.
> (2) Clarify the branching model; especially how to deal with grafts.

these are definitely good points, and I like your suggestion of coupling
grafting with ungrafting commits on a separate (team) branch. But I do
not think these steps are necessary prerequisites to defining a release
process, but rather orthogonal.

Toggle quote (5 lines)
> Until now, the bar was high. Maybe, one way to release more often is to
> decrease the bar so it’s easier to pass it and then we can rise it up,
> by incremental improvements. This is the section about Package Sets,
> Tiers and Release Artifacts.

I would also say that the GCD is part of that, or more precisely, of
defining a bar: The release team gets more concrete goals than just
"release" - personally, I think I could dare and try to get onto the
release team if this GCD (or a variant) gets adopted, while I would not
even know where to start in the current situation. Also, the goal is to
give some power to the release team to make unpopular decisions, which
people do not dare enough to take right now.

Toggle quote (14 lines)
> If the primary Release Manager is not able to keep the commitment (busy
> by life, away from keyboard, unexpected event, etc.), then the secondary
> Release Manager takes the floor. Right? But then, this “absent”
> primary Release Manager, does they become the next secondary Release
> Manager?
> Moreover, what does it happen if the both Release Manager are not
> responding? Do we delay the time to find two new Release Managers? Or
> is it two of the other members?
> The other question: what does it happen if the Release Team is not able
> to fix a blocker? Do we delay until the fix? Do we drop the blocker?
> Who decides? What is the process for making such decision?
> Who decides if 7 people volunteer to be the next release team? Hum, it
> will not happen, but still. :-)

I think that your list of "what if" questions is not very helpful, as
ultimately not limited to this GCD, but quintessential to all efforts of
a group of volunteers. What happens if we find too many people wanting
to do the work? Well, I suppose we can work something out, like some of
them being on the first release team, and others on the next one. More
realistically, what happens if not enough people want to do the work?
As said above, part of the goal of this GCD is to lower the bar so that
more people are willing to contribute. For instance, you wonder who
would engage for twice 12 weeks. I think the situation is much worse
right now - someone who volunteers to "do a release" is up for an
unknown amount of work over some unknown time; doing something "time
based" and not "when it is ready" is supposed to lower the burden.
(As an example: "Request for merging core-packages-team branch" happened
five months ago, and we still do not see the end of it after about 20 weeks.)
What happens if nobody does the work, the release team does not respond?
Well then, we will not have a release, but that would not be different
from the current situation, would it?

Andreas
S
S
Simon Tournier wrote on 13 Jun 13:12 -0700
Re: [bug#78332] GCD005: Regular and efficient releases
(name . Andreas Enge)(address . andreas@enge.fr)
87cyb7l7tn.fsf@gmail.com
Hi Andreas,

On Fri, 13 Jun 2025 at 21:02, Andreas Enge <andreas@enge.fr> wrote:
Toggle quote (11 lines)
> Am Thu, Jun 12, 2025 at 09:08:54PM +0200 schrieb Simon Tournier:

>> Instead, I think we need two intermediary steps:
>> (1) Clarify what means being a member of a team.
>> (2) Clarify the branching model; especially how to deal with grafts.
>
> these are definitely good points, and I like your suggestion of coupling
> grafting with ungrafting commits on a separate (team) branch. But I do
> not think these steps are necessary prerequisites to defining a release
> process, but rather orthogonal.

Yes I agree it’s orthogonal, but still a requirement if we want that
this proposal becomes actionable (have regular releases, concretely).

Let stretch a bit the picture. :-) Today, each team updates their scope
and they do independently of the others. The result: it’s almost
impossible to follow and being able to stabilize.

And stabilizing is another word for releasing. :-)

Before, it was small enough to say: Ok, although we still have a stream
of changes, the people who wanted to release fixed themselves the
remaining issues.

Today, that’s almost impossible to “fix themselves” considering the
volume. That’s one of the reason why we are so reluctant to jump in the
release process over the past two and half year.

If before entering the 12 weeks Release Period and the Teams have not
polished their state, then we will burn out.

IMHO, the success to be able to release once a year every year is mainly
conditioned by the policies we have on the Teams.

Obviously, we can first define the Release part and then define the
Teams. The former seems a great motivation for the later. :-)

To say it explicitly, I think this GCD 005 can only be actionable if it
comes with another companion GCD about the Teams.

So yes I agree it’s orthogonal, but still a requirement, IMHO. :-)


Toggle quote (2 lines)
> I think that your list of "what if" questions is not very helpful

What I want to raise is that “regular” implies to reduce the
“improvisation”, kind of.

Again, 12 weeks (3 months) of continuous commitment is something. And
it appears to me better to have beforehand some “rules“ in case it’s not
smooth as expected. Else it will not be regular, IMHO.

What I would like to clarify is what are the “duties” beforehand and how
we act if they are fulfilled – no big deal – it’s only to avoid the
situations where “we do not know” and try to figure out something.

To me, if we want to have something regular, we should reduce the cases
where we have to think about theses unexpected corner cases, because
when trying to figure out, the real work is not done. Somehow. :-)

Cheers,
simon
S
S
Simon Tournier wrote on 13 Jun 13:28 -0700
Re: GCD005: Regular and efficient releases
(name . Andreas Enge)(address . andreas@enge.fr)
CAJ3okZ05B5Pq2M2CZpAS18VOdsyx2_rxj0FY8zMAO+OQ8CDBBQ@mail.gmail.com
Typo: **not** fulfilled. :-)

On Friday, 13 June 2025, Simon Tournier <zimon.toutoune@gmail.com> wrote:

Toggle quote (66 lines)
> Hi Andreas,
>
> On Fri, 13 Jun 2025 at 21:02, Andreas Enge <andreas@enge.fr> wrote:
> > Am Thu, Jun 12, 2025 at 09:08:54PM +0200 schrieb Simon Tournier:
>
> >> Instead, I think we need two intermediary steps:
> >> (1) Clarify what means being a member of a team.
> >> (2) Clarify the branching model; especially how to deal with grafts.
> >
> > these are definitely good points, and I like your suggestion of coupling
> > grafting with ungrafting commits on a separate (team) branch. But I do
> > not think these steps are necessary prerequisites to defining a release
> > process, but rather orthogonal.
>
> Yes I agree it’s orthogonal, but still a requirement if we want that
> this proposal becomes actionable (have regular releases, concretely).
>
> Let stretch a bit the picture. :-) Today, each team updates their scope
> and they do independently of the others. The result: it’s almost
> impossible to follow and being able to stabilize.
>
> And stabilizing is another word for releasing. :-)
>
> Before, it was small enough to say: Ok, although we still have a stream
> of changes, the people who wanted to release fixed themselves the
> remaining issues.
>
> Today, that’s almost impossible to “fix themselves” considering the
> volume. That’s one of the reason why we are so reluctant to jump in the
> release process over the past two and half year.
>
> If before entering the 12 weeks Release Period and the Teams have not
> polished their state, then we will burn out.
>
> IMHO, the success to be able to release once a year every year is mainly
> conditioned by the policies we have on the Teams.
>
> Obviously, we can first define the Release part and then define the
> Teams. The former seems a great motivation for the later. :-)
>
> To say it explicitly, I think this GCD 005 can only be actionable if it
> comes with another companion GCD about the Teams.
>
> So yes I agree it’s orthogonal, but still a requirement, IMHO. :-)
>
>
> > I think that your list of "what if" questions is not very helpful
>
> What I want to raise is that “regular” implies to reduce the
> “improvisation”, kind of.
>
> Again, 12 weeks (3 months) of continuous commitment is something. And
> it appears to me better to have beforehand some “rules“ in case it’s not
> smooth as expected. Else it will not be regular, IMHO.
>
> What I would like to clarify is what are the “duties” beforehand and how
> we act if they are fulfilled – no big deal – it’s only to avoid the
> situations where “we do not know” and try to figure out something.
>
> To me, if we want to have something regular, we should reduce the cases
> where we have to think about theses unexpected corner cases, because
> when trying to figure out, the real work is not done. Somehow. :-)
>
> Cheers,
> simon
>
Attachment: file
E
E
Efraim Flashner wrote on 15 Jun 04:55 -0700
release manifest buildability
aE60oYBNncct3HRa@3900XT
Attachment: file
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmhOtJ0ACgkQQarn3Mo9
g1EAIw//Xhgh1tQpdcYPajS5IRSb0T30GuvPJvrr06KgqgIHYkdXB1tIk8G9AT9c
9N32Vo8ktPhAz/zdhgDOvgLFhGyAihcYCz98BfSgxkPR1rrHbNFoai3JpPUUqLSC
l1YTUBXwFsxrEToCCHL7kv9lp6d7GN9+BHBjUa5/i/7Z+JsTRZNM/e7DjFO8Jnoh
M20EFvxe+ICWfTLOTuo2rLksbYfhg9/+6wi0AgcIyTueDR4NyBomFl9ZIpGrcP/6
G7IAfWSGZMbiWf+4WiyQLYyW6nenO9WFJpgjhnszqE+gKdaxvfkCp0VbjM3mgy6D
/AgmMlPVoUzHzKibGqFqnRfg5RdjjAE/XzgI7Y755WR48i1FNl5o0SmhrCH64fsG
bVHJvuGioYHc1Pc6CCGq9qHBVMc1AVc/CKo+/iORWt9ZQYYY/2ksUcnO1euRVpjk
LtGUSQWLlczbj5frgrx8D8myl5A4IBcxGcm+hZH/HU9F9JOtMtCFEq6hskKGGklz
WoufJkOGGaUFSSuPJs5g3lVS6Jl2YRVK8ARPiWgyg3aLZEQ5Sab6v5AL4Mga7+3w
yk7ta4t4sz1WmJKp0r/Smm3G3idhcDYQq1Oh8J6gQMc5XAJBWHOywcFvv9Ql8hAq
McVfP15EsuGUEnEFe+ebAOB7Gn+LVYFQU8lX3oITz5tzzFoFxnw=
=JmYX
-----END PGP SIGNATURE-----


O
O
Olivier Rojon wrote on 17 Jun 21:52 -0700
Re: bug#78332: [PATCH 1/1] 005-regular-releases: Initial draft of GCD005 'Regular and efficient releases'.
(name . Steve George)(address . steve@futurile.net)
87qzzhk5wl.fsf_-_@posteo.net
Hi Steve, hi everyone,

first things first, thank you so much for your efforts for the Guix project. Your awesome
newbie-friendly blog posts, the Guix User and Contributor Survey, this GCD - thanks!

I have some comments to make (see below), but from my point of view, none of them HAVE to
lead to changes in the GCD, because especially considering the proposed iterative nature
of the process, many things will turn up during the first (or second, or third, ...)
iteration that will lead to changes. Overall, I think that this GCD proposes a
much-needed structure to a frighteningly complex process that too often is stemmed by too
few people. I think most of its parts are actionable as is, and I really appreciate that
you took so much time to investigate how other distributions do it and that you spelt out
a road map that the release team can use to guide their actions. I am certain that I
would be lost without such guidance, and I do appreciate that leeway for unpopular "behind
the scenes" work such as ungrafting is taken into consideration.

=================================================================

Package Sets
============
I have to admit to a certain brain tangle when it comes to this topic and I read many
contributions to the discussion to go towards this direction. If I understood the
discussion correctly, the first release process is likely to feature Guix veterans.
Wouldn't it be possible to deliberately underspecify which package sets (how many) are
present and what their contents are? This could take two different forms: one would say
that the release team can decide what to feature provided they test it according to the
outlined criteria (for all architectures etc), the other would say that the first release
team (comprised of veterans) lays the ground work and future release teams might have some
wiggle room.

release cycle start in $SPRING
==============================
for me personally the Guix Days were a catalyst and were motivating me to get involved
more concretely in the project than beforehand. Maybe the end of Guix Days/FOSDEM could
be mentioned as a concrete starting point because then, a possible release team has
(possibly) had time to coordinate in person what awaits them in the following weeks. And
if it hadn't had time, (possible) members of the release team have had ample opportunity
to charge their social and geek batteries and might be willing and able to release it ;-)

iterative process improvements/Release Cheat Sheet
==================================================
I think it is a very important step in the iterative process of release management that
lessons learnt make future iterations easier. The discussion has often times mentioned
automation, the GCD mentions the "communication afterwards, possibly with a blog post".
My supplementary idea is to write up a kind of "TODO List" or a "Release Cheat Sheet" (or
whatever you want to call it) that mentions either (a) all the steps required from start
to finish (that's what helps me with complex tasks where I need to be vigilant with each
step so I don't want to think about the overall structure, or (b) the typical GOTCHAS,
things that you forgot that really came back to bite you.

motivation for release: sync codebase and documentation
=======================================================
I don't know if that has already been mentioned, but another reason why a release can be
good is to have a kind of synchronisation between what the distro can do and what is
documented (where). The current state of affairs is to make sure to always use the devel
version of the manual which I think is a terrible way to introduce newbies, while the 1.4
version -- the "correct" manual for the installer you download and install -- features
quite some dead links etc. while being so out of date in places that we might as well --
I'm exaggerating to make a point -- replace it with a fantasy novel.

META: structure of the document
===============================
Would it make sense to make the sections "Package Sets", "Plattforms and Architecture tiers", "Release artifacts" and "Release team and project" top level headings? The way I read it they appear as aspects of the whole GCD while not standing in a content dependency relation to the "Motivation" section.

The same applies to the Appendix section, where I'd argue that when the Appendix is a
top-level heading and the explanation of the different "Events" are its direct children,
it would make sense to have their explanation on level 2 and not level 3.

@text: Package Set Finalisation
=========================
I don't understand the following sentence:

Toggle quote (3 lines)
> Packages that do not build for the primary architectures so could be risk of removal
> will be identified and developers will be notified following the Deprecation Policy.

The sentence would be fine without the part "so could be risk of removal". This part of
the sentence (to me) alludes to another aspect -- "risk of removal" -- that remains
underspecified and thus causes confusion. Unless it is a mistake, I think it would be a
good idea to rephrase to make the two aspects "deprecation of packages that don't build on
the primary architecture" and "risk of removal" clearer.

@text: Toolchain and transition freeze
======================================
Maybe a criterion such as with package updates could be used here, like "if a change in
package X incurs change in Y (say, 50) other packages, it needs to be treated specially".

=================================================================

I also append a patch file. Here I applied some (or all? dunno) the proposed "structure
of the document" and made some minor edits that I came across while reviewing the
document.

Again, thank you so much for your contribution, Steve! :)

Have a good day everyone,
Olivier
Steve George <steve@futurile.net> writes:

Toggle quote (29 lines)
> Hi all,
>
> Thanks for all the feedback on the initial proposal.
>
> I've integrated it into the GCD so attached is a revised version. I think it's ready to move to the Discussion Period (minimum 30 days from today).
>
> A short summary of the changes in this version:
>
> - Rename staging to integration branch with suggestion of next-master [Zheng Junjie]
> - Add benefit of updated distribution through other package managers [Rutherther]
> - Remove reference to faster initial git pull [Rutherther]
> - Move target annual release to June [Rutherther]
> - Reduce freeze period by breaking it up into stages [Rutherther & others]
> - updates freeze (week 8->12), hard freeze (week 10-12)
> - Identify pacakge sets earlier [Vagrant]
> - Reword template plan to show weeks [Vagrant]
> - Add alternative release target weeks to plan [Vagrant]
> - Identify 'at risk' packages earlier [Greg / Andreas]
> - Make automation a goal of the Release process & release team [Greg / Ekaitz / reza]
> - Reduce the scope of package sets [Jelle / Efraim]
> - Provide more clarity on dealing issues in package sets [Rurtherther]
> - Try to clarify options around RC bugs and package build failures
> - Try to clarify purpose of release project plan as a template
>
> I would love to know if this improves things from any feedback that you gave?
>
> As well as any other thoughts, comments or ideas on how to improve this GCD!
>
> Steve / Futurile
M
M
Maxim Cournoyer wrote on 18 Jun 00:01 -0700
Re: approximated popcon? (was Re: GCD005: Regular and efficient releases)
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
87plf1zg69.fsf@terra.mail-host-address-is-not-set
Hi Simon,

Simon Tournier <zimon.toutoune@gmail.com> writes:

Toggle quote (17 lines)
> Hi,
>
>> As we don't have popcon I don't know what's popular with users
>
> Once I heard a Debian Developer says: the aim of popcon isn’t to take
> less care of unpopular packages but the contrary. It allows to know
> that this package in appearance useless and/or outdated is still used by
> one user so it’s a motivation to still maintain its availability.
>
> Although hard when the resource is constrained, I like the
> reasoning. :-)
>
> Aside, maybe we could have a rough idea of some popular packages by
> looking at the queries in the substitutes cache.
>
> Guix sysadmin, is it doable?

I suppose it could be done by processing the nginx access logs.

--
Thanks,
Maxim
S
S
Simon Tournier wrote on 19 Jun 05:15 -0700
Re: [bug#78332] approximated popcon? (was Re: GCD005: Regular and efficient releases)
(name . Maxim Cournoyer)(address . maxim@guixotic.coop)
87a5643p26.fsf@gmail.com
Hi Maxim,

On Wed, 18 Jun 2025 at 16:01, Maxim Cournoyer <maxim@guixotic.coop> wrote:

Toggle quote (2 lines)
> I suppose it could be done by processing the nginx access logs.

Do you think it would be possible to send them? Offlist if
required. :-)

Cheers,
simon
M
M
Maxim Cournoyer wrote on 19 Jun 21:03 -0700
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
87qzzfjc01.fsf@terra.mail-host-address-is-not-set
Hi Simon,

Simon Tournier <zimon.toutoune@gmail.com> writes:

Toggle quote (9 lines)
> Hi Maxim,
>
> On Wed, 18 Jun 2025 at 16:01, Maxim Cournoyer <maxim@guixotic.coop> wrote:
>
>> I suppose it could be done by processing the nginx access logs.
>
> Do you think it would be possible to send them? Offlist if
> required. :-)

You do not have access to berlin, right? These are often multi gigabyte
or worst in size.

--
Thanks,
Maxim
G
G
Greg Hogan wrote on 20 Jun 08:28 -0700
Re: [bug#78332] GCD005: Regular and efficient releases (submitted)
(name . Andreas Enge)(address . andreas@enge.fr)
CA+3U0Zmb5XZz8fjvD6gnTuAvbOuwwE4tkPrqFBvqBO98=ofzug@mail.gmail.com
On Fri, Jun 13, 2025 at 2:31 PM Andreas Enge <andreas@enge.fr> wrote:
Toggle quote (9 lines)
>
> Am Sat, Jun 07, 2025 at 01:03:10PM +0100 schrieb Steve George:
> > One way to consider that risk is to think about whether a GCD is irreversible (a one-day door). Trying 'regular releases' is not a one-way door. We can try it out, and if it turns out that we can't manage it as a project we'll simply fall back to our current process of irregular releases.
>
> I think you put it very mildly; the real problem of our current process
> is that it apparently has turned into "no releases"... This for me is
> the most important motivation for this GCD, we need some momentum to
> turn around this inertia.

The GCD process is not designed for building momentum but rather for
agreeing on significant changes. From GCD 001:

"""The GCD process is a mechanism to determine whether a proposed
change is *significant* enough to require attention from the community
at large and if so, to provide a documented way to bring about broad
community discussion and to collectively decide on the proposal.

A change may be deemed *significant* when it could only be reverted at
a high cost or, for technical changes, when it has the potential to
disrupt user scripts and programs or user workflows."""

What from GCD 005 is significant by this definition?

Greg
A
A
Andreas Enge wrote on 20 Jun 10:53 -0700
(name . Greg Hogan)(address . code@greghogan.com)
aFWgLELObuFhC9wi@jurong
Hello,

Am Fri, Jun 20, 2025 at 11:28:19AM -0400 schrieb Greg Hogan:
Toggle quote (7 lines)
> > I think you put it very mildly; the real problem of our current process
> > is that it apparently has turned into "no releases"... This for me is
> > the most important motivation for this GCD, we need some momentum to
> > turn around this inertia.
> The GCD process is not designed for building momentum but rather for
> agreeing on significant changes. From GCD 001:

hm, I do not get your point. Of course it is not the *process* of
submitting this GCD that is supposed to generate momentum, but the
*result* of the GCD (in case it gets accepted) that should generate
momentum to reach releases.

Toggle quote (11 lines)
> """The GCD process is a mechanism to determine whether a proposed
> change is *significant* enough to require attention from the community
> at large and if so, to provide a documented way to bring about broad
> community discussion and to collectively decide on the proposal.
>
> A change may be deemed *significant* when it could only be reverted at
> a high cost or, for technical changes, when it has the potential to
> disrupt user scripts and programs or user workflows."""
>
> What from GCD 005 is significant by this definition?

If I follow this definition in the second paragraph, then this GCD
proposal is not significant; it can be reverted at low to zero cost.

On the other hand, I think that putting into place a process for releases
is a significant change; and since there are several ways of getting to
a release, it is good to have a community discussion and to collectively
decide.

My conclusion would rather be that the definition of "significant
change" in GCD 001 is a bit too narrow. For instance, I would include
organisational change in the Guix project also as significant, even if
it could easily be reverted.

Do you have a different suggestion to end up with more regular releases?
Or do you think that regular releases are not desirable?

Andreas
P
P
Philip McGrath wrote on 20 Jun 17:58 -0700
Re: GCD005: Regular and efficient releases (submitted)
6ca0e5f5-7b14-4f95-ab45-5a1b22cc6a16@app.fastmail.com
On Wed, Jun 11, 2025, at 4:58 PM, Ludovic Courtès wrote:
Toggle quote (11 lines)
>> I'm wondering if we should separate "Guix installed as a packge
>> manager" into it's own package set. In the long run this would be a
>> building lock that allow us to align with Philip's suggestion of
>> following a more Nix-packages / Nix OS separation of releases. What do
>> you think?
>
> The NixOS/Nixpkgs distinction doesn’t really exist anymore (it used to
> be two separate repos but the two are necessarily tightly coupled), so
> I’m not sure what the suggestion is.
>

The distinction I was thinking about was between the `nix` daemon and command-line tool, developed at https://github.com/NixOS/nixand last released on May 22 as version 2.29.0, and the Nixpkgs/NixOS package definitions, developed at https://github.com/NixOS/nixpkgs and last released on May 23 as version 25.05. IIUC, `nix` itself has a release cadence independent of Nixpkgs/NixOS: e.g. the previous `nix` 2.28.0 release was on April 4, whereas the Nixpkgs/NixOS 24.11 release was back in November.

I think the https://github.com/NixOS/nixrepository corresponds to the parts of Nix or Guix needed to install on a foreign distribution, as reflected in particular by the origin of Guix's nix@2.16.1 package.

On Mon, Jun 9, 2025, at 9:34 AM, Ludovic Courtès wrote:
Toggle quote (20 lines)
>> ## Release artifacts
>>
>> Using the primary architecture tier and the package sets would involve creating
>> the following release artifacts:
>>
>> - GNU Guix System ISO image
>> - GNU Guix System QCOW2 image
>> - ["the Guix System installation user interface on the ISO"]
>
> This omits two important things:
>
> • The binary tarball, used to install on top of another distro, for
> all “supported architectures” (Primary and Alternative).
>
> • The source tarball, as produced by ‘make dist’ (target audience is
> primarily downstream packagers, such as Debian).
>
> Reducing toil will be a matter of defining “supported architectures” in
> a reasonable way.

For the source and binary tarballs used to install on foreign distros and for downstream packaging, the case for regular releases seems clear. We expect that people may choose to upgrade the Guix daemon relatively rarely, especially if they (like me!) are getting it from downstream distro packaging. Ideally, the scope of this would be small enough that backporting important bug fixes and security updates would be feasible. (IIRC, the fix for CVE-2024-52867 was not backported onto Guix 1.4.0: the recommendation in the blog post was to use `guix pull` or wait for your distro packager to do the cherry-pick the patches.) These are what I think correspond to the https://github.com/NixOS/nixrepository.

For the Guix System UI+ISO+QCOW2, I am less clear on the benefits of designated releases over rolling-release snapshots like those from https://guix.gnu.org/en/download/latest/. (It is very possible that this is because I don't know much about how the installer works. I only tried it once or so, as an experiment: other times I have installed Guix System by first installing Guix on a foreign distro and then using `guix system reconfigure`.)

Nixpkgs/NixOS has both a rolling-release channel, nixos-unstable, and "stable channels" like nixos-25.5, which "get conservative bug fixes and package upgrades" and "are generally maintained until the next stable branch is created". Guix does not currently have "stable channels", and I haven't heard anyone proposing to change that at this juncture, so the only way to get bug fixes and security updates is to use `guix pull` regularly.

AIUI, this makes a release like Guix System 1.4.0 notably different than a release like NixOS 25.5. If you use a NixOS 25.5 installer, you not only do get version 25.5 of the installer itself, but also also default configuration to use the nixos-25.5 channel, so you will continue to use the same major versions of packages that you initially install, with only "conservative bug fixes and package upgrades". With a Guix System 1.4.0 installer, on the other hand, as soon as you do `guix pull && sudo guix system reconfigure /run/current-system/configuration.scm && sudo herd restart guix-daemon`—which you ought to do regularly—your package versions update the same as if you had used a snapshot installer.
P
P
pinoaffe wrote on 21 Jun 02:26 -0700
Re: [bug#78332] GCD005: Regular and efficient releases (submitted)
(name . Andreas Enge)(address . andreas@enge.fr)
8734bt4f9e.fsf@gmail.com
Andreas Enge <andreas@enge.fr> writes:
Toggle quote (18 lines)
>> """The GCD process is a mechanism to determine whether a proposed
>> change is *significant* enough to require attention from the community
>> at large and if so, to provide a documented way to bring about broad
>> community discussion and to collectively decide on the proposal.
>>
>> A change may be deemed *significant* when it could only be reverted at
>> a high cost or, for technical changes, when it has the potential to
>> disrupt user scripts and programs or user workflows."""
>>
>> What from GCD 005 is significant by this definition?
> If I follow this definition in the second paragraph, then this GCD
> proposal is not significant; it can be reverted at low to zero cost.
>
> On the other hand, I think that putting into place a process for releases
> is a significant change; and since there are several ways of getting to
> a release, it is good to have a community discussion and to collectively
> decide.

I think defining a release process might be a significant change, but
establishing a release schedule when there is none at the moment does
not seem like a significant change, and in any case I don't think that
regular releases can be brought about by a GCD

kind regards,
pinoaffe
P
P
Philip McGrath wrote on 21 Jun 08:50 -0700
17ac492a-e7c0-4901-be07-ab81490f2c8b@app.fastmail.com
On Fri, Jun 20, 2025, at 1:53 PM, Andreas Enge wrote:
Toggle quote (26 lines)
> Am Fri, Jun 20, 2025 at 11:28:19AM -0400 schrieb Greg Hogan:
>> """The GCD process is a mechanism to determine whether a proposed
>> change is *significant* enough to require attention from the community
>> at large and if so, to provide a documented way to bring about broad
>> community discussion and to collectively decide on the proposal.
>>
>> A change may be deemed *significant* when it could only be reverted at
>> a high cost or, for technical changes, when it has the potential to
>> disrupt user scripts and programs or user workflows."""
>>
>> What from GCD 005 is significant by this definition?
>
> If I follow this definition in the second paragraph, then this GCD
> proposal is not significant; it can be reverted at low to zero cost.
>
> On the other hand, I think that putting into place a process for releases
> is a significant change; and since there are several ways of getting to
> a release, it is good to have a community discussion and to collectively
> decide.
>
> My conclusion would rather be that the definition of "significant
> change" in GCD 001 is a bit too narrow. For instance, I would include
> organisational change in the Guix project also as significant, even if
> it could easily be reverted.
>

I read the second paragraph quoted from GCD 005 as a non-exhaustive list of factors that "may" make a change "significant", not as a definition restricting the meaning of "significant" to only the examples it describes.

The first paragraph says that "whether a proposed change is significant" is to be "determine[d]" by "the GCD process". To me, it seems fairly clear that the release model for Guix "require[s] attention from the community at large", so it seems fruitful to use "a documented way to bring about broad community discussion and to collectively decide on the proposal".

Maybe a difference from some other GCDs is the consequences if this does not achieve consensus. The current policy is basically "releases happen when someone feels like it's time and puts in the work to make one". I don't think there's anything in current policy that *forbids* interested volunteers from making annual releases along the lines of this proposal, even if GCD 005 does not achieve consensus. But hopefully we *can* achieve consensus on what Guix's release model should be, and, if so, it will be valuable to document that consensus.

Philip
S
S
Steve George wrote on 22 Jun 05:20 -0700
bdwefjskfci5ip2lwunassqrhkro7zlapts5edfaavl4q63jk4@7jthbcpztxce
Hi,

This part of the thread is about the definition of the current variables.

- Philip you're cc'd, but actually your point is a bit sub-thread.
- Efraim this is of interest to you, so added you back in.

On Wed, Jun 11, 2025 at 10:47:42PM +0200, Ludovic Courtès wrote:
Toggle quote (30 lines)
> Hello,
>
> Efraim Flashner <efraim@flashner.co.il> writes:
>
> >> > • “Core” packages that anyone may wish to install on any of the
> >> > architectures supported by Guix (not Guix System).
> >> >
> >> > This was ‘%base-packages’ in
> >> > <https://codeberg.org/guix/guix/src/commit/12d00767f036029f1f5738de644d4972db374f4f/etc/manifests/release.s
>
> [...]
>
> > (define %base-packages
> > ;; Packages that must be substitutable on all the platforms Guix supports.
> > (map specification->package
> > '("bootstrap-tarballs" "gcc-toolchain" "nss-certs"
> > "openssh" "emacs" "vim" "python" "guile" "guix")))
> >
> > I realize that they are important packages, but they're all packages
> > that, if they broke, we would've noticed anyway (perhaps not
> > bootstrap-tarballs).
>
> It’s not just about checking they’re not broken (you’re right we’d have
> noticed, at least on the popular architectures), it’s also about
> ensuring that substitutes are available for them.
>
> That was the spirit of the ‘assert-binaries-available’ Makefile target.
> And that, in practice, often turned out to be difficult to achieve,
> especially for Arm.

-- >8 -- >8

* %system_packages: packages required to boot and install a minimal Guix System
or install Guix on a foreign distribution. This only includes default
options **required** by the installer which **must** work for a release since
they are part of the default installer path. For example, this would include
the guix daemon, kernels, boot loaders, file-systems and minimal utilities.
* %desktop_packages: additional desktop environments and other options from
the installer. This includes packages that are part of the installer
(but not default) and other popular options as chosen by the Release Team.
Packages **should** work, but they may receive less QA attention from the
Release Team than %system_packages.
* %base_packages: important packages that anyone may wish to install on Guix and
consequently the project wants to maintain substitutes for. This may include
important toolchains, runtimes and utilities. The Release Team **may**
perform QA on these packages.

Guix would still make all packages and services part of a release (the entire
archive). Guix teams would be asked to test the parts of the archive that they
look after. But, only Release Critical bugs in the `package sets` could block
a release.

The Release Team may identify other package sets as needed.

-- >8 -- >8

Is that better?

Steve / Futurile
S
S
Steve George wrote on 22 Jun 05:36 -0700
Re: GCD005: Regular and efficient releases (submitted)
(name . Philip McGrath)(address . philip@philipmcgrath.com)
nsm5mf4i53r4ndsptiysc4z543qipx2udjolqf2be44naml3z2@uuu4xwp5dosb
Attachment: file
S
S
Steve George wrote on 22 Jun 08:04 -0700
Re: bug#78332: [PATCH 1/1] 005-regular-releases: Initial draft of GCD005 'Regular and efficient releases'.
(name . Olivier Rojon)(address . o.rojon@posteo.net)
nzgbquu273awonarjqbhmbukhh5mkextwdrucpbspbus4b5e4g@npx5tjpk2ftl
Attachment: file
S
S
Steve George wrote on 22 Jun 09:13 -0700
Re: GCD005: Regular and efficient releases
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
ppytsxzumcybromgvkyqgppwthabry2cap5r6cbs4hxlfdol6h@6l6rnux3gyjw
Attachment: file
S
S
Steve George wrote on 22 Jun 09:15 -0700
(name . Leo Famulari)(address . leo@famulari.name)
cwkjxcywyepgehrcg7pvpemm77lhvdtb6hrm7s6wt4melw6xk5@5yqe3d2jecfq
On Fri, Jun 13, 2025 at 10:46:18AM -0400, Leo Famulari wrote:
Toggle quote (13 lines)
> On Thu, Jun 12, 2025, at 15:08, Simon Tournier wrote:
> > For instance, if a team introduces a graft,
> > then this very same team must open a branch that ungrafts and then merge
> > this branch as soon as possible; independently of the release.
>
> +1
>
> We have the resources to do this and there's no reason to not be doing it. Ungrafting rarely breaks anything so it should be easy.
>
> Grafting uses energy and disk space on every user's computer.
>
> The build farm has plenty of unused capacity to ungraft, at least on x86_64, which is the only platform that seems to be widely used (there's some evidence that aarch64 has multiple users).

Is this a topic enough to create a "short" GCD for, or perhaps we can just add it to the manual as a new policy?

Steve / Futurile
S
S
Steve George wrote on 22 Jun 09:30 -0700
Re: [bug#78332] GCD005: Regular and efficient releases (submitted)
(name . pinoaffe)(address . pinoaffe@gmail.com)
zz55c62jqpfadtncxvha4u2rxikl4f6ozq4f77yd6fxzzbop77@pnzq7hunelr5
Hi Pinoaffe,

On Sat, Jun 21, 2025 at 11:26:21AM +0200, pinoaffe wrote:
Toggle quote (1 lines)
> Andreas Enge <andreas@enge.fr> writes:
(...)
Toggle quote (9 lines)
> > On the other hand, I think that putting into place a process for releases
> > is a significant change; and since there are several ways of getting to
> > a release, it is good to have a community discussion and to collectively
> > decide.
>
> I think defining a release process might be a significant change, but
> establishing a release schedule when there is none at the moment does
> not seem like a significant change, and in any case I don't think that
> regular releases can be brought about by a GCD
(...)

You said "I don't think that regular release can be brought about by a GCD". I don't know precisely why you think this, but I will guess that your perspective is that having a GCD doesn't magically make 4 volunteers turn up who are willing to do the work. Of course, this is true - totally appreciate that.

But, having a GCD does:

1. Provide a clear statement of what we want: "regular annual releases"
2. Provide some methods for how to make achieving releases easier: automation, package sets, architectures
3. Creates a useful organisation documentation around how to do releases: something the first release team can build on

So from that perspective, I think it _may_ help, and it doesn't hinder!

Steve / Futurile
C
C
Christopher Baines wrote on 22 Jun 11:50 -0700
Re: GCD005: Regular and efficient releases (submitted)
87a55za9wd.fsf@cbaines.net
Steve George <steve@futurile.net> writes:

Toggle quote (4 lines)
> I would love to know if this improves things from any feedback that you gave?
>
> As well as any other thoughts, comments or ideas on how to improve this GCD!

I'm generally supportive of regular releases, but avoiding things being
broken is just too hard at the moment, I can't see myself voluenteering
to be on the release team.
-----BEGIN PGP SIGNATURE-----

iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAmhYUGJfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh
aW5lcy5uZXQACgkQXiijOwuE9XdZ2BAAgC3RYuqFGX/Tbu01z82quvCOdH4/5kW1
EE+fQnK6GhMjc22WazF7xfGPJf7FTziDJLC2Yi8dk6OifjWDDeKmfnMa39lO6Zj+
AFhP9xIXpDGZeniK1cEfkIa4onbTJdJKOZjnG7JakzFww3U9X9buty6FhERnHzzq
O1lL5q0eHnnpSf324ikSZTxwkKLrCPj/G9a+jVoxhYz2WOxxo7WDbRSl66HP9KOV
VvRKCHmjvDHRe4KWx+vhTJlz9oZHbFFYEgIscePbzCf+QXv5EaX7abAC6cEjB9PY
lKjRFUKfI9gD+ng4YTsO7Fovn87x/LkvqEo7j+VscU4Bwt9uc0SLF6VJhHYnQOLM
JVAND52v9hCWOp4Rk1llOLdfFmRgKwP3dLwrGQ3fRAOKU6lfmQ+eSnoDXHgPJ+2L
m2D1wEQawoxazJ/NauNAJ+tqTa9ri4P34f0SvadIVcFhThlMo8awo82nEiY6xnyf
TgcQouDw9p4bOT+d6aTQXQNWas+CSNLoIphig9iaW5fqtG8a3Y0dqELFvO2LV7Mj
auJUuztGd49Dy5U2fNjD/0POhjG6IJF7yKsiYD4BPAt2ZrIf40Xt8cdpE7BEtuuH
o7WT0mMeAe3FWcdOoKjiiVPo8/oUHDN+ZX4Pt3MbuwIPawDW/ME2nxs9wHUi0fQt
QG1ZA6RVA9s=
=Y3ju
-----END PGP SIGNATURE-----

M
M
Maxim Cournoyer wrote on 22 Jun 20:23 -0700
Re: Gathering feedback on GCD005: Guix regular releases
(address . 78332@debbugs.gnu.org)(name . Steve George)(address . steve@futurile.net)
875xgnf8em.fsf@terra.mail-host-address-is-not-set
Hi Steve,

Thanks for attempting to tackle the thorny topic of release processes.

I finally took the time to read this carefully and in full. Here are
some comments, I hope it's not too late!

[...]

Toggle quote (6 lines)
> The weaknesses in this release strategy are:

> 1. No clarity on when the next Guix release is.
> 2. Releases are complex and toil for developers.
> 3. Rolling updates aren't suitable for all users.

I'd drop the identified weakness '#3: Rolling updates aren't suitable
for all users' from the GCD; it's not addressed by this GCD, and it's
not clear that being a rolling distribution is a weakness (it's a
strength from the point of view of keeping things simple).

I feel the GCD goes to some lengths emphasizing that releases are a good
thing; while interesting, I think it may be better to take it for
granted and streamline what is already a rather long text, focusing more
on what are the current problems/pain points and what concrete changes
are proposed to address these. Especially novel changes not already
captured in the 'release' Make target of the project would be important
to highlight/capture.

For example, some rudimentary package sets and architecture subsets are
already used; packages via /etc/manifests/release.scm, and architectures
via the SUPPORTED_SYSTEMS and GUIX_SYSTEM_INSTALLER_SYSTEMS Make
variables.

This target gives a good idea of what is in scope for the release, in
terms of release artifacts. I've brushed that topic in the past [0],
but let's revisit this with more details here, for the benefit of this
GCD:

- Source distribution to be uploaded to the GNU FTP server

- Binary package of Guix for installation via guix-install.sh
(currently: x86_64-linux i686-linux armhf-linux aarch64-linux
powerpc64le-linux riscv64-linux)
- Updated Guix package (which means its test suite must pass)

- ISO installation images for the supported systems (currently:
x86_64-linux, i686-linux)
- VM image for the supported systems (currently: x86-64)

So that gives a rough initial scope for making a release. It means
that:

1. Guix and all its dependencies must build successfully on multiple
architectures.
2. Xfce-desktop closure must be buildable on x86-64

Just this can take a lot of time, as Guix itself has to be built twice
even on slower machines like aarch64-linux. That's because we want the
referenced Guix package in the installation image to be the one being
released.

Then comes the *manual* testing/validation of these, which can takes time:

1. Installing the binary package via guix-install.sh in a VM, ideally
multiple different foreign distributions and see that it works
correctly.

2. Running the qcow2 image with something like virt-manager or
GNOME-Boxes; ensuring the system works correctly, with SPICE niceties
like copy-paste and dynamic display resizing.

3. Installation from scratch in a VM using the bootable ISO. At least
the default settings should work, and it's nice to test more, of course.

Finally comes the step of uploading/communicating the changes:

1. Update NEWS file. There's a update-NEWS Make target that does some
automation, but a lot of time will be sunk into manually combing
thousands of commits for interesting changes to mention in the NEWS file
(it's the part I dislike most) -- a better process would ensure NEWS are
captured/updated at the time changes are committed (burden on the
committer, not the release person).

2. Draft a blog post for the release. Traditionally highlighting
interesting changes, with examples and all. This takes some time
too/writing skills. In my opinion, if the goal is to automate releases,
this should be stripped down to the essentials, with a more interesting
blog posts following if we have people interested in authoring them.

3. Upload the release artifacts, using the gnupload to the GNU FTP and
email a few mailing lists, as mentioned in the doc/release.org file.


Oof, sorry for the wall of text. Back to the actual GCD document being
discussed:

Toggle quote (7 lines)
> Guix is both a package manager that can be hosted on other Linux
> distributions, and a Linux distribution. Limiting the range of
> packages and services that receive attention is consequently more
> complicated. Guix already has manifests to track which packages are
> used by Guix System's installer , so this proposal extends that
> concept.

I'd replace the term 'Linux' with GNU/Linux. This is a GNU package,
let's not miss an opportunity to advertise GNU's existence/significance
:-).

I don't think we should introduce finer-grained package sets that must
be discussed for each release. That goes against automation and
enlarges the current scope, which we're already struggling with. If the
release artifacts build and test fine (which include a lightweight
desktop image), we should be minimally good to go.

Toggle quote (4 lines)
> and removing the broken package from the archive using the Deprecation
> Policy. As always, packages may be un-deprecated and returned to the
> archive at a later date.

s/removing/deprecating/

Toggle quote (2 lines)
> The aim in this template is for a 12 week active release project,

That's a lot of time! I dream of a CI workflow that would build the
release artifacts and tests them minimally: when green, releasing would
take a couple days at most.

I think the process should only impact the operations of the release
team: that means not forcing everyone on a freeze, or a different
branch, etc. The release team can simply branch from master to a
release branch and refine it there. When it's done and released, it can
be merged back into master. While trying to have teams synchronized for
a release sounds good, I think in practice this will cause problems. So
releasing should be orthogonal to the status/milestones of teams, in my
opinion. Releasing often will make that less of a problem anyway.

From the Appendix 1: release project template, I'd drop or edit these:

s/Notify teams/Notify contributors (e.g. guix-devel)/

I'd drop: 'Package set finalisation' (release artifacts is what
matters), 'Toolchain and transition freeze' (orthogonal),
'Major updates freeze' (shouldn't be much of an issue, with topic
branches being QA'd), 'Breaking changes to next-master' (changing main
flow is unnecessary), 'Ungraft
master branch' (should be done continuously / it's orthogonal).

In the past we've paid attention to having fresh translations in for a
release; I don't see this covered here. Perhaps it's OK to be left as
an orthogonal topic if we release often enough.

So these are my thoughts, which I'm afraid are not too well
ordered/presented, but I've already spent more than 1 h writing this
email so I'll let it go :-).

Again, I think this is a fine text (it's very well written), and I
appreciate your initiative. I think it's important to try to simplify
things rather than complicate them though, which this GCD in its current
form does to some degree (by codifying a larger scope than needed, in my
opinion).

I hope that's useful!

--
Thanks,
Maxim
L
L
Ludovic Courtès wrote on 23 Jun 00:58 -0700
Re: [bug#78332] GCD005: Regular and efficient releases (submitted)
(name . Steve George)(address . steve@futurile.net)
87ecva6g9b.fsf@gnu.org
Hello,

Steve George <steve@futurile.net> writes:

Toggle quote (26 lines)
> -- >8 -- >8
>
> * %system_packages: packages required to boot and install a minimal Guix System
> or install Guix on a foreign distribution. This only includes default
> options **required** by the installer which **must** work for a release since
> they are part of the default installer path. For example, this would include
> the guix daemon, kernels, boot loaders, file-systems and minimal utilities.
> * %desktop_packages: additional desktop environments and other options from
> the installer. This includes packages that are part of the installer
> (but not default) and other popular options as chosen by the Release Team.
> Packages **should** work, but they may receive less QA attention from the
> Release Team than %system_packages.
> * %base_packages: important packages that anyone may wish to install on Guix and
> consequently the project wants to maintain substitutes for. This may include
> important toolchains, runtimes and utilities. The Release Team **may**
> perform QA on these packages.
>
> Guix would still make all packages and services part of a release (the entire
> archive). Guix teams would be asked to test the parts of the archive that they
> look after. But, only Release Critical bugs in the `package sets` could block
> a release.
>
> The Release Team may identify other package sets as needed.
>
> -- >8 -- >8

These are supposed to be the names of variables used in
‘etc/manifests/release.scm’? Maybe we can omit the variable names after
all?

What matters here is the description of each one, which LGTM: things
that must work, should work, and have substitutes available.

Thanks,
Ludo’.
S
S
Steve George wrote on 23 Jun 07:14 -0700
Re: Gathering feedback on GCD005: Guix regular releases
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)(address . 78332@debbugs.gnu.org)
sa7psea3krg6dkwxwdhm2zleakyfs7xmimdfzl2klvyunskb5s@7jnfkouwuqbh
Attachment: file
S
S
Steve George wrote on 23 Jun 07:43 -0700
GCD005: Regular and efficient releases (consideration/decision)
(address . 78332@debbugs.gnu.org)
jfsvpkfrnez7uvawb56su4ewesauz3buinablmhk6xcx4kvbfi@zimlowx467fe
Hi all,

After a good long discussion I'm moving GCD005 to Deliberation.

The final version is below and can be found on Codeberg:


This means that team members have 14 days to send one of the following replies on the patch-tracking entry of the GCD:

- “I support”, meaning that one supports the proposal;
- “I accept”, meaning that one consents to the implementation of the proposal;
- “I disapprove”, meaning that one opposes the implementation of the proposal.

The Issue is:

78332@debbugs.gnu.org


In terms of next steps beyond the GCD, Efraim has said he's willing to be the next Release Manager, and both myself and Andreas have committed to help out - I'm sure there will be others!

Thanks so much!

Steve / Futurile
Attachment: file
N
N
Noé Lopez wrote on 23 Jun 15:11 -0700
(address . 78332@debbugs.gnu.org)
87h606nm5z.fsf@xn--no-cja.eu
Steve George <steve@futurile.net> writes:

Toggle quote (25 lines)
> Hi all,
>
> After a good long discussion I'm moving GCD005 to Deliberation.
>
> The final version is below and can be found on Codeberg:
>
> https://codeberg.org/guix/guix-consensus-documents/src/branch/main/005-regular-releases.md
>
> This means that team members have 14 days to send one of the following replies on the patch-tracking entry of the GCD:
>
> - “I support”, meaning that one supports the proposal;
> - “I accept”, meaning that one consents to the implementation of the proposal;
> - “I disapprove”, meaning that one opposes the implementation of the proposal.
>
> The Issue is:
>
> 78332@debbugs.gnu.org
>
> https://issues.guix.gnu.org/78332
>
> In terms of next steps beyond the GCD, Efraim has said he's willing to be the next Release Manager, and both myself and Andreas have committed to help out - I'm sure there will be others!
>
> Thanks so much!
>

I support!
-----BEGIN PGP SIGNATURE-----

iQHFBAEBCAAvFiEEXVTPJVeyOOiNwYCiLSIyQQq3QEMFAmhZ0QgRHG5vZWxvcGV6
QGZyZWUuZnIACgkQLSIyQQq3QEOnuwv/ZBgZZdqyOnaKPO40hRlLhs5hL93sRD73
Ok3dc9O10ne/Tw/RiOiWZpIh3jByBcl6WpCwKneTlsHl9P0BNED+2vdzeZCiu3vR
1730WMr+y/j8wjFCDQirZvlmWA5Ka6HBC4TRtyDJADw51ds32kGj36NR9d4UUjEG
dMQ3HWKgrYaqSLVKzIAvWOyLUT1Eg60iJGMW1H8O6cl6UaLtM0LAz2PE5lD9rhST
NFg2h7QG/dqrfU3rDV75R/SWugV6J3WtL7RBw9DOgWxrpi+ki17rZjt+FeBonO6W
wKVM9uYj5AQ/fmhVsmbyA1qVNgK7V0ZPbFVoeyZ+fFKqElld7nWby+dQYxsZP1Q+
TjFR4lWLbzzHXgmHloOGbLyd2E8Q0spfJ5R0Hf24YG+84ZxC4VURt6r4aFZ1rR18
lmJnpRuGXcfKAGZwJrJTb3SYOIKnsN3/azN6iwlnMA1ocIxXLyvgV2NtIB11OHsa
blS0geTlrGtaUTCeh7BUI6iAVy4gxNSc
=78rA
-----END PGP SIGNATURE-----

D
D
Divya Ranjan wrote on 23 Jun 22:53 -0700
(address . 78332@debbugs.gnu.org)
BE2C64C0-D960-4DE6-A564-9B11DCB8073A@subvertising.org
I support.

On 23 June 2025 14:43:14 GMT, Steve George <steve@futurile.net> wrote:
Toggle quote (26 lines)
>Hi all,
>
>After a good long discussion I'm moving GCD005 to Deliberation.
>
>The final version is below and can be found on Codeberg:
>
> https://codeberg.org/guix/guix-consensus-documents/src/branch/main/005-regular-releases.md
>
>This means that team members have 14 days to send one of the following replies on the patch-tracking entry of the GCD:
>
>- “I support”, meaning that one supports the proposal;
>- “I accept”, meaning that one consents to the implementation of the proposal;
>- “I disapprove”, meaning that one opposes the implementation of the proposal.
>
>The Issue is:
>
> 78332@debbugs.gnu.org
>
> https://issues.guix.gnu.org/78332
>
>In terms of next steps beyond the GCD, Efraim has said he's willing to be the next Release Manager, and both myself and Andreas have committed to help out - I'm sure there will be others!
>
>Thanks so much!
>
>Steve / Futurile

Divya Ranjan, Mathematics, Philosophy and Libre Software
Attachment: file
Z
(name . Steve George)(address . steve@futurile.net)
87cyathbc2.fsf@z572.online
Steve George <steve@futurile.net> writes:

Toggle quote (14 lines)
> Hi all,
>
> After a good long discussion I'm moving GCD005 to Deliberation.
>
> The final version is below and can be found on Codeberg:
>
> https://codeberg.org/guix/guix-consensus-documents/src/branch/main/005-regular-releases.md
>
> This means that team members have 14 days to send one of the following replies on the patch-tracking entry of the GCD:
>
> - “I support”, meaning that one supports the proposal;
> - “I accept”, meaning that one consents to the implementation of the proposal;
> - “I disapprove”, meaning that one opposes the implementation of the proposal.

I support
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEfr6klGDOXiwIdX/bO1qpk+Gi3/AFAmhaTV0ACgkQO1qpk+Gi
3/C6UA/+MBZhLGZcsE32y3lv1obrTlIx1YqOJPfjZ0w7XBkdYm3ILczmBF3EcL/l
dmdjs7wnkhLos9JvIjDZv1w7M9+P0mJkYN8d8QcHzb1zhL9O30Y6uU1qqAayfkui
lDLSyyOyLbNRdyEXQ7SoTFjXTc4ng3sM5O80aD9GeLHnWq9BlR0CGGuJqYLwawAF
Vxv2c4/0Xm5h9HY348QXwl6110CTLB0taiBNxdpD1aGuXy1QPoS+UtYDUL2+D2ZA
wBS3IVSl/zHbKc6BMySfPvQezOQenXPAHG6ptUL2ndEGHnmLLIH7wjMqDMsUrdB9
DZbtnuzEx5GrZLhZLSnDqOWZa9hAHmhouxTEiWqHiC7YNlB3L97thwTusD9afdOw
Ir87YlesPViCu3d9DT06snzhvvdl/lywuk8oiFqUb5P3lhIWYzIpK5lD2Ss5oV2O
6cTp1uaOpgfPEQrg7Ey6U6czHvusVr5r3hCAJRXx61wO2ntaU9apasgSyIrXHX11
j2UBMrFtVTzLTxZFRegHHTYZN6+p7wGJxsp3JBtBiAkyq64T9e6bwkbwjRTVyTJh
r8/i8JDnTxQ4Vu/h84mcJyJckun6poXDSmKU/w/JOTvyZ1IBt3aSId6WDnpKkPKc
Zyqdra1vcqMRlzx/NqINz1vIQDD1rCwDWj5g2yGN+MyiRDN7vb0=
=68L6
-----END PGP SIGNATURE-----

T
T
tusharhero wrote on 24 Jun 02:12 -0700
GCD 5
(address . 78332@debbugs.gnu.org)
40c8f9c16af520c16e842f371c223998.squirrel@mx.sdf.org
I support

---
tusharhero
M
M
Maxim Cournoyer wrote on 24 Jun 04:28 -0700
GCD005: Regular and efficient releases (consideration/decision)
(address . 78332@debbugs.gnu.org)
87ecv9l6o9.fsf@terra.mail-host-address-is-not-set
I support.

--
Thanks,
Maxim
-----BEGIN PGP SIGNATURE-----

iQJOBAEBCAA4FiEEJ9WGpPiQCFQyn/CfEmDkZILmNWIFAmhajA4aHG1heGltLmNv
dXJub3llckBnbWFpbC5jb20ACgkQEmDkZILmNWI52w//aYD8cqesP3imTAnidEMu
N3kzDb0nGdUSgZwxErBtul53XUbo26zR0kt+uiVqLp0rkY2B3Hk6snNqPO21D8Wj
hRGlrotYZ0t/cnPN2JL2muqdSJ2kPGkayBHD2WLoa2H3HSP11yOIw836OLQNCHIT
7GYVXGY+iUMwUZ5ufTWCGuuTGSdopKYk5K7wBfA92pAHO+0ljCsuXTmxeotHhXp6
KFWFhxTgq/Vf81Tw4/DzDmSp3RkcEZSBrEE2hn17UEDM4Y3TpnrEuFTfja0iEfy1
U4STbvpSR3SCzCzohcx+E+shSpJFNoQghUYo4ZDy5/0WU1wrIGEaImVNlVDSgApg
Q4jV+qVu8B4XHJMnZlsHolB+WvpL3hvD2YQNMPMSgsGQrbhEN+SALy4DpnbijEq0
LXkuO9kewtWHdpII8eTYvGpDTnE4DpsFojLQCb87wfEAu09QhAQo0H3Kb6ncWbVS
4C1v+fykJOWOulLGlAvuksuRe1yQBZYZ7RV+W/XlrRaWr+kToEwdlp0PnrynyFq8
DRG/Hl2ZcNCOuuwfUUYKNCL5cwiCSmJHyP9I85B6Wlgndm1qRA+S2OUBgX6QXQ+3
raKhguHDxbvMTPLjylEntopXGusTrpUduum7OSmx2BCeBcPNc9icZmNUzaL2lk/Q
PRMLGkINrOf8bmmHbeSnPtY=
=/sCg
-----END PGP SIGNATURE-----

G
G
Greg Hogan wrote on 24 Jun 05:11 -0700
Re: [bug#78332] GCD005: Regular and efficient releases (submitted)
(name . Andreas Enge)(address . andreas@enge.fr)
CA+3U0Zn2jY=aRLHFi80vW-=rQroYgOUF+iTUUDSLN-MGR70m4w@mail.gmail.com
On Fri, Jun 20, 2025 at 1:53 PM Andreas Enge <andreas@enge.fr> wrote:
Toggle quote (45 lines)
>
> Hello,
>
> Am Fri, Jun 20, 2025 at 11:28:19AM -0400 schrieb Greg Hogan:
> > > I think you put it very mildly; the real problem of our current process
> > > is that it apparently has turned into "no releases"... This for me is
> > > the most important motivation for this GCD, we need some momentum to
> > > turn around this inertia.
> > The GCD process is not designed for building momentum but rather for
> > agreeing on significant changes. From GCD 001:
>
> hm, I do not get your point. Of course it is not the *process* of
> submitting this GCD that is supposed to generate momentum, but the
> *result* of the GCD (in case it gets accepted) that should generate
> momentum to reach releases.
>
> > """The GCD process is a mechanism to determine whether a proposed
> > change is *significant* enough to require attention from the community
> > at large and if so, to provide a documented way to bring about broad
> > community discussion and to collectively decide on the proposal.
> >
> > A change may be deemed *significant* when it could only be reverted at
> > a high cost or, for technical changes, when it has the potential to
> > disrupt user scripts and programs or user workflows."""
> >
> > What from GCD 005 is significant by this definition?
>
> If I follow this definition in the second paragraph, then this GCD
> proposal is not significant; it can be reverted at low to zero cost.
>
> On the other hand, I think that putting into place a process for releases
> is a significant change; and since there are several ways of getting to
> a release, it is good to have a community discussion and to collectively
> decide.
>
> My conclusion would rather be that the definition of "significant
> change" in GCD 001 is a bit too narrow. For instance, I would include
> organisational change in the Guix project also as significant, even if
> it could easily be reverted.
>
> Do you have a different suggestion to end up with more regular releases?
> Or do you think that regular releases are not desirable?
>
> Andreas

My opinions on the project release cadence are of no greater
consequence than the update frequency or inclusion of any individual
package by a contributor or team. Most of this GCD can simply be
merged into the project documentation, which can then be updated with
a new commit rather than requiring a new GCD. By codifying an annual
release process we actually restrict the number of releases! And what
if the June deadline is missed? If these are mere guidelines then what
are we voting on?

I do think the capacity of the release team to pause contributions to
the master branch, or to shunt these contributions onto a staging
branch, to be of significance. There are counterarguments that a pause
is not necessary, but this would make for a focused GCD and
discussion.

Greg
K
K
Konrad Hinsen wrote on 25 Jun 04:49 -0700
GCD005
(address . 78332@debbugs.gnu.org)
m1zfdw82hk.fsf@fastmail.net
I support

Cheers,
Konrad
A
A
Andreas Enge wrote on 25 Jun 09:23 -0700
Re: GCD005: Regular and efficient releases (consideration/decision)
(name . Steve George)(address . steve@futurile.net)
aFwibJv1EY7EjvMJ@jurong
I support.

Andreas
E
E
Efraim Flashner wrote on 26 Jun 00:07 -0700
(name . Steve George)(address . steve@futurile.net)
aFzxnof_y6-MAhtd@3900XT
I support.

--
Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmhc8ZsACgkQQarn3Mo9
g1HQ4w//UCXu1TDcdM/8LD0oR9D8KWvjelnVmqdQCOPD0yyKDWE8M9Z9S19900t8
orkkSgdDQKDzqYqrsCIWhiaMa8CELCmla4X0Xh8FBKu3AisNWCf3b5jaVeGqvakv
UZh0hw/j48Ivo6MsV+Ikyml928E2rLDYnEc62VILGH7Pk1voHnChpoVsvJan9AgP
abKH2+M8Hz+mL2njoBLNcrH2z6szIkJXu5gQ/nQp1mOFinyWlbl5mnImaF6ujaBE
k2ga3aLkU+uAEEvsg1iEzx91UiIIgl7iZgelTRZJ1pd31mFAFCmmj8pCdr0oMBtT
f4OaDH5XHmq+TtPom8Rjryl1ylQmT54um9nb+fTNXasHlqdBkMi3bO4D9s4ISG2r
QbIQSXEiWsjM0jyQRFJNA1GdwMav2OkKVFg98LQcBRnYLzXHINanhVuXsacoYwDl
CU2pz9fln6vrcm3G2GP9Mhfx50hHAY4DFPnfrVCJlEJRCV2oxigCUR3kxPNYfBNy
1IWBjgqkrLrsqDVET8QJ0XUG0LGPFyqGsgfGmavWWaZ6UerT9hoCfGYO3jgUXoHE
R6a4ZWK7UWS2exjAd/6Ur3HUXfqYReQCrulfCKPhq9ualLYprPo1RCCKfhZeXvtk
qtFfufwXECLnDEZPRk0lAj5BxoiBp4Dh2mSVEaVajekZeRHzsCI=
=/Fbd
-----END PGP SIGNATURE-----


C
C
Cayetano Santos wrote on 26 Jun 00:43 -0700
Re: [bug#78332] GCD005: Regular and efficient releases (consideration/decision)
(address . steve@futurile.net)(address . 78332@debbugs.gnu.org)
87qzz77xt5.fsf@inventati.org
I support.

--
Cayetano Santos
.
gpg: CCB8 1842 F9D7 058E CD67 377A BF5C DF4D F6BF 6682
key: meta.sr.ht/~csantosb.pgp
-----BEGIN PGP SIGNATURE-----

iI0EARYKADUWIQTMuBhC+dcFjs1nN3q/XN9N9r9mggUCaFz6FhccY3NhbnRvc2JA
aW52ZW50YXRpLm9yZwAKCRC/XN9N9r9mgnnAAQCnKxEMD0IQV02Y1+GQaXhcviBh
BxzbHvDczdssFl/R8gEAwOzNusBGZfcpqjwZABqHXEPbR8eIgoJkbHGlw27D7wM=
=qXef
-----END PGP SIGNATURE-----

J
(address . 78332@debbugs.gnu.org)
86d63991d7a8dc9fa350a1735b708ee46fc0aec9@dismail.de
I support.

--
jgart
J
J
Janneke Nieuwenhuizen wrote on 27 Jun 00:13 -0700
(name . Steve George)(address . steve@futurile.net)
87sejly7vq.fsf@gnu.org
Steve George writes:

Toggle quote (5 lines)
> After a good long discussion I'm moving GCD005 to Deliberation.

> This means that team members have 14 days to send one of the following
> replies on the patch-tracking entry of the GCD:

I support.

Greetings,
Janneke

--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com| Avatar® https://AvatarAcademy.com
L
L
Ludovic Courtès wrote on 27 Jun 02:04 -0700
Re: bug#78332: [PATCH 1/1] 005-regular-releases: Initial draft of GCD005 'Regular and efficient releases'.
(name . Steve George)(address . steve@futurile.net)(address . 78332@debbugs.gnu.org)
87wm8xv9lt.fsf_-_@inria.fr
Steve George <steve@futurile.net> writes:

Toggle quote (6 lines)
> After a good long discussion I'm moving GCD005 to Deliberation.
>
> The final version is below and can be found on Codeberg:
>
> https://codeberg.org/guix/guix-consensus-documents/src/branch/main/005-regular-releases.md

I support.

Thank you!

Ludo’.
S
S
Sughosha wrote on 27 Jun 04:31 -0700
(no subject)
(address . 78332@debbugs.gnu.org)
5915213.DvuYhMxLoT@localhost.localdomain
I support it. Regular releases targetting its schedule helps in keeping
packages up to date as well as stable.
--
Sughosha
S
S
Simon Tournier wrote on 28 Jun 03:35 -0700
Re: [bug#78332] GCD005: Regular and efficient releases (consideration/decision)
(address . 78332@debbugs.gnu.org)
875xgg9ms0.fsf@gmail.com
Hi,

I accept.

Some of my concerns [1] are not fully resolved, from my point of view.

But hey that’s not a big deal since this GCD appears to me the right
direction – yeah thanks for moving forward! – and I’m convinced
everything will be incrementally improved by further concrete regular
releases. ;-)

Cheers,
simon

1: [bug#78332] GCD005: Regular and efficient releases
Simon Tournier <zimon.toutoune@gmail.com>
Thu, 12 Jun 2025 21:08:54 +0200
id:87y0tw22wp.fsf@gmail.com
V
V
Vinicius Monego wrote on 28 Jun 12:55 -0700
Re: GCD005: Regular and efficient releases (consideration/decision)
(address . 78332@debbugs.gnu.org)
5a87561e3742b378fd52dc78eaeb32d811d74d02.camel@posteo.net
Em seg, 2025-06-23 às 15:43 +0100, Steve George escreveu:
Toggle quote (25 lines)
> Hi all,
>
> After a good long discussion I'm moving GCD005 to Deliberation.
>
> The final version is below and can be found on Codeberg:
>
>    
> https://codeberg.org/guix/guix-consensus-documents/src/branch/main/005-regular-releases.md
>
> This means that team members have 14 days to send one of the
> following replies on the patch-tracking entry of the GCD:
>
> - “I support”, meaning that one supports the proposal;
> - “I accept”, meaning that one consents to the implementation of the
> proposal;
> - “I disapprove”, meaning that one opposes the implementation of the
> proposal.
>
> The Issue is:
>
>     78332@debbugs.gnu.org
>
>     https://issues.guix.gnu.org/78332
>

I support.

Vinicius
E
E
Ekaitz Zarraga wrote on 28 Jun 13:28 -0700
(address . 78332@debbugs.gnu.org)
92b0cd7f-ce5d-409c-9cac-4567cdeb26fe@elenq.tech
On 2025-06-23 16:43, Steve George wrote:
Toggle quote (393 lines)
> Hi all,
>
> After a good long discussion I'm moving GCD005 to Deliberation.
>
> The final version is below and can be found on Codeberg:
>
> https://codeberg.org/guix/guix-consensus-documents/src/branch/main/005-regular-releases.md
>
> This means that team members have 14 days to send one of the following replies on the patch-tracking entry of the GCD:
>
> - “I support”, meaning that one supports the proposal;
> - “I accept”, meaning that one consents to the implementation of the proposal;
> - “I disapprove”, meaning that one opposes the implementation of the proposal.
>
> The Issue is:
>
> 78332@debbugs.gnu.org
>
> https://issues.guix.gnu.org/78332
>
> In terms of next steps beyond the GCD, Efraim has said he's willing to be the next Release Manager, and both myself and Andreas have committed to help out - I'm sure there will be others!
>
> Thanks so much!
>
> Steve / Futurile
>
>
> title: Regular and efficient releases
> id: 005
> status: submitted
> discussion: https://issues.guix.gnu.org/78332
> authors: Steve George
> sponsors: Andreas Enge, Ludovic Courtès, Efraim Flashner
> date-submitted: 2025-05-21
> SPDX-License-Identifier: CC-BY-SA-4.0 OR GFDL-1.3-no-invariants-or-later
> ---
>
> # Summary
>
> Guix doesn't have a regular release cycle which has led to infrequent new
> releases. Sporadic releases are detrimental for our users, contributors and
> the project. This GCD proposes we implement an annual release cadence and
> simplify the release process to make releases easier.
>
> The project currently releases new versions of Guix on an ad hoc frequency.
> The 1.4.0 release happened in December 2022 [^1], which is almost 2.5 years
> ago, at the time of writing.
>
> The weaknesses in this release strategy are:
>
> 1. No clarity on when the next Guix release is.
> 2. Releases are complex and toil for developers.
> 3. Rolling updates aren't suitable for all users.
>
> This GCD proposes the following combined solution for solving the challenges
> associated with #1. and #2. above:
>
> 1. Regular releases: switch to a time-based release of Guix every year.
> 2. Efficient releases: use *package sets* and *supported architectures* to
> reduce the scope of work required to create a Guix release. Create a
> rotating *Release Team* who will organise each release, with the goal of
> *automating releases* wherever possible.
>
> The benefits will be:
>
> 1. New installations of Guix will be better because installation media and
> manuals will be up to date. The version of Guix distributed through other
> GNU/Linux distributions will also be more recent.
> 2. Package installation will improve for all users. Packages will be ungrafted
> during each release cycle.
> 3. Package quality will improve for all users, because regular releases will
> provide a cadence for focusing on our quality.
> 4. A regular cadence for promoting the project to potential users. Helping us
> to inform more people about the benefits of using GNU Guix!
> 5. A regular release cycle is a rallying point for our contributors giving them a
> consistent calendar of when to focus on releases versus other hacking.
>
> This GCD doesn't attempt to address the challenge that rolling updates aren't
> suitable for all users (#3. above). Adding a slower-moving branch akin to
> Nix's stable could be an eventual goal [^2]. However, this GCD aims for a single
> achievable change by implementing regular releases which is a substantial change
> that would be a big improvement for our users.
>
>
> # Motivation
>
> Releases are important for any Free Software project because they update the
> user experience and are a focal point for excitement [^3]. Regular releases
> help us to improve the quality of our software by bringing focus, and
> exercising regular usage scenarios (e.g. testing the installer).
>
> The majority of distributions follow time-based releases, six months is a
> common cycle time. For further comparison see the research on the
> [release strategies of distributions](https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt)
> . A summary is:
>
> - NixOS: releases every six months (May/November), both rolling release and
> slower stable branch.
> - OpenSUSE: rolling release, slow-roll release and fixed releases.
> - Ubuntu: every six months, with 9 months maintenance. LTS releases every
> 2 years.
> - Debian: Every 2 years (not time fixed), with about 4-5 months of package
> updates freeze before the release while bugs are ironed out.
>
> As a rolling release Guix immediately provides the latest improvements to
> users. Consequently, it could be argued that releases are unnecessary.
> However, they provide a focal point for the project to undertake additional
> testing and stabilisation across the repository. They also ensure we update
> installation media, documentation, themes and web site.
>
> A specific issue caused by irregular releases is that new users/installs may
> have a poor initial user experience due to time-bombs which occur in obsolete
> packages and their test suites. People installing from a release tarball often
> find that important packages fail to build, making their initial attempts to use
> Guix unnecessarily hard. Old release artifacts also risk upstream sources
> disappearing and require the project to keep older substitutes on our servers.
>
> People using Guix installed on another GNU/Linux distribution often use the
> guix-daemon packaged by their distribution. This means that any daemon related
> changes, such as a change to substitute's compression algorithm or changing the
> substitute servers, only reach those users after their distributions have
> updated their packaged guix-daemon version. Downstream GNU/Linux distributions
> will only package new official releases from the project.
>
> Regular releases are also good for casual users because they provide an
> opportunity for us to promote new features and improvements. For prospective
> users promotional activity about the release means they are more likely to hear
> about capabilities that will attract them to experiment with Guix.
>
> Many desktop distributions release every six months to align with the major
> desktop environments (GNOME/KDE) who release two or three times a year. This is
> why Nix (May/November) and Ubuntu (April/October) align their releases.
>
> Since Guix is used [extensively as a desktop](https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-1/)
> it would make sense to align with these upstream releases. However, given that
> Guix is a volunteer project that doesn't have the practise of releasing it's
> unrealistic to move to two releases a year. Something along these lines could
> be a future goal [^4].
>
> This GCD proposes an annual release cycle, with releases **in June**.
>
> To move onto this cycle the first release would be a little later: aiming for
> the **November of 2025**, with a short cycle to release in June 2026.
>
>
> # Creating efficient releases
>
> To create efficient releases we need to focus efforts by defining the scope
> of work that the Release Team does.
>
> The result of the interaction between `package sets`, `architectures` and
> `release artifacts` is that the Release Team's QA and testing is reduced as
> follows:
>
> 1. Packages and services within the `package sets` must build on the `primary
> architectures`. Other packages are optional for a release.
> 2. Release artifacts are only made from packages within the `package sets` and
> on the `primary architectures`. Other architectures or release artifacts are
> optional for a release.
> 3. Testing and QA is on `package sets` on the `primary architectures` only. The
> Release Team has flexibility to choose their response to bugs and issues.
> 4. Testing is prioritied towards the installation of Guix System and Guix (on a
> foreign distribution) using the `release artifacts`. Practically, this means
> testing Guix System installs using the ISO image and QCOW2 image; and that
> Guix installs on a foreign distribution using the binary installer.
> 5. Each successive Release Team will look for ways to **automate releases**
> which may enable more efficient releases and alterations in the scope.
>
>
> ## Package Sets
>
> There are currently over 30,000 packages in the archive, it's unrealistic for
> all packages to receive the same amount of QA effort for a release.
>
> Many other distributions focus attention on the critical parts of their
> repository by identifying those packages that are required for a particular
> use-case. For example, Arch Linux limits their efforts to a specific
> repository (called "main"). Ubuntu identifies various seeds for specific
> use-cases which determines their maintained packages; other packages outside
> these sets do not receive security updates.
>
> Guix is both a package manager that can be hosted on other GNU/Linux
> distributions, and a GNU/Linux distribution itself. Limiting the range of
> packages and services that receive attention is consequently more complicated.
> Guix already has manifests to track which packages are used by
> [Guix System's installer](https://git.savannah.gnu.org/cgit/guix.git/tree/etc/manifests/release.scm)
> , so this proposal extends that concept.
>
> For this proposal each successive Release Team would identify key packages which
> would receive the most Quality Assurance (QA) attention in that release.
>
> The package sets would be:
>
> * Required packages: packages required to boot and install a minimal Guix System
> or install Guix on a foreign distribution. This only includes default
> options **required** by the installer which **must** work for a release since
> they are part of the default installer path. For example, this would include
> the guix daemon, kernels, boot loaders, file-systems and minimal utilities.
> * Desktop packages: additional desktop environments and other options from
> the installer. This includes packages that are part of the installer
> (but not default) and other popular options as chosen by the Release Team.
> Packages **should** work, but they may receive less QA attention from the
> Release Team than %system_packages.
> * Important packages: important packages that anyone may wish to install on Guix and
> consequently the project wants to maintain substitutes for. This may include
> important toolchains, runtimes and utilities. The Release Team **may**
> perform QA on these packages.
>
> Guix would still make all packages and services part of a release (the entire
> archive). Guix teams would be asked to test the parts of the archive that they
> look after. But, only Release Critical bugs in the `package sets` could block
> a release.
>
> The Release Team may identify other package sets as needed.
>
> Packages within the `packages sets` must build on the primary architectures
> (see definition lower). As part of the release's QA contributors would be asked
> to test these packages.
>
> Where a significant issue is found within a package or service that's part of
> a `package set` the Release Team would work to resolve the problem. This could
> involve (but isn't limited to) fixing the underlying issue, documenting it as
> a limitation in the release notes or promoting an alternative and deprecating
> the broken package using the Deprecation Policy. As always, packages may be
> un-deprecated and returned to the archive at a later date.
>
> Given the constraints on developers the overal aim of the `package sets` would
> be for them to be as small a set of packages and services as reasonably possible.
> It would mean that developers could focus on the critical packages and services
> during a release. As an example, this would mean that a major issue in the
> Linux kernel could block a release, but not an issue in a game.
>
>
> ## Platforms and Architecture tiers
>
> Guix is built and maintained on multiple different architectures, and two
> kernels (Linux, GNU Hurd). As the goal of the project is to maximise user
> freedom this variety is significant and is a key motivator for developers.
>
> However, with limited resources (developer and CI) we want to make it as
> efficient as possible to create a release. The more toil involved in a release
> the less likely developers are to work on it.
>
> The [2025 Guix User Survey](https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-2/)
> showed that 98% of users were on x86_64 and 19% on AArch64. Consequently, the
> proposal is the following tiers:
>
> - Primary architectures:
> - Architectures: x86_64, AArch64
> - Kernel: Linux
> - Coverage: all packages and services that are not explicitly platform
> specific must work to be included in the archive.
> - Package status: package updates should build for this architecture. If a
> package update is broken it must not be pushed to users (e.g. master).
>
> - Alternative architectures
> - Architectures: all others
> - Kernel: Linux, Hurd
> - Coverage: all packages and services that are not explicitly platform
> specific may build
> - Package status: package updates should work for this architecture.
> Updates that do not build for this architecure, but do build for a primary
> architecture may be pushed to users.
>
> Packages or services that do not build for the Primary architectures as part of
> a release would be removed from the archive using Guix's deprecation policy.
>
>
> ## Release artifacts
>
> Using the primary architecture tier and the package sets would involve creating
> the following release artifacts:
>
> - GNU Guix System ISO image
> - GNU Guix System QCOW2 image
> - GNU Guix binary installer
> - GNU Guix source tarball (as produced by `make dist`)
>
> The Release Team should co-ordinate with any downstream GNU/Linux distributions
> that packages Guix to assist them to make the new release part of their
> distribution.
>
> Again in an effort to reduce developer toil, additional release artifacts could
> be created but would not be part of the formal release testing and errors would
> not block a release.
>
>
> # Release team and project
>
> A regular release cycle should galvanise all Guix developers to work on our
> releases. But, to ensure there are sufficient people involved a call will be
> put out to create a specific release team for each release project. We would
> expect the final release team to be around four-six members. The release team
> will work together to fix issues and test the various release artifacts. The
> expectation is that the release projects will be as short as possible, around
> a 12 week commitment with each team member having a few hours a week to take
> part.
>
> The project would like to achieve releases with the minimum amount of effort
> by developers. Consequently, a goal for each Release Team is to find ways to
> **automate releases** reducing the toil of successive releases.
>
> To manage the release it's proposed that each release will have a Release Manager
> role. The role of the Release Manager is to:
>
> - co-ordinate the release project
> - communicate with the release team and wider developers status and release
> critical bugs
> - arbitrate changes to release blocking bugs, package sets and release
> artifacts
> - influence and assist teams to resolve problems
> - define the release artifacts and create them
> - encourage and excite **everyone to create and test the release**
>
> The Release Manager role is likely to require the most effort, so it will be
> rotated and consist of two people from the release team. For each release
> there would be a primary person and a secondary person in the role. The
> primary person is new to the role. The secondary person has previously done it
> and is mentoring the new person. The impact of this is that each new release
> manager is agreeing to take responsibility during two release cycles.
> This system is modelled on the [Nix release management](https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt/nix-release-mgmt.md)
> approach.
>
> One of the release team will take on the role of Release Advocate [^5]. They
> will take responsibility for preparing the release announcement and
> coordinating the creation of content to promote the new release (e.g. web site)
> This role can be done by any member of the Guix community who has sufficient
> interest.
>
> The final release team is:
>
> - a new Release Manager
> - a returning Release Manager
> - up to 4 other members, one of whom acts as the Release Advocate
>
> The Release Managers of each release will create and communicate a release
> project plan setting out the stages and dates for each stage. To try and
> galvanise the Guix development team to focus on the release it's envisioned
> that a release project will be about 12 weeks. See Appendix 1: Release Project
> Template for an example.
>
> In order to improve knowledge transfer and reduce the toil of doing releases
> the Release Managers for a release will document the release process. There is
> inspiration for this in [NixOS's release wiki](https://nixos.github.io/release-wiki/Home.html)
> and we already have detailed [release documentation](https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/doc/release.org)
> .
>
>
> # Cost of Reverting
>
> If regular releases were not successful then the project would switch back to
> irregular releases. There would be no impact for exiting users as they will
> be tracking the rolling release's master branch.
>
> If the project is able to successfully undertake regular releases then over
> time it may be possible to undertake full releases every six months or some
> other release cadence.
>
>
> # Drawbacks and open issues
>
> There's no particular drawback to attempting regular release. It should be
> noted that the project is entirely dependent on volunteers so it may be that
> contributors don't have enough time available to achieve regular releases. If
> that's the case we would revert back to irregular releases.
>
> Appendix 1: Release Project Template sets out a proposed time-line and major
> steps to be undertaken by the project to release a new version of Guix. It
> proposes freezing master while the team focuses on releasing the new version
> of Guix. Specifically, a major updates freeze (week 8->12), and a hard freeze
> (week 10->12). The drawback of this approach is that it would slow the
> velocity of changes. During this period contributors would have to keep
> updates on team branches, or use an alternative temporary branch. Each Release
> Team will iterate and improve the release process, so it's possible that this
> freeze period will be reduced, changed, or removed over successive releases.
>
> There are various improvements that could be made to the release strategy over
> time, such as:
>
> 1. Create separate releases of the Guix source necessary for installing Guix
> on a foreign distribution. This would mean that downstream GNU/Linux
> distributions that package Guix could have new release more often.
> 2. Adding an additional slower release cadence. This could be either a security
> and critical fixes branch strategy, such as implemented by Nix. Or it could
> be a slightly slower moving branch, such as implemented by SUSE SlowRoll [^4].
>
>
> # Appendix 1: Release Project Template
>
> To show the major steps of a release this release project template is a starting
> point. After each successive release the Release Team will undertake a
> retrospective and will document improvements that can be made to the release
> process and areas to automate to impr
This message was truncated. Download the full message here.
J
J
Jelle Licht wrote on 29 Jun 02:15 -0700
(address . 78332@debbugs.gnu.org)
87plemucwi.fsf@fsfe.org
Steve George <steve@futurile.net> writes:

Toggle quote (394 lines)
> Hi all,
>
> After a good long discussion I'm moving GCD005 to Deliberation.
>
> The final version is below and can be found on Codeberg:
>
> https://codeberg.org/guix/guix-consensus-documents/src/branch/main/005-regular-releases.md
>
> This means that team members have 14 days to send one of the following replies on the patch-tracking entry of the GCD:
>
> - “I support”, meaning that one supports the proposal;
> - “I accept”, meaning that one consents to the implementation of the proposal;
> - “I disapprove”, meaning that one opposes the implementation of the proposal.
>
> The Issue is:
>
> 78332@debbugs.gnu.org
>
> https://issues.guix.gnu.org/78332
>
> In terms of next steps beyond the GCD, Efraim has said he's willing to be the next Release Manager, and both myself and Andreas have committed to help out - I'm sure there will be others!
>
> Thanks so much!
>
> Steve / Futurile
> title: Regular and efficient releases
> id: 005
> status: submitted
> discussion: https://issues.guix.gnu.org/78332
> authors: Steve George
> sponsors: Andreas Enge, Ludovic Courtès, Efraim Flashner
> date-submitted: 2025-05-21
> SPDX-License-Identifier: CC-BY-SA-4.0 OR GFDL-1.3-no-invariants-or-later
> ---
>
> # Summary
>
> Guix doesn't have a regular release cycle which has led to infrequent new
> releases. Sporadic releases are detrimental for our users, contributors and
> the project. This GCD proposes we implement an annual release cadence and
> simplify the release process to make releases easier.
>
> The project currently releases new versions of Guix on an ad hoc frequency.
> The 1.4.0 release happened in December 2022 [^1], which is almost 2.5 years
> ago, at the time of writing.
>
> The weaknesses in this release strategy are:
>
> 1. No clarity on when the next Guix release is.
> 2. Releases are complex and toil for developers.
> 3. Rolling updates aren't suitable for all users.
>
> This GCD proposes the following combined solution for solving the challenges
> associated with #1. and #2. above:
>
> 1. Regular releases: switch to a time-based release of Guix every year.
> 2. Efficient releases: use *package sets* and *supported architectures* to
> reduce the scope of work required to create a Guix release. Create a
> rotating *Release Team* who will organise each release, with the goal of
> *automating releases* wherever possible.
>
> The benefits will be:
>
> 1. New installations of Guix will be better because installation media and
> manuals will be up to date. The version of Guix distributed through other
> GNU/Linux distributions will also be more recent.
> 2. Package installation will improve for all users. Packages will be ungrafted
> during each release cycle.
> 3. Package quality will improve for all users, because regular releases will
> provide a cadence for focusing on our quality.
> 4. A regular cadence for promoting the project to potential users. Helping us
> to inform more people about the benefits of using GNU Guix!
> 5. A regular release cycle is a rallying point for our contributors giving them a
> consistent calendar of when to focus on releases versus other hacking.
>
> This GCD doesn't attempt to address the challenge that rolling updates aren't
> suitable for all users (#3. above). Adding a slower-moving branch akin to
> Nix's stable could be an eventual goal [^2]. However, this GCD aims for a single
> achievable change by implementing regular releases which is a substantial change
> that would be a big improvement for our users.
>
>
> # Motivation
>
> Releases are important for any Free Software project because they update the
> user experience and are a focal point for excitement [^3]. Regular releases
> help us to improve the quality of our software by bringing focus, and
> exercising regular usage scenarios (e.g. testing the installer).
>
> The majority of distributions follow time-based releases, six months is a
> common cycle time. For further comparison see the research on the
> [release strategies of distributions](https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt)
> . A summary is:
>
> - NixOS: releases every six months (May/November), both rolling release and
> slower stable branch.
> - OpenSUSE: rolling release, slow-roll release and fixed releases.
> - Ubuntu: every six months, with 9 months maintenance. LTS releases every
> 2 years.
> - Debian: Every 2 years (not time fixed), with about 4-5 months of package
> updates freeze before the release while bugs are ironed out.
>
> As a rolling release Guix immediately provides the latest improvements to
> users. Consequently, it could be argued that releases are unnecessary.
> However, they provide a focal point for the project to undertake additional
> testing and stabilisation across the repository. They also ensure we update
> installation media, documentation, themes and web site.
>
> A specific issue caused by irregular releases is that new users/installs may
> have a poor initial user experience due to time-bombs which occur in obsolete
> packages and their test suites. People installing from a release tarball often
> find that important packages fail to build, making their initial attempts to use
> Guix unnecessarily hard. Old release artifacts also risk upstream sources
> disappearing and require the project to keep older substitutes on our servers.
>
> People using Guix installed on another GNU/Linux distribution often use the
> guix-daemon packaged by their distribution. This means that any daemon related
> changes, such as a change to substitute's compression algorithm or changing the
> substitute servers, only reach those users after their distributions have
> updated their packaged guix-daemon version. Downstream GNU/Linux distributions
> will only package new official releases from the project.
>
> Regular releases are also good for casual users because they provide an
> opportunity for us to promote new features and improvements. For prospective
> users promotional activity about the release means they are more likely to hear
> about capabilities that will attract them to experiment with Guix.
>
> Many desktop distributions release every six months to align with the major
> desktop environments (GNOME/KDE) who release two or three times a year. This is
> why Nix (May/November) and Ubuntu (April/October) align their releases.
>
> Since Guix is used [extensively as a desktop](https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-1/)
> it would make sense to align with these upstream releases. However, given that
> Guix is a volunteer project that doesn't have the practise of releasing it's
> unrealistic to move to two releases a year. Something along these lines could
> be a future goal [^4].
>
> This GCD proposes an annual release cycle, with releases **in June**.
>
> To move onto this cycle the first release would be a little later: aiming for
> the **November of 2025**, with a short cycle to release in June 2026.
>
>
> # Creating efficient releases
>
> To create efficient releases we need to focus efforts by defining the scope
> of work that the Release Team does.
>
> The result of the interaction between `package sets`, `architectures` and
> `release artifacts` is that the Release Team's QA and testing is reduced as
> follows:
>
> 1. Packages and services within the `package sets` must build on the `primary
> architectures`. Other packages are optional for a release.
> 2. Release artifacts are only made from packages within the `package sets` and
> on the `primary architectures`. Other architectures or release artifacts are
> optional for a release.
> 3. Testing and QA is on `package sets` on the `primary architectures` only. The
> Release Team has flexibility to choose their response to bugs and issues.
> 4. Testing is prioritied towards the installation of Guix System and Guix (on a
> foreign distribution) using the `release artifacts`. Practically, this means
> testing Guix System installs using the ISO image and QCOW2 image; and that
> Guix installs on a foreign distribution using the binary installer.
> 5. Each successive Release Team will look for ways to **automate releases**
> which may enable more efficient releases and alterations in the scope.
>
>
> ## Package Sets
>
> There are currently over 30,000 packages in the archive, it's unrealistic for
> all packages to receive the same amount of QA effort for a release.
>
> Many other distributions focus attention on the critical parts of their
> repository by identifying those packages that are required for a particular
> use-case. For example, Arch Linux limits their efforts to a specific
> repository (called "main"). Ubuntu identifies various seeds for specific
> use-cases which determines their maintained packages; other packages outside
> these sets do not receive security updates.
>
> Guix is both a package manager that can be hosted on other GNU/Linux
> distributions, and a GNU/Linux distribution itself. Limiting the range of
> packages and services that receive attention is consequently more complicated.
> Guix already has manifests to track which packages are used by
> [Guix System's installer](https://git.savannah.gnu.org/cgit/guix.git/tree/etc/manifests/release.scm)
> , so this proposal extends that concept.
>
> For this proposal each successive Release Team would identify key packages which
> would receive the most Quality Assurance (QA) attention in that release.
>
> The package sets would be:
>
> * Required packages: packages required to boot and install a minimal Guix System
> or install Guix on a foreign distribution. This only includes default
> options **required** by the installer which **must** work for a release since
> they are part of the default installer path. For example, this would include
> the guix daemon, kernels, boot loaders, file-systems and minimal utilities.
> * Desktop packages: additional desktop environments and other options from
> the installer. This includes packages that are part of the installer
> (but not default) and other popular options as chosen by the Release Team.
> Packages **should** work, but they may receive less QA attention from the
> Release Team than %system_packages.
> * Important packages: important packages that anyone may wish to install on Guix and
> consequently the project wants to maintain substitutes for. This may include
> important toolchains, runtimes and utilities. The Release Team **may**
> perform QA on these packages.
>
> Guix would still make all packages and services part of a release (the entire
> archive). Guix teams would be asked to test the parts of the archive that they
> look after. But, only Release Critical bugs in the `package sets` could block
> a release.
>
> The Release Team may identify other package sets as needed.
>
> Packages within the `packages sets` must build on the primary architectures
> (see definition lower). As part of the release's QA contributors would be asked
> to test these packages.
>
> Where a significant issue is found within a package or service that's part of
> a `package set` the Release Team would work to resolve the problem. This could
> involve (but isn't limited to) fixing the underlying issue, documenting it as
> a limitation in the release notes or promoting an alternative and deprecating
> the broken package using the Deprecation Policy. As always, packages may be
> un-deprecated and returned to the archive at a later date.
>
> Given the constraints on developers the overal aim of the `package sets` would
> be for them to be as small a set of packages and services as reasonably possible.
> It would mean that developers could focus on the critical packages and services
> during a release. As an example, this would mean that a major issue in the
> Linux kernel could block a release, but not an issue in a game.
>
>
> ## Platforms and Architecture tiers
>
> Guix is built and maintained on multiple different architectures, and two
> kernels (Linux, GNU Hurd). As the goal of the project is to maximise user
> freedom this variety is significant and is a key motivator for developers.
>
> However, with limited resources (developer and CI) we want to make it as
> efficient as possible to create a release. The more toil involved in a release
> the less likely developers are to work on it.
>
> The [2025 Guix User Survey](https://guix.gnu.org/en/blog/2025/guix-user-and-contributor-survey-2024-the-results-part-2/)
> showed that 98% of users were on x86_64 and 19% on AArch64. Consequently, the
> proposal is the following tiers:
>
> - Primary architectures:
> - Architectures: x86_64, AArch64
> - Kernel: Linux
> - Coverage: all packages and services that are not explicitly platform
> specific must work to be included in the archive.
> - Package status: package updates should build for this architecture. If a
> package update is broken it must not be pushed to users (e.g. master).
>
> - Alternative architectures
> - Architectures: all others
> - Kernel: Linux, Hurd
> - Coverage: all packages and services that are not explicitly platform
> specific may build
> - Package status: package updates should work for this architecture.
> Updates that do not build for this architecure, but do build for a primary
> architecture may be pushed to users.
>
> Packages or services that do not build for the Primary architectures as part of
> a release would be removed from the archive using Guix's deprecation policy.
>
>
> ## Release artifacts
>
> Using the primary architecture tier and the package sets would involve creating
> the following release artifacts:
>
> - GNU Guix System ISO image
> - GNU Guix System QCOW2 image
> - GNU Guix binary installer
> - GNU Guix source tarball (as produced by `make dist`)
>
> The Release Team should co-ordinate with any downstream GNU/Linux distributions
> that packages Guix to assist them to make the new release part of their
> distribution.
>
> Again in an effort to reduce developer toil, additional release artifacts could
> be created but would not be part of the formal release testing and errors would
> not block a release.
>
>
> # Release team and project
>
> A regular release cycle should galvanise all Guix developers to work on our
> releases. But, to ensure there are sufficient people involved a call will be
> put out to create a specific release team for each release project. We would
> expect the final release team to be around four-six members. The release team
> will work together to fix issues and test the various release artifacts. The
> expectation is that the release projects will be as short as possible, around
> a 12 week commitment with each team member having a few hours a week to take
> part.
>
> The project would like to achieve releases with the minimum amount of effort
> by developers. Consequently, a goal for each Release Team is to find ways to
> **automate releases** reducing the toil of successive releases.
>
> To manage the release it's proposed that each release will have a Release Manager
> role. The role of the Release Manager is to:
>
> - co-ordinate the release project
> - communicate with the release team and wider developers status and release
> critical bugs
> - arbitrate changes to release blocking bugs, package sets and release
> artifacts
> - influence and assist teams to resolve problems
> - define the release artifacts and create them
> - encourage and excite **everyone to create and test the release**
>
> The Release Manager role is likely to require the most effort, so it will be
> rotated and consist of two people from the release team. For each release
> there would be a primary person and a secondary person in the role. The
> primary person is new to the role. The secondary person has previously done it
> and is mentoring the new person. The impact of this is that each new release
> manager is agreeing to take responsibility during two release cycles.
> This system is modelled on the [Nix release management](https://codeberg.org/futurile/guix-org/src/branch/master/release-mgmt/nix-release-mgmt.md)
> approach.
>
> One of the release team will take on the role of Release Advocate [^5]. They
> will take responsibility for preparing the release announcement and
> coordinating the creation of content to promote the new release (e.g. web site)
> This role can be done by any member of the Guix community who has sufficient
> interest.
>
> The final release team is:
>
> - a new Release Manager
> - a returning Release Manager
> - up to 4 other members, one of whom acts as the Release Advocate
>
> The Release Managers of each release will create and communicate a release
> project plan setting out the stages and dates for each stage. To try and
> galvanise the Guix development team to focus on the release it's envisioned
> that a release project will be about 12 weeks. See Appendix 1: Release Project
> Template for an example.
>
> In order to improve knowledge transfer and reduce the toil of doing releases
> the Release Managers for a release will document the release process. There is
> inspiration for this in [NixOS's release wiki](https://nixos.github.io/release-wiki/Home.html)
> and we already have detailed [release documentation](https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/doc/release.org)
> .
>
>
> # Cost of Reverting
>
> If regular releases were not successful then the project would switch back to
> irregular releases. There would be no impact for exiting users as they will
> be tracking the rolling release's master branch.
>
> If the project is able to successfully undertake regular releases then over
> time it may be possible to undertake full releases every six months or some
> other release cadence.
>
>
> # Drawbacks and open issues
>
> There's no particular drawback to attempting regular release. It should be
> noted that the project is entirely dependent on volunteers so it may be that
> contributors don't have enough time available to achieve regular releases. If
> that's the case we would revert back to irregular releases.
>
> Appendix 1: Release Project Template sets out a proposed time-line and major
> steps to be undertaken by the project to release a new version of Guix. It
> proposes freezing master while the team focuses on releasing the new version
> of Guix. Specifically, a major updates freeze (week 8->12), and a hard freeze
> (week 10->12). The drawback of this approach is that it would slow the
> velocity of changes. During this period contributors would have to keep
> updates on team branches, or use an alternative temporary branch. Each Release
> Team will iterate and improve the release process, so it's possible that this
> freeze period will be reduced, changed, or removed over successive releases.
>
> There are various improvements that could be made to the release strategy over
> time, such as:
>
> 1. Create separate releases of the Guix source necessary for installing Guix
> on a foreign distribution. This would mean that downstream GNU/Linux
> distributions that package Guix could have new release more often.
> 2. Adding an additional slower release cadence. This could be either a security
> and critical fixes branch strategy, such as implemented by Nix. Or it could
> be a slightly slower moving branch, such as implemented by SUSE SlowRoll [^4].
>
>
> # Appendix 1: Release Project Template
>
> To show the major steps of a release this release project template is a starting
> point. After each successive release the Release Team will undertake a
> retrospective and will document improvements that can be made to the release
> process and areas to automate to improve efficiency.
>
> The aim in this template is for a 12 week active release project, with the first
> one using 16 weeks in total to give tea
This message was truncated. Download the full message here.
C
C
Christopher Baines wrote on 29 Jun 10:34 -0700
(name . Steve George)(address . steve@futurile.net)
87qzz24fk6.fsf@cbaines.net
Steve George <steve@futurile.net> writes:

Toggle quote (12 lines)
> After a good long discussion I'm moving GCD005 to Deliberation.
>
> The final version is below and can be found on Codeberg:
>
> https://codeberg.org/guix/guix-consensus-documents/src/branch/main/005-regular-releases.md
>
> This means that team members have 14 days to send one of the following replies on the patch-tracking entry of the GCD:
>
> - “I support”, meaning that one supports the proposal;
> - “I accept”, meaning that one consents to the implementation of the proposal;
> - “I disapprove”, meaning that one opposes the implementation of the proposal.

I support.
-----BEGIN PGP SIGNATURE-----

iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAmhheTlfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh
aW5lcy5uZXQACgkQXiijOwuE9XcgNxAAkYB3DI6uE/HowpaaRGVrk8P9EECtgjQu
QIlygikSAmamJH2R47H0k52i551GhlUg0uorBvIU7E19ngDt1FW9r9t5Zhv9TVAO
Ht77sK6xaVSbKBGWxreefWD+LAn4I0PM3Fhr8P/fWm5Yu3cbbVJLzuhzi7RDi7EX
ZiPz/YzENcHwtGr544ATmpDFKSrfKcVeSvU91F1XEpEbBSVKSsAVuRJjyQzXNfcf
6IJycJaKpwCPU0odhSNC30o1YvFA3MDXWoyRyysNODodhx7Tkww6YTVS/3eEZGND
FIwVgUalxPf8sUR6vcq5nAORYEREn4OTTegQ014agF2nskL98COGvcEjsz/UgWCa
Xi9f0umfiZ8QH+CE1D93EQG4A1nAvZIPuFKQ8wi5SD8wDNwGQ2MdprKbH76Y0tj7
ODXGIyeKZtOPLEE9WhJRQYdzJ4gOaMopWmvxULC5/R7TpyWw2mb76H9uzsU+5B+5
BHEePIAogVhF+3KlujTfjof2XT1AazeODABkNXSEwo3+Mp/HfvT0VKQ1ef+IrZX9
F8n7U4bpPnOfTueXgmRmE7s7wiwVqFc0gGOQraYWzq5TpqOrHdltfCnhojwH3onL
vCOX0BReS6Rdtc/s15lDzV4F0oRo4CUv7d2Vx3RHKQiBMKmFGVqsXLUa38TF0mh+
5lwGbrZffts=
=eOGt
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 30 Jun 06:18 -0700
Re: [bug#78332] GCD005: Regular and efficient releases (submitted)
(name . Greg Hogan)(address . code@greghogan.com)
87zfdppdua.fsf@gnu.org
Hi Greg,

Greg Hogan <code@greghogan.com> writes:

Toggle quote (9 lines)
> My opinions on the project release cadence are of no greater
> consequence than the update frequency or inclusion of any individual
> package by a contributor or team. Most of this GCD can simply be
> merged into the project documentation, which can then be updated with
> a new commit rather than requiring a new GCD. By codifying an annual
> release process we actually restrict the number of releases! And what
> if the June deadline is missed? If these are mere guidelines then what
> are we voting on?

We’re deliberating on a release process.

And I think that’s no small feat. Previously, releases were handled by
long-time contributors; some of the process is documented but most of it
is insider knowledge. Overall it was arguably not very legible,
particularly the “when” and the “what”.

I believe this GCD clarifies all this, meaning that contributors more
clearly know what to expect and how to contribute.

Thanks,
Ludo’.
G
G
Greg Hogan wrote on 30 Jun 08:37 -0700
(name . Ludovic Courtès)(address . ludo@gnu.org)
CA+3U0ZmB5ArHMqy_UVZ5SUH0uFK-R0KbkrtA-k+uQggU8ZtrgQ@mail.gmail.com
On Mon, Jun 30, 2025 at 9:33 AM Ludovic Courtès <ludo@gnu.org> wrote:
Toggle quote (27 lines)
>
> Hi Greg,
>
> Greg Hogan <code@greghogan.com> writes:
>
> > My opinions on the project release cadence are of no greater
> > consequence than the update frequency or inclusion of any individual
> > package by a contributor or team. Most of this GCD can simply be
> > merged into the project documentation, which can then be updated with
> > a new commit rather than requiring a new GCD. By codifying an annual
> > release process we actually restrict the number of releases! And what
> > if the June deadline is missed? If these are mere guidelines then what
> > are we voting on?
>
> We’re deliberating on a release process.
>
> And I think that’s no small feat. Previously, releases were handled by
> long-time contributors; some of the process is documented but most of it
> is insider knowledge. Overall it was arguably not very legible,
> particularly the “when” and the “what”.
>
> I believe this GCD clarifies all this, meaning that contributors more
> clearly know what to expect and how to contribute.
>
> Thanks,
> Ludo’.

Hi Ludo',

I would have argued for keeping GCDs focused on significant project
changes as outlined in GCD 001, but I can appreciate the desire to
also use the visibility of the GCD process to discuss other important
processes and documentation updates. Since non-significant changes do
not require a new GCD, we can adjust and improve upon the ideas from
GCD 005 without necessarily going through this process again.

Greg
G
G
Greg Hogan wrote on 30 Jun 08:38 -0700
Re: GCD005: Regular and efficient releases (consideration/decision)
(name . Steve George)(address . steve@futurile.net)
CA+3U0Z=7VQ19R_TmsUyYOb865hh_qhKwN+nGKpNJ=pwqHfXdqw@mail.gmail.com
On Mon, Jun 23, 2025 at 10:44 AM Steve George <steve@futurile.net> wrote:
Toggle quote (9 lines)
>
> Hi all,
>
> After a good long discussion I'm moving GCD005 to Deliberation.
>
> The final version is below and can be found on Codeberg:
>
> https://codeberg.org/guix/guix-consensus-documents/src/branch/main/005-regular-releases.md

I support.
S
S
Steve George wrote on 1 Jul 05:22 -0700
Re: [bug#78332] GCD005: Regular and efficient releases (submitted)
(name . Greg Hogan)(address . code@greghogan.com)
argaqqax7ml37ewaz5a45lvjyjyaczpu5kjn6wj2xvoovtlqtr@4ehmg673jw6k
Hi,

Thank-you Greg, appreciate your consideration and flexibility.

Steve / Futurile

On Mon, Jun 30, 2025 at 11:37:15AM -0400, Greg Hogan wrote:
Toggle quote (38 lines)
> On Mon, Jun 30, 2025 at 9:33 AM Ludovic Courtès <ludo@gnu.org> wrote:
> >
> > Hi Greg,
> >
> > Greg Hogan <code@greghogan.com> writes:
> >
> > > My opinions on the project release cadence are of no greater
> > > consequence than the update frequency or inclusion of any individual
> > > package by a contributor or team. Most of this GCD can simply be
> > > merged into the project documentation, which can then be updated with
> > > a new commit rather than requiring a new GCD. By codifying an annual
> > > release process we actually restrict the number of releases! And what
> > > if the June deadline is missed? If these are mere guidelines then what
> > > are we voting on?
> >
> > We’re deliberating on a release process.
> >
> > And I think that’s no small feat. Previously, releases were handled by
> > long-time contributors; some of the process is documented but most of it
> > is insider knowledge. Overall it was arguably not very legible,
> > particularly the “when” and the “what”.
> >
> > I believe this GCD clarifies all this, meaning that contributors more
> > clearly know what to expect and how to contribute.
> >
> > Thanks,
> > Ludo’.
>
> Hi Ludo',
>
> I would have argued for keeping GCDs focused on significant project
> changes as outlined in GCD 001, but I can appreciate the desire to
> also use the visibility of the GCD process to discuss other important
> processes and documentation updates. Since non-significant changes do
> not require a new GCD, we can adjust and improve upon the ideas from
> GCD 005 without necessarily going through this process again.
>
> Greg
M
M
Maxim Cournoyer wrote on 2 Jul 19:58 -0700
[PATCH 1/1] 005-regular-releases: Initial draft of GCD005
(address . 78332@debbugs.gnu.org)
878ql6nfot.fsf@guixotic.coop
I support.
H
H
Hilton Chain wrote on 3 Jul 03:01 -0700
Re: GCD005: Regular and efficient releases (consideration/decision)
(address . guix-devel@gnu.org)
y765xg9egok.fsf@ultrarare.space
Steve George <steve@futurile.net> writes:

Toggle quote (29 lines)
> Hi all,
>
> After a good long discussion I'm moving GCD005 to Deliberation.
>
> The final version is below and can be found on Codeberg:
>
> https://codeberg.org/guix/guix-consensus-documents/src/branch/main/005-regular-releases.md
>
> This means that team members have 14 days to send one of the following replies on the patch-tracking entry of the GCD:
>
> - “I support”, meaning that one supports the proposal;
> - “I accept”, meaning that one consents to the implementation of the proposal;
> - “I disapprove”, meaning that one opposes the implementation of the proposal.
>
> The Issue is:
>
> 78332@debbugs.gnu.org
>
> https://issues.guix.gnu.org/78332
>
> In terms of next steps beyond the GCD, Efraim has said he's willing to
> be the next Release Manager, and both myself and Andreas have
> committed to help out - I'm sure there will be others!
>
> Thanks so much!
>
> Steve / Futurile


I support.
T
T
Tanguy Le Carrour wrote on 3 Jul 04:50 -0700
Re: Recording a decision on Guix GCD005
DB2EBTX0SOOU.294RIA9VGH6T6@bioneland.org
Hi Steve,


On Thu Jul 3, 2025 at 1:08 PM CEST, Steve George wrote:
Toggle quote (2 lines)
> Quick reminder that that the voting period for 'GCD005: Regular and efficient releases' ends on *Monday, 7th July*.

Thanks for the reminder!


Toggle quote (8 lines)
> I don't think you've voted yet, and if you'd like to do so there's just a few days to do so!
>
> To record your decision email 78332@debbugs.gnu.org
>
> - “I support”, meaning that one supports the proposal;
> - “I accept”, meaning that one consents to the implementation of the proposal;
> - “I disapprove”, meaning that one opposes the implementation of the proposal.

I support

--
Tanguy
M
M
Mathieu Othacehe wrote on 3 Jul 12:49 -0700
GCD005: Regular and efficient releases
(address . 78332@debbugs.gnu.org)
87qzyxdpgd.fsf@gnu.org
I support.

Mathieu
C
C
Cayetano Santos wrote on 4 Jul 04:10 -0700
Re: GCD005: Regular and efficient releases (consideration/decision)
(address . steve@futurile.net)(address . 78332@debbugs.gnu.org)
878ql46wjz.fsf@inventati.org
I support.

--
Cayetano Santos
.
gpg: CCB8 1842 F9D7 058E CD67 377A BF5C DF4D F6BF 6682
key: meta.sr.ht/~csantosb.pgp
-----BEGIN PGP SIGNATURE-----

iI0EARYKADUWIQTMuBhC+dcFjs1nN3q/XN9N9r9mggUCaGe2sBccY3NhbnRvc2JA
aW52ZW50YXRpLm9yZwAKCRC/XN9N9r9mgoaVAQDrmRaATnuwdINiahUQAfitcefE
2IhYfrRYwgYo4nE+/gEA6NM2eo0zx5zYW9tCJBZ/gF1SMYTSspAvuKSn1HlfbgA=
=ptRY
-----END PGP SIGNATURE-----

P
P
pelzflorian (Florian Pelz) wrote on 4 Jul 09:22 -0700
Re: [bug#78332] GCD005: Regular and efficient releases (consideration/decision)
(name . Steve George)(address . steve@futurile.net)(address . 78332@debbugs.gnu.org)
87ecuw0vv0.fsf@pelzflorian.de
Steve George <steve@futurile.net> writes :

Toggle quote (2 lines)
> Quick reminder that that the voting period for 'GCD005: Regular and

It is good that you sent a reminder and sought feedback before, although
I did not respond.



Toggle quote (5 lines)
> So the purpose of the GCD is that as a group we say "we want to do
> regular releases" and the impact is that we'll work together to do so:
> for those that don't want to work on a release the ask is not to do
> anything that makes creating a release more difficult.

Toggle quote (5 lines)
> In the past we've paid attention to having fresh translations in for a
> release; I don't see this covered here. Perhaps it's OK to be left as
> an orthogonal topic if we release often enough.


I support.

Regards,
Florian
A
A
André Batista wrote on 4 Jul 15:26 -0700
Re: GCD005: Regular and efficient releases (consideration/decision)
(name . Steve George)(address . steve@futurile.net)(address . 78332@debbugs.gnu.org)
aGhVIMDfMEHDGHgT@andel
seg 23 jun 2025 às 15:43:14 (1750704194), steve@futurile.net enviou:
Toggle quote (23 lines)
> Hi all,
>
> After a good long discussion I'm moving GCD005 to Deliberation.
>
> The final version is below and can be found on Codeberg:
>
> https://codeberg.org/guix/guix-consensus-documents/src/branch/main/005-regular-releases.md
>
> This means that team members have 14 days to send one of the following replies on the patch-tracking entry of the GCD:
>
> - “I support”, meaning that one supports the proposal;
> - “I accept”, meaning that one consents to the implementation of the proposal;
> - “I disapprove”, meaning that one opposes the implementation of the proposal.
>
> The Issue is:
>
> 78332@debbugs.gnu.org
>
> https://issues.guix.gnu.org/78332
>
> In terms of next steps beyond the GCD, Efraim has said he's willing to be the next Release Manager, and both myself and Andreas have committed to help out - I'm sure there will be others!
>

I accept.

I remain unconvinced that a GCD is the best way to move forward and
also that the long release process combined with a short release
cycle are is the way to go. However, I hope to be proven wrong and
will do what I can to help out.

Thanks for the initiative!
A
A
Adam Faiz wrote on 5 Jul 06:36 -0700
Re: GCD005 'Regular and efficient releases'
(address . 78332@debbugs.gnu.org)
3818EEE7-D3DA-4980-9CAD-740810435517@disroot.org
I support.
T
T
Tobias Geerinckx-Rice wrote on 6 Jul 12:58 -0700
Re: GCD005: Regular and efficient releases (consideration/decision)
(address . 78332@debbugs.gnu.org)
1094E94D-2005-4DC6-9A6F-05F3D862A743@tobias.gr
I support.
L
L
Leo Famulari wrote on 6 Jul 17:59 -0700
Re: [bug#78332] GCD005: Regular and efficient releases (consideration/decision)
(name . Steve George)(address . steve@futurile.net)
aGsb5Q1O0CJxpYCc@jasmine.lan
On Mon, Jun 23, 2025 at 03:43:14PM +0100, Steve George wrote:
Toggle quote (9 lines)
> title: Regular and efficient releases
> id: 005
> status: submitted
> discussion: https://issues.guix.gnu.org/78332
> authors: Steve George
> sponsors: Andreas Enge, Ludovic Court�s, Efraim Flashner
> date-submitted: 2025-05-21
> SPDX-License-Identifier: CC-BY-SA-4.0 OR GFDL-1.3-no-invariants-or-later

I support.
R
R
Ricardo Wurmus wrote on 6 Jul 23:36 -0700
Re: GCD005: Regular and efficient releases (consideration/decision)
(name . Steve George)(address . steve@futurile.net)(address . 78332@debbugs.gnu.org)
87h5zozev8.fsf@elephly.net
Steve George <steve@futurile.net> writes:

Toggle quote (15 lines)
> After a good long discussion I'm moving GCD005 to Deliberation.
>
> The final version is below and can be found on Codeberg:
>
> https://codeberg.org/guix/guix-consensus-documents/src/branch/main/005-regular-releases.md
>
> This means that team members have 14 days to send one of the
> following replies on the patch-tracking entry of the GCD:
>
> - “I support”, meaning that one supports the proposal;
> - “I accept”, meaning that one consents to the implementation of
> the proposal;
> - “I disapprove”, meaning that one opposes the implementation of
> the proposal.

I accept.

--
Ricardo
N
N
Nicolas Goaziou wrote on 7 Jul 01:53 -0700
Re: [bug#78332] GCD005: Regular and efficient releases (consideration/decision)
(address . 78332@debbugs.gnu.org)
878ql0qt53.fsf@nicolasgoaziou.fr
Hello,

I accept.

Regards,
--
Nicolas Goaziou
F
F
Fabio Natali wrote on 7 Jul 04:41 -0700
(address . 78332@debbugs.gnu.org)
87y0t0i5xa.fsf@fabionatali.com
I support.

Thanks Steve for working on this and thanks to everyone who's
contributed so far. Cheers, Fabio.
V
V
Vagrant Cascadian wrote on 7 Jul 10:14 -0700
Re: GCD005: Regular and efficient releases (consideration/decision)
(name . Steve George)(address . steve@futurile.net)(address . 78332@debbugs.gnu.org)
875xg3udn7.fsf@wireframe
On 2025-06-23, Steve George wrote:
Toggle quote (10 lines)
> The final version is below and can be found on Codeberg:
>
> https://codeberg.org/guix/guix-consensus-documents/src/branch/main/005-regular-releases.md
>
> This means that team members have 14 days to send one of the following replies on the patch-tracking entry of the GCD:
>
> - “I support”, meaning that one supports the proposal;
> - “I accept”, meaning that one consents to the implementation of the proposal;
> - “I disapprove”, meaning that one opposes the implementation of the proposal.

I accept.

live well,
vagrant
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCaGwAbAAKCRDcUY/If5cW
qmLaAQDIdo29L/QB0EMpil8HUD7OFo8m9W43S4ozNYV4qJ6bIAEAj5q4UU5ointc
PxCUmx3G0rkv866Y8Vz4b1dUSgzhzwA=
=RPOS
-----END PGP SIGNATURE-----

G
G
Gabriel Wicki wrote on 7 Jul 16:16 -0700
My vote
(address . 78332@debbugs.gnu.org)
6efd62cx5gkrcd3hn2uur55hzf3wepcfc7ubipzxgihsyq5tud@d6ozunmdkugq
I support.

Thanks for your initiative, Steve, and the kind reminders to cast the
vote.
S
S
Steve George wrote on 8 Jul 06:30 -0700
GCD005: Regular and efficient releases (Accepted)
(address . 78332@debbugs.gnu.org)
qwejzgwjejwa2zlus4looeghmg3imm766vrklnzmf5rhkpualp@23nayf3owdr3
Hi,

The collated results from the decision on GCD 005 are that it's *Accepted*.

Decisions by team members:
- 52 people in the voting pool
- 32 decisions in total
- 25 Support, 7 Accept
- 0 Disapprove

Declarations by observers (people not in teams):
- 2 total declarations
- 2 Support
- 0 Accept
- 0 Disapprove

Deliberation decision results:
- 67% voted to pass
- 0% disapproved
- 38% abstained by not voting

As more than 25% of members voted to pass, and there were no disapprovals this GCD is Accepted, and may now be implemented.

* Please check that I captured **your vote** correctly, the voting tally is here:


* Voting summary and final accepted version of the GCD is here:


Hope this is useful,

Steve / Futurile
E
E
Eric Bavier wrote on 7 Jul 21:40 -0700
Re: GCD005: Regular and efficient releases (consideration/decision)
(address . 78332@debbugs.gnu.org)
678fed65-657c-4e69-b715-55185b502305@posteo.net
On 6/23/25 09:43, Steve George wrote:
Toggle quote (17 lines)
>
> title: Regular and efficient releases
> id: 005
> status: submitted
> discussion: https://issues.guix.gnu.org/78332
> authors: Steve George
> sponsors: Andreas Enge, Ludovic Courtès, Efraim Flashner
> date-submitted: 2025-05-21
> SPDX-License-Identifier: CC-BY-SA-4.0 OR GFDL-1.3-no-invariants-or-later
> ---
>
> # Summary
>
> Guix doesn't have a regular release cycle which has led to infrequent new
> releases. Sporadic releases are detrimental for our users, contributors and
> the project. This GCD proposes we implement an annual release cadence and
> simplify the release process to make releases easier.
I support.
S
S
Steve George wrote on 8 Jul 03:41 -0700
Fwd: Re: [GCD] Deliberation on: Migrating repositories, issues, and patches to Codeberg
(address . 78332@debbugs.gnu.org)
mnmudrjtqyce4xyi6grscyvftk7rd3oz5suy6u3rvivmjm35lk@7l6tdtyovkda
----- Forwarded message from Laurent Gatto <laurent.gatto@gmail.com> -----

Toggle quote (33 lines)
> Date: Sun, 27 Apr 2025 14:06:59 +0200
> From: Laurent Gatto <laurent.gatto@gmail.com>
> To: 76503@debbugs.gnu.org
> Cc: info-guix@gnu.org, Guix Devel <guix-devel@gnu.org>
> Subject: Re: [GCD] Deliberation on: Migrating repositories, issues, and
> patches to Codeberg
>
> I support
>
> On Wed, 23 Apr 2025 at 11:11, Ludovic Courtès <ludo@gnu.org> wrote:
> >
> > Hello Guix,
> >
> > It’s been two months since we started discussing GCD 002, entitled
> > “Migrating repositories, issues, and patches to Codeberg”. Its final
> > version is attached below.
> >
> > In accordance with the GCD process, team members have until May 6th to
> > participate in deliberation by sending one of the following replies
> > (quoting the GCD process):
> >
> > - “I support”, meaning that one supports the proposal;
> > - “I accept”, meaning that one consents to the implementation of the
> > proposal;
> > - “I disapprove”, meaning that one opposes the implementation of the
> > proposal. A team member sending this reply should have made constructive
> > comments during the discussion period.
> >
> > Thanks in advance,
> > Ludo’.
> >
>

----- End forwarded message -----
S
S
Steve George wrote on 8 Jul 03:31 -0700
Fwd: Re: GCD005: Regular and efficient releases (consideration/decision)
(address . 78332@debbugs.gnu.org)
i4isizgckxr62qcysnfhxmm3fjk3qncqzxykq7ys5p26cjggwm@w5dhc4mabns5
----- Forwarded message from Eric Bavier <bavier@posteo.net> -----

Toggle quote (26 lines)
> Date: Tue, 8 Jul 2025 04:40:59 +0000
> From: Eric Bavier <bavier@posteo.net>
> To: Steve George <steve@futurile.net>, guix-devel@gnu.org
> Cc: 78332@debbugs.gnu.org
> Subject: Re: GCD005: Regular and efficient releases (consideration/decision)
>
> On 6/23/25 09:43, Steve George wrote:
> >
> > title: Regular and efficient releases
> > id: 005
> > status: submitted
> > discussion: https://issues.guix.gnu.org/78332
> > authors: Steve George
> > sponsors: Andreas Enge, Ludovic Courtès, Efraim Flashner
> > date-submitted: 2025-05-21
> > SPDX-License-Identifier: CC-BY-SA-4.0 OR GFDL-1.3-no-invariants-or-later
> > ---
> >
> > # Summary
> >
> > Guix doesn't have a regular release cycle which has led to infrequent new
> > releases. Sporadic releases are detrimental for our users, contributors and
> > the project. This GCD proposes we implement an annual release cadence and
> > simplify the release process to make releases easier.
> I support.

----- End forwarded message -----
L
L
Ludovic Courtès wrote on 10 Jul 14:24 -0700
Re: GCD005: Regular and efficient releases (Accepted)
(name . Steve George)(address . steve@futurile.net)
87bjprd9im.fsf@gnu.org
Hey,

Steve George <steve@futurile.net> writes:

Toggle quote (2 lines)
> The collated results from the decision on GCD 005 are that it's *Accepted*.

This is good news!

Time to roll up our sleeves to make the November release a reality.

Thanks for your work on this GCD!

Ludo’.
L
L
Ludovic Courtès wrote on 13 Jul 07:37 -0700
control message for bug #78332
(address . control@debbugs.gnu.org)
87o6to6tru.fsf@gnu.org
close 78332
quit
?
Your comment

This issue is archived.

To comment on this conversation send an email to 78332@patchwise.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 78332
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch