Re: Can we enforce beta release for the freeze

2021-02-23 Thread Tristan Van Berkom
Hi all, and long time no see, hope everyone is doing well...

On Tue, 2021-02-23 at 08:37 -0600, Michael Catanzaro wrote:
[...]
> On Tue, Feb 23, 2021 at 1:53 pm, Emmanuele Bassi via desktop-devel-list 
>  wrote:
> > In the end, though, releases are manual labour; only the maintainer 
> > can say: "okay, this is good enough for other people to use" (where 
> > "people" defines different audiences depending on the stage of the 
> > development cycle). No amount of automation is going to solve that 
> > because if it did we would not need per-project maintainers in the 
> > first place, and we would only need people reviewing code and 
> > pressing the "Merge" green button.
> 
> We...
> 
> I think we *could* automatically tag the .alpha .beta .rc and .0 
> tarballs, since I expect these to be created at specific predetermined 
> times regardless of whether the code is "ready" or not. This would 
> solve Shaun's problem. It would require a bunch of infrastructure work, 
> though. We would lose manually-written NEWS files. But automation would 
> probably not be able to handle library versioning, like libtool C:R:A 
> or the meson equivalent, so maintainers would need to handle that 
> manually in advance.

I think this is a wonderful idea, I've been toying with something
similar for years now, I never ended up taking it to d-d-l as I did not
get much traction from within the release team yet.

>From my perspective, the main pain point that I would like to solve, is
that we are not running integrated builds of the same software we end
up releasing, if we were releasing the same thing we were running
integrated builds of, then we would obviously have much less issues at
release time.

Bringing releases inline with regular CI throughout the cycle would
also make actual integration work more meaningful (i.e. work like
testing pam setups for gnome-keyring, getting the ibus working
properly, ensuring the GOA stuff is all working, etc).

As this topic came up, I'll try to throw up a tentative outline of how
I think this could work.

  * We would need to support opting in and opting out of this.

For maintainers who want to keep manually tagging and releasing
tarballs, we would only ever build tarballs for those in the
integrated builds.

Those maintainers are responsible for updating the tarball
references in gnome-build-meta every time they release a tarball.

Some policy would need to be drawn up on what happens when
introducing an updated tarball of your platform library into the
build causes the overall GNOME build to break.

  * For maintainers who opt in to the automation (which I would think
would have to be more than 80%, ideally 95%, for this approach to
be worthwhile), we would enforce a GNOME-wide standard release tag
nomanclature.

  * Maintainers would be responsible for updating the `track` reference
in gnome-build-meta for the active release cycle.

With something like this, the release builds would just track the
latest of every maintainer chosen branch at the time of release, and
tag the modules which have changed in any way since the last release
tag - tagging the module would result in automatically also generating
a tarball and publishing it (possibly without any NEWS updates as
Micheal pointed out) - the tarballs are only generated for the
convenience of certain downstreams which still want to consume them.

> For stable releases after .0, I agree only a human can judge when a 
> release is required.

Once the first stable release is out, there are different ways we can
handle things, but I don't think that it is entirely necessary to have
the maintainer decide when to make a stable release of their modules -
if any new commits are available on the active stable branch listed in
the corresponding gnome-build-meta stable branch, they will be included
in the next stable release and a release will be made for them
automatically (tag + tarball published).

Instead, if there are critical security patches which need to go out on
a module in a stable series, the maintainer can just request that the
release team make an additional releases for that exception (if the
automation is good, this should not require effort on the part of the
release team anyway).


There are surely risks and downsides, like ensuring libtool versioning
bumps happen correctly, and ensuring good enough communication (such
that we select the correct branches for CI at the *beginning* of a new
cycle as well as when the freezes start), but in general I think this
would be a good avenue to pursue and would be happy to lend a hand
where I can to help us get there.

Cheers,
-Tristan


___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Can we enforce beta release for the freeze

2021-02-23 Thread Michael Catanzaro
FWIW I agree that freeze should apply to tarballs, i.e. any features or 
UI changes not in a tarball release by the beta tarball deadline ought 
to be delayed until the next release cycle. Dropping major changes a 
week later isn't fair to Shaun and anyone else working on 
documentation. But that's pretty harsh.


On the other hand, a solution that requires cloning Georges is not 
really a solution


On Tue, Feb 23, 2021 at 1:53 pm, Emmanuele Bassi via desktop-devel-list 
 wrote:
In the end, though, releases are manual labour; only the maintainer 
can say: "okay, this is good enough for other people to use" (where 
"people" defines different audiences depending on the stage of the 
development cycle). No amount of automation is going to solve that 
because if it did we would not need per-project maintainers in the 
first place, and we would only need people reviewing code and 
pressing the "Merge" green button.


We...

I think we *could* automatically tag the .alpha .beta .rc and .0 
tarballs, since I expect these to be created at specific predetermined 
times regardless of whether the code is "ready" or not. This would 
solve Shaun's problem. It would require a bunch of infrastructure work, 
though. We would lose manually-written NEWS files. But automation would 
probably not be able to handle library versioning, like libtool C:R:A 
or the meson equivalent, so maintainers would need to handle that 
manually in advance.


For stable releases after .0, I agree only a human can judge when a 
release is required.



___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: Can we enforce beta release for the freeze

2021-02-23 Thread Emmanuele Bassi via desktop-devel-list
On Mon, 22 Feb 2021 at 00:20, Shaun McCance  wrote:


> What I want is a discussion on how we can ensure beta releases happen in
> the future. For example, can we do more to automate releases? Or (again,
> for example), could we have an automated script that emails this list with
> modules missing beta releases? Then even if releases are missed, people
> like me would at least know what to expect from the beta.
>

"Automating releases" is a vast topic.

In theory, we could simply ask maintainers to upload a (signed) tag to
GitLab, and then our tools would be able to deal with that—of course, that
requires some process change and some tool change from the release team
perspective, but we've been trying to get towards that goal for a while
now. That would get rid of the "upload a dist tarball to gnome.org" step,
which is, frankly, the least involved step. We'd still require maintainers
to run dist as part of the release checklist because otherwise how are they
going to tag a release in the first place?

Of course, we *should* also rely on CI to ensure that a `dist` operation
always passes on the main development branch; it would be good to have a
project-wide CI rule that runs the dist on a schedule, but maintainers can
do this *today* in their projects.

In the end, though, releases are manual labour; only the maintainer can
say: "okay, this is good enough for other people to use" (where "people"
defines different audiences depending on the stage of the development
cycle). No amount of automation is going to solve that because if it did we
would not need per-project maintainers in the first place, and we would
only need people reviewing code and pressing the "Merge" green button.

The delay on this beta release was caused by the fact that we have a
shortage of maintainers, and too few people in key positions. This issue
can only be solved by having redundancies in the *human* pipeline.
Maintainers: *please*, mentor contributors to pick up the release process.
Document what you do, and give out release duties to other people at least
once per cycle, if you can.

The release team can do "non maintainer" releases, of course; the problem
is, of course, that maintainers can be *very* protective of their fiefdoms,
so the release team has to wait for either being explicitly asked to do a
release, or for an answer from maintainers as to whether they'll be able to
do a release. We *cannot* have it both ways: either the release team can
take over your project for a specific task—do a release, keep the build
running—or we have to wait until we get an answer from the maintainer.

Ciao,
 Emmanuele.

-- 
https://www.bassi.io
[@] ebassi [@gmail.com]
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/desktop-devel-list