On 2025-05-10 11:15, Andreas Enge wrote:
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

Reply via email to