[fpc-devel] [RFC] Modernising the FPC Release Process -- Proposal for Review

Marco van de Voort fpc at pascalprogramming.org
Thu Apr 16 16:56:44 CEST 2026


Op 16-4-2026 om 00:06 schreef Graeme Geldenhuys via fpc-devel:
>
> --- On people vs. process ---
>
> You are right that a document does not replace people, and I want
> to be clear that I am not suggesting it does. The proposal is not
> asking the existing team to do more work — if anything, the goal
> is the opposite. The triage labels, the CI green-light requirement,
> and the Squash mandate are all designed to make sure that *the
> author of each MR* does the preparation work, so that maintainers
> can review from a clean, rebase-confirmed, CI-verified starting
> point rather than untangling years of drift first.
>
That is still quite a big ask for something that will only proof itself 
to be right in a very distant time.

I would try to make major improvements and changes that you can't manage 
yourself (or with other proponents) for a while. Only then you can think 
of  far reaching decisions that touch all developers. I was ridiculed 
the same way during the GIT migration discussions, where everything 
would magically happen if we just migrated to GITlab, and the talk was 
similarly high level and tool-centric, borrowing a lot of enterprise pet 
projects and talking points. And here we are, 5 years down the line. No 
release. Stronger, with respect to releases, nothing _at all_  to show 
for it in all that time.

> --- On unstable trunk and the PPU rewrite ---
>
> This is the strongest point you raise, and I want to engage with
> it seriously. You are right that the proposal does not address
> trunk having been unstable for an extended period. In hindsight,
> the PPU rewrite is actually a good illustration of why the
> discipline the proposal describes matters: a large, unfinished
> feature should mature on its own branch and only land on main when
> it is genuinely ready. Merging it to main while it is still in
> flux is what caused the instability you describe.

The problem is that for larger features the stable/unstable question is 
not always as easy. Also when rotting in a MR/branch usually nothing 
happens.   As I said in the original post, these processes rely on 
oversimplification the complexities of merging revisions (e.g. relations 
between them), and judging sets of them good enough. The reality is not 
black/white but grey.

As for PPU rewrite, ask Michael why he merged it. My bet is that he will 
say this won't happen now any more, because he will ask Claude, or 
something along those lines.

> The Squash requirement makes a direct contribution here too. If
> every feature lands as a single atomic commit, reverting something
> that turns out to be problematic after the fact is a one-line git
> command rather than a surgery. 

As long as it is found out soon enough so that no revisions that come 
after builds on top of that of course. Dangerous for certain parts of 
the compiler and/or rewrites. Another such oversimplification.

> That does not change the need for
> people — but it does change how much damage a premature merge can
> cause.

I think it doesn't fundamentally change/solve anything. It just tries to 
shift around the blame. But in reality the pressure to merge of MR will 
only increase, with developers sometimes caving to the pressure, and the 
whole system breaks down.

> --- On complex, hard-to-merge branches ---
>
> The proposal asks MR authors to keep their branches rebased onto
> current main and to ensure CI is green before requesting a review.
> Hard-to-merge branches are then the author's problem to resolve,
> not the maintainer's. A maintainer who opens an MR and sees a
> failing pipeline or a rebase conflict simply does not act on it
> until the author resolves it — the triage label system makes that
> state visible without requiring anyone to personally chase it.

That assumes that a request review is immediately granted. But specially 
with difficult cases that can take time.

It also assumes that the test coverage is quite safe. With features 
often having crosstalk this is not always the case.

That is all about the compiler btw. For the rest branch complexity is 
more in revisions that touch a lot of files like e.g. the dotted unit 
stuff and the many replacements of string by ansistring etc.

> --- On the 130+ MRs ---
>
> I should have been clearer in the original email: those MRs do not
> all need to be merged. Many of them probably should not be. The
> triage pass is about giving each one a timely decision — Accept,
> Needs-Rebase, Needs-Review, or Closed-Stale — so the backlog
> stops growing silently. Closing stale or unsuitable MRs promptly
> is a perfectly valid outcome of triage.
>
The only relevance of MRs for the release process is that it can be a 
source of major features that are not releasable. In the case of major 
branches that can happen 1  to 1 1/2 years before the release.  Only a 
small fraction of the commits of a release cycle come from MRs.

If your focus of release is on improving MRs , you are looking at the 
wrong place.

> --- On tiered platforms ---
>
> I noticed your footnote about tiering platforms so that minor targets
> cannot block a final release. That is a genuinely good idea. it would
> be worth including that explicitly in any revised process, both to
> unblock the current situation and to prevent the same bottleneck in
> future cycles.

It was not much of a big deal, mostly it formalised an already implicit 
agreement. At best  it will spur the occasional minor platform 
maintainers to move a bit earlier, and not leave it to the last minute.

Still OS X/iOS is usually the biggest delay, and that is still tier 1.

> --- On walking a mile ---
>
> You are right that I have not managed an FPC release cycle, but
> I would be willing to give it a go if the team would have me.
> And here is the thing: if the process described in the proposal
> is followed, the Release Master does not need deep knowledge of
> the compiler or RTL internals. The role is about coordination,
> not implementation — knowing when to announce the Merge Window,
> when to cut the stable branch, when to trigger an RC build, and
> which MRs the subsystem maintainers have already labelled as
> ready to cherry-pick. 

It does require you to get a feel of the what the blocking issues are, 
to pre-emptively ask people to tackle them (or postpone).

> The domain experts are still the ones making the technical judgements; 
> the Release Master just keeps
> the train on schedule.

Usually the domain experts will say they have time not the next weekend, 
but the weekend after. Maybe.    Oops, it is related to a Tier 1 target;

Result: Schedule down the drain.

This is why I'm not a fan of overly complicated schedules and procedures 
for releases, in the end they break at the first hitch. Some minimal 
best effort ones are fine to give some guidance, but don't over 
formalise it. Deadlines are never hard in a volunteer project.

> If that role is not something the team is comfortable handing
> to someone outside the core group, I understand. There is still
> plenty I could help with: setting up the triage label workflow,
> improving the CI pipelines, or simply keeping the process
> documentation up to date. The intent throughout is to reduce
> friction for the people doing the real work, not to add to it. 

I would hesitate to give you the reins alone, but in combination with 
Michael that should be good enough. And I'll still do bulk cherry 
picking of non compiler revs. Nowhere it states it should be one person. 
And Pierre and Tomas are also still around.

But remember: baby steps at first. Do the work, and keep it short term. 
No pipe dreams of reorganising everything down to the last bit.

I would focus on creating lists of todos for (1) the fixes release or 
its RC2 (2) the next major branch. Do that in parallel, not leave the 
major branch till after 3.2.4 is done. Now.

Item one on the major branch todo would be " is the PPU troubles now 
really mostly done/stable?". What else is half-finished/not releasable 
on say a few months scale?

P.s.

yes, another PS. Since the Tier 1 bit landed, I'll mention another 
nugget that has been discussed about forever, or at least the whole SVN 
era.

Having (or going back to ) strict fixes releases. This opposed to the 
current fix+merge non compiler current state.

I don't care much about strict fixes releases, because they are near 
empty, and users have to wait a full cycle to see a fairly trivial 
packages or RTL fix. With major cycles of 5 years that is too long.

Note that means that I'm not interested in such minimal fixes releases, 
but If somebody wanted to manage that I have no objection.



More information about the fpc-devel mailing list