Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2026-04

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

96 messages · 12 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Unknown author

Hello everyone,

A few weeks ago I raised concerns about the 130+ open merge requests sitting unactioned in the GitLab instance. That thread drew a lot of responses, and it was clear the frustration is widely shared. What it did not produce was a concrete path forward.

Rather than continue that debate in the abstract, I spent some time studying how the Linux Kernel project manages its release process and what lessons might transfer to FPC. The result is a formal proposal, which I am sharing here for community review and comment.

https://gitlab.com/-/snippets/5980608

--- What the proposal covers ---

The central idea is a "Release Train" model: releases depart on a fixed schedule regardless of which features are ready, removing the "just one more thing" pressure that has kept us in freeze. The document covers:

* A branching architecture with a clear separation between active development (main) and stabilisation (stable-X.Y).

* A defined release cadence: Merge Window → Feature Freeze → RC Cycle → Release, with explicit durations for each phase.

* A structured approach to the MR backlog using four triage labels (Accept, Needs-Rebase, Needs-Review, Closed-Stale), so we can work through it systematically before the first train departs.

* Role-based Git command references for Contributors, Subsystem Maintainers, and the Release Master — covering everything from a simple bug fix to cutting the stable branch, tagging RCs, shipping a final release, and issuing hotfixes.

* Automation for the fpc/build repository: when fpcsrc is tagged with a release or RC tag, a GitLab CI pipeline automatically pins the submodule pointers in fpc/build and applies the same tag there, eliminating the manual submodule update step.

--- Immediate next steps proposed ---

1. Ship v3.2.4. It is already in freeze. Tagging it demonstrates the project is active and gives the community something concrete to point to while the new process is being adopted.

2. Designate roles: one Release Master, and at least one Subsystem Maintainer per area (Compiler, RTL, FCL, Packages).

3. Create the GitLab labels and run a triage pass over the open MR backlog.

4. Open the first official Merge Window for v3.4 immediately after v3.2.4 ships.

--- A note on scope ---

This proposal is not a criticism of the work anyone has put in. FPC is a remarkable project and the people maintaining it do so in their own time. The goal here is simply to reduce the administrative friction that currently makes releasing feel harder than it should be, so that the team's energy goes into code rather than process.

I am aware that some of these ideas may not fit how the core team prefers to work. That is exactly why I am posting this as an RFC rather than a pull request. All feedback is welcome — including disagreement.

Regards,
- Graeme -

Reply by email

Tomas Hajny
to Unknown author

On 2026-04-15 15:18, Graeme Geldenhuys via fpc-devel wrote:

Hi Graeme,

First of all - I understand that you try to move things forward and I appreciate your interest. In addition, I understand that you prefer start working on something than participating in potentially endless discussions. However, I believe that you should read at least some parts of that discussion. One of those parts is the question (very correctly raised by Marco!) how does having a fixed schedule ensure that the fixed releases contain considerable advances against each other while still ensuring reasonable quality / stability for patch releases. Please, see below for other two comments.

Regarding the number of merge requests - have you tried comparing the amount of changes waiting in the merge requests to the amount of changes pushed to the repository within the last 5 years? I didn't try to compare it myself, thus I don't know the answer, but I believe that such a comparison might be beneficial in order to find out whether the waiting merge requests (some of them probably useful, some other possibly bad and not appropriate for merging in any case) are substantial part of the problem, or whether there are other possibly much more important obstacles.

A few weeks ago I raised concerns about the 130+ open merge requests sitting unactioned in the GitLab instance. That thread drew a lot of responses, and it was clear the frustration is widely shared. What it did not produce was a concrete path forward.

.
.

* Automation for the fpc/build repository: when fpcsrc is tagged with a release or RC tag, a GitLab CI pipeline automatically pins the submodule pointers in fpc/build and applies the same tag there, eliminating the manual submodule update step.

Please, read the discussion (especially our communication with Martin F.) to get better understanding why this particular part doesn't fit the needs. I don't say that nothing might ever change in this area compared to the current state, but please note that cross-building is _not_ applicable for all FPC supported targets and thus building for all targets cannot be tested / checked by a single person or anything like that - which is why testing the release build against once created tag is not enough.

.
.

2. Designate roles: one Release Master, and at least one Subsystem Maintainer per area (Compiler, RTL, FCL, Packages).

.
.

What do you mean by the word "designate" here - do you have particular candidates in mind? Do you volunteer for one of these roles (which one)? Don't you miss target maintainers in your picture (see my comment above in this context)?

Tomas

Reply by email

Michael Van Canneyt
to Unknown author: A few weeks ago I raised concerns about the 130+ open merge requests sitting unactioned…
Graeme Geldenhuys wrote 21 lines
Hello everyone, A few weeks ago I raised concerns about the 130+ open merge requests sitting unactioned in the GitLab instance. That thread drew a lot of responses, and it was clear the frustration is widely shared. What it did not produce was a concrete path forward. Rather than continue that debate in the abstract, I spent some time studying how the Linux Kernel project manages its release process and what lessons might transfer to FPC. The result is a formal proposal, which I am sharing here for community review and comment. https://gitlab.com/-/snippets/5980608 --- What the proposal covers --- The central idea is a "Release Train" model: releases depart on a fixed schedule regardless of which features are ready, removing the "just one more thing" pressure that has kept us in freeze. The document covers:

As far as I am concerned, this is more or less what I envisaged. So no discussion there.

One remark:
It does not have to be the current FPC team members that make the releases.

If we have volunteers that are agreed to work on it, I can offer them access to gitlab. I also repeat that the foundation is willing to offer some monetary recompense for this.

You don't need compiler knowledge to do all this, you mostly need gitlab knowledge and some discipline.

Michael.

Reply by email

Martin Frb
to Unknown author: A few weeks ago I raised concerns about the 130+ open merge requests sitting unactioned…
Graeme Geldenhuys wrote 5 lines
The central idea is a "Release Train" model: releases depart on a fixed schedule regardless of which features are ready, removing the "just one more thing" pressure that has kept us in freeze. The document covers:

While (as outsider) I would welcome a "time"-ish based cycle, I don't think it will work entirely.

You mention it works for the kernel. But the kernel does not have regression forced by other products. (well, hardware can change, but that is more new hardware to support gets added / hardware already supported does not suddenly stop).

FPC needs to run on several OS => if MS did make changes and distributed them via its update, and FPC would no longer work, then that should get fixed. Rolling out on exact time, makes no sense then. Yes sure the fix might come in 6 month then. But if it could be there in less time...

But more troubling than the wait, would be the "which version works with which OS" => As for the core list of OS (the big 3 afaik) every released version should work at the time of release.
That rule should IMHO not be broken. Or only, if the team no longer has a person that can fix it.

That rule shouldn't cause to big delays **if** all else works.

Yes, currently - afaik - its waiting for some MacOS fix => which apparently exists? So not sure what takes the time => but it seems to be more in "all else" than the "wait for the OS".

If the "all else" isn't working, then having a timestamp to act on wont fix it. Hence, I thing the "wait for the big 3" should not be a problem.

Reply by email

Michael Van Canneyt
to Tomas Hajny: First of all - I understand that you try to move things forward and I appreciate your…
Tomas Hajny wrote 43 lines
On 2026-04-15 15:18, Graeme Geldenhuys via fpc-devel wrote: Hi Graeme, First of all - I understand that you try to move things forward and I appreciate your interest. In addition, I understand that you prefer start working on something than participating in potentially endless discussions. However, I believe that you should read at least some parts of that discussion. One of those parts is the question (very correctly raised by Marco!) how does having a fixed schedule ensure that the fixed releases contain considerable advances against each other while still ensuring reasonable quality / stability for patch releases. Please, see below for other two comments. Regarding the number of merge requests - have you tried comparing the amount of changes waiting in the merge requests to the amount of changes pushed to the repository within the last 5 years? I didn't try to compare it myself, thus I don't know the answer, but I believe that such a comparison might be beneficial in order to find out whether the waiting merge requests (some of them probably useful, some other possibly bad and not appropriate for merging in any case) are substantial part of the problem, or whether there are other possibly much more important obstacles. > A few weeks ago I raised concerns about the 130+ open merge requests > sitting unactioned in the GitLab instance. That thread drew a lot of > responses, and it was clear the frustration is widely shared. What it > did not produce was a concrete path forward. . . > * Automation for the fpc/build repository: when fpcsrc is tagged > with a release or RC tag, a GitLab CI pipeline automatically > pins the submodule pointers in fpc/build and applies the same > tag there, eliminating the manual submodule update step. Please, read the discussion (especially our communication with Martin F.) to get better understanding why this particular part doesn't fit the needs. I don't say that nothing might ever change in this area compared to the current state, but please note that cross-building is _not_ applicable for all FPC supported targets and thus building for all targets cannot be tested / checked by a single person or anything like that - which is why testing the release build against once created tag is not enough.

No, but we definitely can automate it for the major platforms.

The smaller platforms can tag along at their own rythm.

I really don't think that the small platforms are where our biggest user base is. At least with the proposal of Graeme, we'll be helping the majority of our users.

Will it be perfect ? No. But no release ever was.
At least with regular releases there will be *some* progress. Now there is none.

It is possible for countless open source projects. There is nothing special about FPC that would prevent us from doing the same.

We can of course discuss possible pitfalls till judgment day comes, but this does not help our users.

Michael.

Reply by email

Kevin Lyda
to Martin Frb: While (as outsider) I would welcome a "time"-ish based cycle, I don't think it will work…

On Wed, 15 Apr 2026 at 16:45, Martin Frb via fpc-devel <

Show quoted text 8 lines
wrote: While (as outsider) I would welcome a "time"-ish based cycle, I don't think it will work entirely. You mention it works for the kernel. But the kernel does not have regression forced by other products. (well, hardware can change, but that is more new hardware to support gets added / hardware already supported does not suddenly stop).

Sure. Comparing to the kernel isn't ideal. Comparing to another compiler would make more sense. The Go team do a major (the second number) release every 6 months and they support a large number of platforms. They do a minor release (the third number) about once a month.

https://go.dev/doc/devel/release

It works rather well and helps teams using Go make plans for upgrades. I've fully automated Go compiler upgrades in the past and it worked for years.

I do think a full CI system that builds the compiler for all supported platforms and runs a test suite on each platform would help set folks minds at ease.

Kevin

Reply by email

Tomas Hajny
to Michael Van Canneyt: No, but we definitely can automate it for the major platforms. The smaller platforms can…
Michael Van Canneyt wrote
On Wed, 15 Apr 2026, Tomas Hajny via fpc-devel wrote: > On 2026-04-15 15:18, Graeme Geldenhuys via fpc-devel wrote:

.
.

Show quoted text 15 lines
>> * Automation for the fpc/build repository: when fpcsrc is tagged >> with a release or RC tag, a GitLab CI pipeline automatically >> pins the submodule pointers in fpc/build and applies the same >> tag there, eliminating the manual submodule update step. > > Please, read the discussion (especially our communication with Martin > F.) to get better understanding why this particular part doesn't fit > the needs. I don't say that nothing might ever change in this area > compared to the current state, but please note that cross-building is > _not_ applicable for all FPC supported targets and thus building for > all targets cannot be tested / checked by a single person or anything > like that - which is why testing the release build against once > created tag is not enough. No, but we definitely can automate it for the major platforms.

.
.

Please, note what kind of "automation" is mentioned above - it was specifically related to updating submodule pointers based on the tag. As mentioned elsewhere, that wouldn't work well (and certainly not better compared to the current situation). I appreciate whatever automation helping us with building the release (regardless whether it will help with the common parts, or just one particular major platform), but this is not the point discussed here.

Tomas

Reply by email

Michael Van Canneyt
to Tomas Hajny
Tomas Hajny wrote 24 lines
On 2026-04-15 17:53, Michael Van Canneyt via fpc-devel wrote: > On Wed, 15 Apr 2026, Tomas Hajny via fpc-devel wrote: >> On 2026-04-15 15:18, Graeme Geldenhuys via fpc-devel wrote: . . >>> * Automation for the fpc/build repository: when fpcsrc is tagged >>> with a release or RC tag, a GitLab CI pipeline automatically >>> pins the submodule pointers in fpc/build and applies the same >>> tag there, eliminating the manual submodule update step. >> >> Please, read the discussion (especially our communication with Martin F.) >> to get better understanding why this particular part doesn't fit the >> needs. I don't say that nothing might ever change in this area compared to >> the current state, but please note that cross-building is _not_ applicable >> for all FPC supported targets and thus building for all targets cannot be >> tested / checked by a single person or anything like that - which is why >> testing the release build against once created tag is not enough. > > No, but we definitely can automate it for the major platforms. . . Please, note what kind of "automation" is mentioned above

I did, and I followed the discussion. I don't see the you can explain it as you seem to understand it ?

Michael.

Reply by email

Marco van de Voort
to Unknown author: A few weeks ago I raised concerns about the 130+ open merge requests sitting unactioned…

Op 15-4-2026 om 15:18 schreef Graeme Geldenhuys via fpc-devel:

(warning: this will be harsh, as I'm increasingly getting fed up by these gratuitous "release process" designers)

Show quoted text 5 lines
The central idea is a "Release Train" model: releases depart on a fixed schedule regardless of which features are ready, removing the "just one more thing" pressure that has kept us in freeze. The document covers:

It is the exact opposite of my central idea. Which is "More release workers, less release workflow designers". Specially not workflow designers that never took any responsibility for the release project before.

The problem is not drawing up elaborate release plans. The problem is _executing_ them. We have heard all of these suggestions before, and yes, like yours, the proposals typically they originate in workflows of either professional or high profile open source projects that share the existence of release engineering FTEs, branch managers etc . (either in the project or the project sponsors).

That is _pointless_ comparison. You want to compare release process? Pick a wholly volunteer driven grassroots project as model, and forget about the dramatic effect of how big projects do it.

Anyway, till the current hiatus, the primary problem was the gap between the minor releases and the next major release (the x.y.4 release was often a stopgap to hide the delay of the next major branch). That holdup was mostly related to major features that are not stable nor finished, and promises to fix them not making any proposed deadlines. Then what do you do? Ship an unusable project to meet artificial deadlines ?

Your plan does not contain any suggestion to fix such scenario. It ignores trunk having been unstable for 1 1/2 years, and only now slowly getting past the PPU rewrite. It skips over any causes for the holdup for the fixes release, instead only suggesting skipping/ignoring it, while the .4 releases are the most longtime used versions of them all, and without checking if a next major fixes branch is viable.

it seems to assume that a few unusable robot generated releases will provoke people into action. It won't. If a 5 year release hiatus won't make people move, an artificial timer ticking down half an year from now won't either.

None of your ideas are new. It's a amalgam of a technocrat's knee jerk reaction (*) without really studying the problem, hoping that some magical structure will "motivate" the grunts doing the work.

The problem is that there are /no/ or few such grunts. And the few that are there don't like to be told what to do by people that never walked a mile in their boots.

To anybody that wants to fix the release problem: be a manager for a full major cycle. Then you can redesign the process. Not before.  And yes, that includes you, Michael.

P.s. the increasing merge requests is a partially a problem created by a fundamental flaw of git merges .   People can work much longer on their own before communicating over pushing it upstream, which leads to complex and hard to merge branches.

Combine that with the unfortunate FPC policy of not immediately closing hopeless or far out feature requests, and you get a backlog in both merges and bugreports.  Increasing reports is at least partially a  normal consequence of a lax closure/reject policy, because when in doubt, reports/MRs are left open.

(*)  I only miss the only somewhat useful suggestion to tier platforms, so that relative minor platforms can't obstruct a final release. That has already been agreed upon though after 3.2.2, but never got executed due to the current hiatus.

(breathes out)

Reply by email

Marco van de Voort
to Marco van de Voort

Op 15-4-2026 om 20:09 schreef Marco van de Voort via fpc-devel:

Show quoted text 6 lines
It is the exact opposite of my central idea. Which is "More release workers, less release workflow designers". Specially not workflow designers that never took any responsibility for the release project before.

Some bits that I considered after the last mail:

A) For the people that want to play the release automation card:

1) Realise that release automation is _NOT_ the bottleneck in the release process. Actually making sure the branch would produce a workable release is the bottleneck. This is usually either ignored (but any automation will /surely/ help?) or suggesting to skip that step outright. But skipping this step is not really about releasing any more, but basically rebranding snapshots as releases. And that is a token change only, since snapshots are already provided, and obviously don't satisfy the need for a release (or we would not be having this discussion)

2) If you _still_ want to do automation, please start with the Tier 1 platforms in this order: (1) Mac OS X (2) Windows (3) Linux.  As most Linux detail release work happens in the distribution packaging, putting it first is too low a bar.  OS X in recent history has been  the most problematic of the Tier 1 targets, so anything that you can do to keep the current live branches up to date with the current (annual) iteration of OS X would be hugely beneficial. That is no disrespect to Jonas btw, it is simply the reality of a annual release that nearly always breaks something.  And those breakages are often non trivial. Windows has had its problems too (let's not forget the SEH32 rework that held up the 3.2.0 release), but those are increasingly more isolated due to having internal binutils and a very stable ABI/API.

If you want to "fix" releasing and you own an up to date Mac, that is surely where the efforts should have the best ROI. Much more than writing a few makepack alike scripts.

3) Similar claims (CI, automated releases) were made during the 2021 gitlab migration by Michael and Joost. It would be good to find out what became of those efforts. At least I never heard of them again.

B) Another fundamental flaw of plans like yours is that the assumption that the relation between main/trunk and release branches (of any policy) is simply a matter of selecting a few winner revisions to merge, and ignore the rest.

After 1-2 years however most compiler revisions are however attached to major reworks or restructures of the compiler.

Your process doesn't provide any tools to solve that problem, it merely reiterates an over idealistic view of cherry picking random unrelated versions to release branches.   A prime example is the said loadppu rework of may 2024 that made the main branch unstable after more than 5 full years of development (the 3.2.x branch was branched from the main branch in summer 2018 iirc), making a speedy major branch release hopeless.

Reply by email

Marco van de Voort
to Tomas Hajny: First of all - I understand that you try to move things forward and I appreciate your…

Op 15-4-2026 om 17:13 schreef Tomas Hajny via fpc-devel:

Show quoted text 6 lines
First of all - I understand that you try to move things forward and I appreciate your interest. In addition, I understand that you prefer start working on something than participating in potentially endless discussions. However, I believe that you should read at least some parts of that discussion.

Current distance between fixes and main is about 13739 revisions. (not counting the 23 fpcbuild revisions, and the work that needs to be done for docs). Of course a MR can be more commits/revisions, but rarely more than 20. So 100 merge requests is at most 2000, and that is already a stretch, both wrt commits/mMR and  that that already assumes that are most are viable to merge and will be eventually merged.

As I said in the previous mail, the MR surplus is a new problem that still is developing. It is IMHO not saying much about the project, except that we as a project, we have the tendency to let revisions or bugreports linger rather than close them without resolution.

Also I'd expect many far-out MR only to be merged after the branching of a new stable branch, as that would provide maximum time to test and stablish them in main/trunk, so a high number of unmerged MRs so late in the cycle seems normal. They are just more easily counted, rather than being private branches of developers or patchsets in bugreports as in SVN times.

Anyway some 500-1000 of those 13700 revisions are makefile regens and verrsion updates that can be somewhat ignored. Also anything attached to fcl-web or fcl-passrc/pas2js has essentially not been merged for 3-4 years or longer due to high mutual entanglements and high development speed due to pas2js.

Note that while the current numbers and wall time is extreme, an higher number of  unmerged non compiler revisions is normal for being in the  x.y.4 release cycle.

Compiler revisions are a different breed altogether, and only very sporadically merged. So much that the merged revisions mostly disappear in the noise (I'd guess 100-200 revs, and most of them relatively soon after 3.2.0 out of  a total number of compiler related revisions of 6000+).

For a simple analysis by category see
https://www.stack.nl/~marcov/mergelogs32/   updated every few weeks, and https://www.stack.nl/~marcov/mergelogsbuild32/ for fpcbuild/

Reply by email

Michael Van Canneyt
to Marco van de Voort: Op 15-4-2026 om 15:18 schreef Graeme Geldenhuys via fpc-devel: (warning: this will be…
Marco van de Voort wrote 18 lines
Op 15-4-2026 om 15:18 schreef Graeme Geldenhuys via fpc-devel: (warning: this will be harsh, as I'm increasingly getting fed up by these gratuitous "release process" designers) > > The central idea is a "Release Train" model: releases depart on a > fixed schedule regardless of which features are ready, removing the > "just one more thing" pressure that has kept us in freeze. The > document covers: It is the exact opposite of my central idea. Which is "More release workers, less release workflow designers". Specially not workflow designers that never took any responsibility for the release project before. To anybody that wants to fix the release problem: be a manager for a full major cycle. Then you can redesign the process. Not before.  And yes, that includes you, Michael.

No worries there:

I already told Detlef Overbeek last weekend I would take up the 3.2.4 release task in July if Florian didn't find the time by then. I have still 2 AI conferences where I must speak, but then there will be time.

Graeme - or anyone else interested in moving things forward: I'm interested in ideas for making the CI/CD come up with release artifacts for the major platforms: windows, linux and mac.

Michael.

Reply by email

Marco van de Voort
to Michael Van Canneyt

Op 15-4-2026 om 21:29 schreef Michael Van Canneyt via fpc-devel:

Show quoted text 8 lines
No worries there: I already told Detlef Overbeek last weekend I would take up the 3.2.4 release task in July if Florian didn't find the time by then. I have still 2 AI conferences where I must speak, but then there will be time.

Good. The first things to consider:

- is it worth bringing out a 3.2.4 that is essentially the state of mid 2024  in mid 2026 ? As discussed in other threads, I think it is best to reopen the merge window ASAP, to avoid releasing anything that contains no fixes at all for anything that has been fixed in the last 2 years (and reported for even longer).

- A policy for maintaining a release (candidate(s)) branch at a distance of the fixes branch. With SVN we initiated mergetracking for that. I don't know if GIT provides anything, but considering the current, manual scripted trunk->fixes merge management, it at leasts needs some work.   So  I'd urge you to consider finding some automated way to manage that. Don't underestimate the number of last minute fixes that will confuse you otherwise.

- maybe do another RC asap, and announce it properly this time, so that there is actual feedback.

Graeme - or anyone else interested in moving things forward: I'm interested in ideas for making the CI/CD come up with release artifacts for the major platforms: windows, linux and mac.

Mac, Windows, Linux. In that order, to avoid kicking in already open doors.

Reply by email

Michael Van Canneyt
to Marco van de Voort
Marco van de Voort wrote 18 lines
Op 15-4-2026 om 21:29 schreef Michael Van Canneyt via fpc-devel: > > > No worries there: > > I already told Detlef Overbeek last weekend I would take up the > 3.2.4 release task in July if Florian didn't find the time by then. > I have still 2 AI conferences where I must speak, but then there will be > time. Good. The first things to consider: - is it worth bringing out a 3.2.4 that is essentially the state of mid 2024  in mid 2026 ? As discussed in other threads, I think it is best to reopen the merge window ASAP, to avoid releasing anything that contains no fixes at all for anything that has been fixed in the last 2 years (and reported for even longer).

Was planned.

Show quoted text 7 lines
- A policy for maintaining a release (candidate(s)) branch at a distance of the fixes branch. With SVN we initiated mergetracking for that. I don't know if GIT provides anything, but considering the current, manual scripted trunk->fixes merge management, it at leasts needs some work.   So  I'd urge you to consider finding some automated way to manage that. Don't underestimate the number of last minute fixes that will confuse you otherwise.

That's easy.

But you should expect some additional gitlab rules to make this possible.

Nothing blocking, but some more discipline will be needed:

Our current libertine way of developing will need to be somewhat curtailed.

- maybe do another RC asap, and announce it properly this time, so that there is actual feedback.

Was part of the plan already.

Show quoted text 5 lines
> Graeme - or anyone else interested in moving things forward: I'm > interested in ideas for making the CI/CD come up with release > artifacts for the major platforms: windows, linux and mac. > Mac, Windows, Linux. In that order, to avoid kicking in already open doors.

Order makes no difference. Either they're all available, or none is. That's simply how gitlab automation works.

Michael.

Reply by email

Unknown author
to Tomas Hajny: First of all - I understand that you try to move things forward and I appreciate your…

Hi Tomas,

Thank you for the response.

--- On fixed schedule vs. quality ---

I want to clarify what the fixed schedule actually controls in the model: it governs *when the train departs*, not *what boards it*. The Merge Window determines the content of any given release. If a feature is not ready, it simply waits for the next train.

The reason I believe a fixed schedule still helps, even if some releases are lighter than others, is that the alternative is demonstrably not working. v3.2.4 has been "almost ready" for two years. Waiting until a release feels "substantial enough" has no natural stopping condition. A fixed departure time does.

That said, I think the cadence needs careful thought for a project of FPC's size and contributor base. Looking at the volume of commits, I believe 6-month or even 12-month cycle will be appropriate. No need to chase a release every two weeks like the Linux kernel - though that proves that a mammoth project has the ability to do that, so FPC should in reality be a walk in the park.

--- On the MR count vs. commit activity ---

You make a fair empirical point, and I genuinely do not know the answer either. It would be worth someone running that comparison before we treat the MR backlog as the primary symptom.

What I would say is this: even if the 130+ MRs represent a small fraction of total changes, the fact that contributors have submitted work and received no signal for years has a cost that does not show up in commit counts — it affects contributor retention and community confidence.

The triage process in the proposal is not about merging all 130; it is about giving every one of them a clear, timely answer in either direction.

--- On the CI automation and cross-building ---

This is the strongest point you have raised, and I will be direct: the proposal as written is maybe a bit thin on details here.

You are absolutely right that a green CI run on x86_64/Linux is not a meaningful "release is ready" signal for a compiler that targets DOS, Amiga, embedded ARM, and dozens of other platforms that cannot be tested in a standard CI environment. The automation I described for pinning submodule pointers in fpc/build is still valid as a mechanical step. If the CI can cover where 80-90% of the FPC userbase sit, that should be plenty good enough. The way lesser used platforms will simply trail along.

A revision worth considering: rather than the tag being the sole trigger, the RC cycle could include a lightweight sign-off checklist — one entry per supported target — that target maintainers update as they validate their platform. The final release tag would only be applied once all _critical targets_ [the 80-90% of users] have a green tick. GitLab supports this via a checklist in an issue or MR description. This keeps the automation useful while acknowledging the multi-target reality.

I would very much welcome input from you or anyone else, what a workable sign-off mechanism would look like in practice, and what is considered the Tier 1 platform (data backed info would be very useful here).

--- On roles and volunteering ---

"Designate" was poorly chosen — it implies authority I do not have. What I meant was: for the process to function, someone needs to agree to own each area. I cannot assign that; the team has to.

You asked whether I volunteer, and which role. I am happy to take on any of triage coordination, process documentation, CI pipeline improvements or even try my hand at release manager. I acknowledge that domain ownership of Compiler, RTL, and FCL has to come from people with far deeper knowledge of the internals than I have.

You are also right that "target maintainers" are absent from the proposal. That is a real gap. The model needs a named person responsible for each primary target, both for ongoing review and for the RC sign-off I described above. I will update the proposal to reflect this.

--- Summary ---

The proposal is a starting point, not a finished plan. The feedback so far — yours, Marco's, and others' — is making it better. I will revise the document to address the cross-building/sign-off gap and add target maintainers as a defined role, then share an updated version here for further review.

Thanks again for taking the time to engage with this.

Regards,
- Graeme -

Reply by email

Unknown author
to Marco van de Voort: Op 15-4-2026 om 15:18 schreef Graeme Geldenhuys via fpc-devel: (warning: this will be…

Hi Marco,

Thank you for the candid response. I would genuinely rather have direct pushback than polite silence, so I appreciate it. Let me respond to a few of your points as honestly as I can.

--- 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.

--- 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 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. That does not change the need for people — but it does change how much damage a premature merge can cause.

--- 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.

--- 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.

--- 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.

--- 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. The domain experts are still the ones making the technical judgements; the Release Master just keeps the train on schedule.

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.

Regards,
- Graeme -

Reply by email

Tomas Hajny
to Michael Van Canneyt: I did, and I followed the discussion. I don't see the you can explain it as you seem to…
Michael Van Canneyt wrote 30 lines
On Wed, 15 Apr 2026, Tomas Hajny via fpc-devel wrote: > On 2026-04-15 17:53, Michael Van Canneyt via fpc-devel wrote: >> On Wed, 15 Apr 2026, Tomas Hajny via fpc-devel wrote: >>> On 2026-04-15 15:18, Graeme Geldenhuys via fpc-devel wrote: > > . > . >>>> * Automation for the fpc/build repository: when fpcsrc is tagged >>>> with a release or RC tag, a GitLab CI pipeline automatically >>>> pins the submodule pointers in fpc/build and applies the same >>>> tag there, eliminating the manual submodule update step. >>> >>> Please, read the discussion (especially our communication with >>> Martin F.) to get better understanding why this particular part >>> doesn't fit the needs. I don't say that nothing might ever change in >>> this area compared to the current state, but please note that >>> cross-building is _not_ applicable for all FPC supported targets and >>> thus building for all targets cannot be tested / checked by a single >>> person or anything like that - which is why testing the release >>> build against once created tag is not enough. >> >> No, but we definitely can automate it for the major platforms. > . > . > > Please, note what kind of "automation" is mentioned above I did, and I followed the discussion. I don't see the problem at all. Maybe you can explain it as you seem to understand it ?

If I understand it correctly, this part of the proposal suggests replacing the current mechanism of keeping fpcbuild repository up to date (i.e. keeping the latest versions of the submodules always available in the fpcbuild repository) with one time synchronization only when a particular tag is applied to fpcbuild. That would mean that building the most up to date version for individual targets could not be tested before applying the tag (and that testing it again after any applied fixes would always need manual synchronization). And that would not be a good idea at all as far as I can tell...

Tomas

Reply by email

Unknown author
to Marco van de Voort: Op 15-4-2026 om 20:09 schreef Marco van de Voort via fpc-devel: Some bits that I…
Marco van de Voort wrote
2) If you _still_ want to do automation, please start with the Tier 1 platforms in this order: (1) Mac OS X (2) Windows (3) Linux.

I've hinted at this many items in recent weeks. I'm very glad to hear the FPC teams agrees some platforms have higher priority over others (covering more of the actual user base).

Regards,
- Graeme -

Reply by email

Unknown author
to Michael Van Canneyt: No worries there: I already told Detlef Overbeek last weekend I would take up the 3.2.4…
Michael Van Canneyt wrote
Graeme - or anyone else interested in moving things forward: I'm interested in ideas for making the CI/CD come up with release artifacts for the major platforms: windows, linux and mac.

I'm happy to help where I can. I'm not sure what Gitlab account the FPC team has (is it just the free one?), and what CI runners are available to the project. But I'm sure we can come up with something more robust than the current state of just one target platform.

Regards,
- Graeme -

Reply by email

Tomas Hajny
to Unknown author: Thank you for the candid response. I would genuinely rather have direct pushback than…

On 2026-04-16 00:06, Graeme Geldenhuys via fpc-devel wrote:

.
.

Show quoted text 6 lines
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.

.
.

As somebody having been involved in that role in the past (see https://wiki.freepascal.org/Release_Template and e.g. https://wiki.freepascal.org/Release_2.0.4), I can say for sure that the release coordinator / release master / ... certainly doesn't need to know all the details of the compiler, RTL and everything else at the same time :-) - this isn't the issue. From my experience, making sure that people who can tackle specific tasks blocking the release (should it be particular manual steps in the release building process, or fixing some issue which popped out during the build), find needed time for addressing the needed things, is the biggest obstacle.

BTW, are you aware of the Release engineering page on our Wiki (https://wiki.freepascal.org/Release_engineering)?

Tomas

Reply by email

Unknown author
to Tomas Hajny: If I understand it correctly, this part of the proposal suggests replacing the current…
Tomas Hajny wrote
If I understand it correctly, this part of the proposal suggests replacing the current mechanism of keeping fpcbuild repository up to date

Hi Tomas,

The intent was never to replace the current mechanism of keeping fpc/build continuously up to date. Whatever process the team uses today to keep submodule pointers current during active development should remain exactly as it is. The CI automation described in the proposal is an *additional* step that fires only at the specific moment a release or RC tag is pushed to fpcsrc. At that point, and only at that point, it pins the fpc/build submodule pointer to the exact tagged commit so that the release build is reproducible and auditable.

To put it plainly: normal development workflow in fpc/build continues unchanged. The automation handles one narrow, currently manual [I assume] step — "now that we have tagged fpcsrc, update fpc/build to record exactly which commit that tag corresponds to." Nothing more than that.

I also want to clarify the intended scope. The proposal was not suggesting that CI automation could build and verify every platform FPC supports — that is clearly not feasible given the breadth of targets. The automation was scoped to a Tier 1 set of platforms that cover the majority of the FPC user base: Linux, Windows, and macOS on the common architectures. Niche and cross-compiled targets would still rely on the people who own those platforms, exactly as they do today.

I agree with you that the proposal should spell this out explicitly rather than leaving it to interpretation. I will update the document to make both points clear: that the automation is additive and not a replacement for continuous development updates, and that its CI scope is limited to a defined Tier 1 platform list.

Regards,
- Graeme -

Reply by email

Michael Van Canneyt
to Tomas Hajny: If I understand it correctly, this part of the proposal suggests replacing the current…
Tomas Hajny wrote 41 lines
On 2026-04-15 18:24, Michael Van Canneyt via fpc-devel wrote: > On Wed, 15 Apr 2026, Tomas Hajny via fpc-devel wrote: >> On 2026-04-15 17:53, Michael Van Canneyt via fpc-devel wrote: >>> On Wed, 15 Apr 2026, Tomas Hajny via fpc-devel wrote: >>>> On 2026-04-15 15:18, Graeme Geldenhuys via fpc-devel wrote: >> >> . >> . >>>>> * Automation for the fpc/build repository: when fpcsrc is tagged >>>>> with a release or RC tag, a GitLab CI pipeline automatically >>>>> pins the submodule pointers in fpc/build and applies the same >>>>> tag there, eliminating the manual submodule update step. >>>> >>>> Please, read the discussion (especially our communication with Martin >>>> F.) to get better understanding why this particular part doesn't fit the >>>> needs. I don't say that nothing might ever change in this area compared >>>> to the current state, but please note that cross-building is _not_ >>>> applicable for all FPC supported targets and thus building for all >>>> targets cannot be tested / checked by a single person or anything like >>>> that - which is why testing the release build against once created tag >>>> is not enough. >>> >>> No, but we definitely can automate it for the major platforms. >> . >> . >> >> Please, note what kind of "automation" is mentioned above > > I did, and I followed the discussion. I don't see the problem at all. > > Maybe you can explain it as you seem to understand it ? If I understand it correctly, this part of the proposal suggests replacing the current mechanism of keeping fpcbuild repository up to date (i.e. keeping the latest versions of the submodules always available in the fpcbuild repository) with one time synchronization only when a particular tag is applied to fpcbuild. That would mean that building the most up to date version for individual targets could not be tested before applying the tag (and that testing it again after any applied fixes would always need manual synchronization). And that would not be a good idea at all as far as I can tell...

1. How is this different from today ?

You will always need a manual action to 'fix' the version on the 3 repos involved. Whether that is setting a tag or changing the module branch on the .submodules file, it remains an action that needs to be done.

2. What stops people from testing using fpcbuild and whatnot without a tag being set ?

Nothing. The branch from which the release is being built is known long before any tag is set, so nothing stops people from testing that branch. To test, you need 3 SHAs: fpcbuild, source and docs. That's it. We put this in a build_id_card.txt or whatever which you can modify and you're all set to launch any build you desire.

Honestly, I don't understand all the negativity. If there is a problem, we'll fix it.

Michael.

Reply by email

Michael Van Canneyt
to Kevin Lyda: On Wed, 15 Apr 2026 at 16:45, Martin Frb via fpc-devel < Sure. Comparing to the kernel…
Kevin Lyda wrote 23 lines
On Wed, 15 Apr 2026 at 16:45, Martin Frb via fpc-devel < > wrote: > While (as outsider) I would welcome a "time"-ish based cycle, I don't > think it will work entirely. > > You mention it works for the kernel. But the kernel does not have > regression forced by other products. (well, hardware can change, but > that is more new hardware to support gets added / hardware already > supported does not suddenly stop). Sure. Comparing to the kernel isn't ideal. Comparing to another compiler would make more sense. The Go team do a major (the second number) release every 6 months and they support a large number of platforms. They do a minor release (the third number) about once a month. https://go.dev/doc/devel/release It works rather well and helps teams using Go make plans for upgrades. I've fully automated Go compiler upgrades in the past and it worked for years. I do think a full CI system that builds the compiler for all supported platforms and runs a test suite on each platform would help set folks minds at ease.

Amen to that.

Michael.

Reply by email

Marco van de Voort
to Tomas Hajny: . . . . As somebody having been involved in that role in the past (see…

Op 16-4-2026 om 00:30 schreef Tomas Hajny via fpc-devel:

Show quoted text 11 lines
As somebody having been involved in that role in the past (see https://wiki.freepascal.org/Release_Template and e.g. https://wiki.freepascal.org/Release_2.0.4), I can say for sure that the release coordinator / release master / ... certainly doesn't need to know all the details of the compiler, RTL and everything else at the same time :-) - this isn't the issue. From my experience, making sure that people who can tackle specific tasks blocking the release (should it be particular manual steps in the release building process, or fixing some issue which popped out during the build), find needed time for addressing the needed things, is the biggest obstacle.

Amen.

Reply by email

Michael Van Canneyt
to Marco van de Voort
Marco van de Voort wrote 15 lines
Op 16-4-2026 om 00:30 schreef Tomas Hajny via fpc-devel: > > As somebody having been involved in that role in the past (see > https://wiki.freepascal.org/Release_Template and e.g. > https://wiki.freepascal.org/Release_2.0.4), I can say for sure that the > release coordinator / release master / ... certainly doesn't need to know > all the details of the compiler, RTL and everything else at the same time > :-) - this isn't the issue. From my experience, making sure that people who > can tackle specific tasks blocking the release (should it be particular > manual steps in the release building process, or fixing some issue which > popped out during the build), find needed time for addressing the needed > things, is the biggest obstacle. Amen.

2 things:

It's 2026. The world has changed.

Back in 2022 that was correct reasoning. Today I will ask Claude to fix it. This will seriously reduce the need to wait.

Secondly:

For a release train I simply do not intend to wait for the non-major platforms:

The release train only waits for mac/windows/linux. If another platform is included: so much the better. If not, nothing is lost:

Having a branch/tag "release/3.2.4-os2" is not an issue, that some small fixes may be needed to build for the other platforms builds to function is acceptable, and can be done from the released branch. We only punish ourselves by requiring the exact same tag for all platforms. Remove that need and we can continue much faster.

The risk of this will be smaller if we have a good testing & builder infrastructure set up: if a non-major platform can be included in that, then the problem simply does not arise.

Here at work we exclusively use linux to build Delphi applications for 6 platforms. This is in no way different from what FPC needs to do.

Michael.

Reply by email

Tomas Hajny
to Michael Van Canneyt: 1. How is this different from today ? You will always need a manual action to 'fix' the…
Michael Van Canneyt wrote
On Thu, 16 Apr 2026, Tomas Hajny via fpc-devel wrote:

.
.

Show quoted text 17 lines
> If I understand it correctly, this part of the proposal suggests > replacing the current mechanism of keeping fpcbuild repository up to > date (i.e. keeping the latest versions of the submodules always > available in the fpcbuild repository) with one time synchronization > only when a particular tag is applied to fpcbuild. That would mean > that building the most up to date version for individual targets could > not be tested before applying the tag (and that testing it again after > any applied fixes would always need manual synchronization). And that > would not be a good idea at all as far as I can tell... 1. How is this different from today ? You will always need a manual action to 'fix' the version on the 3 repos involved. Whether that is setting a tag or changing the module branch on the .submodules file, it remains an action that needs to be done.

Today's action for getting all needed sources is "git pull --recurse-submodules" in a git clone/checkout for the particular branch.

Show quoted text 11 lines
2. What stops people from testing using fpcbuild and whatnot without a tag being set ? Nothing. The branch from which the release is being built is known long before any tag is set, so nothing stops people from testing that branch. To test, you need 3 SHAs: fpcbuild, source and docs. That's it. We put this in a build_id_card.txt or whatever which you can modify and you're all set to launch any build you desire.

My only suggestion was to prevent a step which seemed to make testing the builds more complicated. You miss my point that "3 SHAs" are a moving target during the release building testing.

Honestly, I don't understand all the negativity. If there is a problem, we'll fix it.

All the negativity? I only tried to point out specific weak points of the proposal. I left major parts without any comments (except a general statement that I appreciate Graeme's interest in moving things forward, which shouldn't be considered negative hopefully ;-) ). I tried to contribute based on my specific experience. I believe that Graeme understood it that way, BTW.

Tomas

Reply by email

Tomas Hajny
to Michael Van Canneyt: 2 things: It's 2026. The world has changed. Back in 2022 that was correct reasoning.…
Michael Van Canneyt wrote 24 lines
On Thu, 16 Apr 2026, Marco van de Voort via fpc-devel wrote: > Op 16-4-2026 om 00:30 schreef Tomas Hajny via fpc-devel: >> >> As somebody having been involved in that role in the past (see >> https://wiki.freepascal.org/Release_Template and e.g. >> https://wiki.freepascal.org/Release_2.0.4), I can say for sure that >> the release coordinator / release master / ... certainly doesn't need >> to know all the details of the compiler, RTL and everything else at >> the same time :-) - this isn't the issue. From my experience, making >> sure that people who can tackle specific tasks blocking the release >> (should it be particular manual steps in the release building >> process, or fixing some issue which popped out during the build), >> find needed time for addressing the needed things, is the biggest >> obstacle. > > Amen. 2 things: It's 2026. The world has changed. Back in 2022 that was correct reasoning. Today I will ask Claude to fix it. This will seriously reduce the need to wait.

Still, you need somebody able to prompt Claude and review the output - somebody who understands the area which need to be fixed, otherwise you'd apply changes blindly.

Show quoted text 16 lines
Secondly: For a release train I simply do not intend to wait for the non-major platforms: The release train only waits for mac/windows/linux. If another platform is included: so much the better. If not, nothing is lost: Having a branch/tag "release/3.2.4-os2" is not an issue, that some small fixes may be needed to build for the other platforms builds to function is acceptable, and can be done from the released branch. We only punish ourselves by requiring the exact same tag for all platforms. Remove that need and we can continue much faster.

That's funny. When exactly was a FPC release waiting for fixes needed for the OS/2 target? If the answer is "never", how can removing such a supposed restriction (which never existed since 1.0.0 at least) allow continuing much faster?

Show quoted text 5 lines
The risk of this will be smaller if we have a good testing & builder infrastructure set up: if a non-major platform can be included in that, then the problem simply does not arise.

I don't think that I've ever opposed that by a single word.

Here at work we exclusively use linux to build Delphi applications for 6 platforms. This is in no way different from what FPC needs to do.

If building for all FPC major targets may be performed on Linux (including Mac OS X and Windows installers) and somebody sets it up that way, I'll be happy. Building for OS/2 cannot be performed that way (at least no directly), but again, that is not an issue and never has been.

Tomas

Reply by email

Michael Van Canneyt
to Tomas Hajny: . . Today's action for getting all needed sources is "git pull --recurse-submodules" in a…
Tomas Hajny wrote 8 lines
> Honestly, I don't understand all the negativity. If there is a problem, > we'll fix it. All the negativity? I only tried to point out specific weak points of the proposal. I left major parts without any comments (except a general statement that I appreciate Graeme's interest in moving things forward, which shouldn't be considered negative hopefully ;-) ). I tried to contribute based on my specific experience. I believe that Graeme understood it that way, BTW.

Sorry, I did not mean to target you specifically.
My apologies if it came across like that, the remark was meant generally:

Every time the build or release is discussed, all I hear practically amounts to "the problems are insurmountable". That is why I term it negativity.

My sincere hope is that by putting some different structure in place, things will go smoother. If we need to let go of some practices from the past, then that should be possible.

Michael.

Reply by email

Michael Van Canneyt
to Tomas Hajny: Still, you need somebody able to prompt Claude and review the output - somebody who…
Tomas Hajny wrote 27 lines
On 2026-04-16 11:08, Michael Van Canneyt via fpc-devel wrote: > On Thu, 16 Apr 2026, Marco van de Voort via fpc-devel wrote: >> Op 16-4-2026 om 00:30 schreef Tomas Hajny via fpc-devel: >>> >>> As somebody having been involved in that role in the past (see >>> https://wiki.freepascal.org/Release_Template and e.g. >>> https://wiki.freepascal.org/Release_2.0.4), I can say for sure that the >>> release coordinator / release master / ... certainly doesn't need to know >>> all the details of the compiler, RTL and everything else at the same time >>> :-) - this isn't the issue. From my experience, making sure that people >>> who can tackle specific tasks blocking the release (should it be >>> particular manual steps in the release building process, or fixing some >>> issue which popped out during the build), find needed time for addressing >>> the needed things, is the biggest obstacle. >> >> Amen. > > 2 things: > > It's 2026. The world has changed. > > Back in 2022 that was correct reasoning. Today I will ask Claude to fix it. > This will seriously reduce the need to wait. Still, you need somebody able to prompt Claude and review the output - somebody who understands the area which need to be fixed, otherwise you'd apply changes blindly.

I always verify. We can suppose that people who create/maintain a compiler can judge the solutions the AI put in place.

I also said it 'reduces the need' - that leaves open the possibility that the AI doesn't know the problem or that the person doing the fix cannot judge.

No bullet-proof solutions exist.

Show quoted text 9 lines
> The risk of this will be smaller if we have a good testing & builder > infrastructure > set up: if a non-major platform can be included in that, then the problem > simply > does not arise. I don't think that I've ever opposed that by a single word.

I didn't say that.

Show quoted text 8 lines
> Here at work we exclusively use linux to build Delphi applications for 6 > platforms. This is in no way different from what FPC needs to do. If building for all FPC major targets may be performed on Linux (including Mac OS X and Windows installers) and somebody sets it up that way, I'll be happy. Building for OS/2 cannot be performed that way (at least no directly), but again, that is not an issue and never has been.

I never claimed it was, I'm not pointing any fingers. On the contrary, I wish to help users having regular releases and at the same time make sure the FPC devs can latch on whenever they can.

The regular release train is also supposed to help us prepare: people will know in advance, so they can prepare. By introducing a freeze period of one month (ballpark figure) it should give them some time to test, whatnot.

Michael.

Reply by email

n7800
to Marco van de Voort: Op 15-4-2026 om 17:13 schreef Tomas Hajny via fpc-devel: Current distance between fixes…
Show quoted text 13 lines
Current distance between fixes and main is about 13739 revisions. (not counting the 23 fpcbuild revisions, and the work that needs to be done for docs). Of course a MR can be more commits/revisions, but rarely more than 20. So 100 merge requests is at most 2000, and that is already a stretch, both wrt commits/mMR and  that that already assumes that are most are viable to merge and will be eventually merged. You make a fair empirical point, and I genuinely do not know the answer either. It would be worth someone running that comparison before we treat the MR backlog as the primary symptom.

This is really interesting! I analyzed the open MRs and posted the results on the bug tracker (GitLab allows for good formatting/linking/editing): https://gitlab.com/freepascal.org/fpc/source/-/work_items/41722

The first rows of the table are very small MRs that can be reviewed and resolved quickly. This could potentially help close a dozen or so table also clearly shows "abnormally" large and empty MRs — I've already submitted comments on some of them (looks like a merge/rebase error).

Later, I'll be able to compare their total size with the difference between the main/fixes branches. Frankly, I don't think "commit" is a good unit of measurement, so I counted the number of "changed lines". But the number of commits could also be taken into account.

Reply by email

Kirinn
to Michael Van Canneyt: 2 things: It's 2026. The world has changed. Back in 2022 that was correct reasoning.…

On Thu, 16 Apr 2026 11:08:30 +0200 (CEST)

Michael Van Canneyt wrote 6 lines
On Thu, 16 Apr 2026, Marco van de Voort via fpc-devel wrote: It's 2026. The world has changed. Back in 2022 that was correct reasoning. Today I will ask Claude to fix it. This will seriously reduce the need to wait.

Side clarification - I take it this means FPC is open to AI contributions? That may help break the logjam, but it may upset some people too.

~Kirinn

Reply by email

Marco van de Voort
to Michael Van Canneyt: Sorry, I did not mean to target you specifically. My apologies if it came across like…

Op 16-4-2026 om 11:29 schreef Michael Van Canneyt via fpc-devel:

Show quoted text 5 lines
Every time the build or release is discussed, all I hear practically amounts to "the problems are insurmountable". That is why I term it negativity.

To my best knowledge something like that has never been said. You might interpret failure to embrace your proposals as such, but that is not the same thing.

I have reiterated my main points for nearly 6 years now:

1. the building is currently not the bottleneck. Yes, it can be brought back from a couple of weeks for the first RC for a fixes releases, and roughly two months for a major release, but even if you could automatise that to zero (which you can't), it does not fix the current _AND_ past release gaps.    You also do not need CI infrastructure for that, quarterly attempting to build relevant targets.  The problem will always be the human factor, ALSO to investigate and take action on those CI builds.   And a fact of life is that if the infrastructure gets more complicated, less people are prepared to deep dive into it to actually do that.

2a. The major bottleneck is chiefly  branching and releasing major releases.  Waiting on features to stabilise takes ages. Those ages are waiting for people to fix it. You can try to avoid to merge unstable , but as I hope you have found out with the loadppu branch that is not always  an easy thing.

2b. Fixes have their own problems, but those are all actually getting people to move.   If there is the shared consensus to release a fixes release, and continuous merge process have occurred (as the current fixes branch , it could be done in 6-12 weeks, depending on the number of needed RCs, and the nature of the feedback on them. That is a full minor release cycle, checking all the boxes, no shortcuts.  Even with many targets beyond Tier 1 in the mix.    We currently have a 5 years minor release gap., 6-12 weeks is nothing on that scale.

3. Do changes gradually as you get experience. No big bang, no drama, no longer delays while infrastructure and policies get worked out. Start some CI work if you want on the side, follow up with high frequency, and see if it works, and people actually use it. Pace changes.

Keep in mind that in the release sense we haven't fully managed the svn/mantis to gitlab transition, 5 years after the fact. And you want to toss in more infrastructural work ?

Show quoted text 5 lines
My sincere hope is that by putting some different structure in place, things will go smoother. If we need to let go of some practices from the past, then that should be possible.

The only past practice that you could let go that saves a real bottleneck, is actually caring about what goes into a release. But then you get back to the snapshots vs release point that I made.

Automating building and branching is all fine and dandy, but the problem is to actually get content (read: merged revisions) in those branches, and your proposals are awfully quiet about that. It sets a few schedules and rules (that basically are an toothless appeal to developers "to think about the releases and do the merges", but all developers could have merged all their commits in the current situation already, so what effectively changes).

You are trying to fix a basic problem (no people actually doing something) with lots of high level rules and infrastructure that is copied from large scale projects that allows managers to track progress of the grunts. IMHO it simply doesn't make sense in a FPC volunteer context.

Reply by email

robert rozee
to Michael Van Canneyt: 2 things: It's 2026. The world has changed. Back in 2022 that was correct reasoning.…
Show quoted text 6 lines
Sent: Thursday, April 16, 2026 at 9:08 PM From: "Michael Van Canneyt via fpc-devel" Back in 2022 that was correct reasoning. Today [2026] I will ask Claude to fix it. This will seriously reduce the need to wait.

how certain can you be that Claude has not used source code it found on Microsoft's (or IBM's) website to "fix it"? or to be more precise, how sure can you be that of ALL the material used to train Claude, absolute NONE of it came from a copyrighted source? and if Claude was trained by lesser AIs, as now seems to be the fashion, how sure can you be that those lesser AIs were trained on 100% copyright free source material? and in the case of AI begets AI, begets AI, begets AI (ad infinitum) how far back should you go? there is a school of thought that it is turtles all the way down!

to be safe, you would need to ask Claude to provide source references for any solution it gives you, and then extensively verify that the those sources are (a) unencumbered by copyright, and (b) sufficient for a 'reasonable programmer' to have arrived at Claude's solution independently. in which case it may be more economic to simply employ said 'reasonable programmer' in the first place and do without Claude muddying the waters.

i'm not wanting to be negative, i'm just saying that Claude has no sense of morality, honesty, or indeed any understanding of, well, ANYTHING. it just blindly predicts the next word to emit - and is rather good at it!

cheers,
rob :-)

Reply by email

Marco van de Voort
to Unknown author: Thank you for the candid response. I would genuinely rather have direct pushback than…

Op 16-4-2026 om 00:06 schreef Graeme Geldenhuys via fpc-devel:

Show quoted text 12 lines
--- 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.

Show quoted text 10 lines
--- 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.

Show quoted text 9 lines
--- 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.

Show quoted text 9 lines
--- 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.

Show quoted text 7 lines
--- 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.

Show quoted text 11 lines
--- 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.

Show quoted text 6 lines
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 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.

Reply by email

Graeme Geldenhuys
to Kirinn: On Thu, 16 Apr 2026 11:08:30 +0200 (CEST) Side clarification - I take it this means FPC…
Side clarification - I take it this means FPC is open to AI contributions? That may help break the logjam, but it may upset some people too.

It's a doubled edged sword.

Yes it's great to get things done quickly. But flooding the FPC team with even more MRs at this time, seems to be a slippery slope.

On the bright side, AI is great at doing what most developers hate. Writing tests or letting it do TDD. In such cases MRs are much easier to review. More test cases validating logic is a good thing long term.

Regards,
Graeme

Reply by email

Unknown author
to Graeme Geldenhuys: It's a doubled edged sword. Yes it's great to get things done quickly. But flooding the…
Graeme Geldenhuys wrote 5 lines
> Side clarification - I take it this means FPC is open to AI contributions? > That may help break the logjam, but it may upset some people too. > It's a doubled edged sword.

agreed... the following link and similar articles may help... or confuse... or frustrate...

https://www.quippd.com/writing/2026/04/08/ai-code-is-hollowing-out-open-source-and-maintainers-are-looking-the-other-way.html

NOTE: No off-list assistance is given without prior approval. *Please keep mailing list traffic on the list where it belongs!*

Reply by email

Michael Van Canneyt
to Graeme Geldenhuys: It's a doubled edged sword. Yes it's great to get things done quickly. But flooding the…
Graeme Geldenhuys wrote 14 lines
> Side clarification - I take it this means FPC is open to AI contributions? > That may help break the logjam, but it may upset some people too. > It's a doubled edged sword. Yes it's great to get things done quickly. But flooding the FPC team with even more MRs at this time, seems to be a slippery slope. On the bright side, AI is great at doing what most developers hate. Writing tests or letting it do TDD. In such cases MRs are much easier to review. More test cases validating logic is a good thing long term.

If I see a MR that has test cases included, I'll be more inclined to merge, this is for sure.

Whether it was generated by AI or not is entirely irrelevant as far as I am concerned. In the end it is my responsability anyway if I approve the MR.

That's a fundamental rule for me:
The human doing the commit is the one responsible.

(Which is why I never let Claude commit anything)

Michael.

Reply by email

Marco van de Voort
to Michael Van Canneyt

Op 17-4-2026 om 11:23 schreef Michael Van Canneyt via fpc-devel:

Show quoted text 13 lines
If I see a MR that has test cases included, I'll be more inclined to merge, this is for sure. Whether it was generated by AI or not is entirely irrelevant as far as I am concerned. In the end it is my responsability anyway if I approve the MR. That's a fundamental rule for me: The human doing the commit is the one responsible. (Which is why I never let Claude commit anything)

The MR submitter also has responsibility. The bugtracker is also an AI validation service.

Reply by email

Michael Van Canneyt
to Marco van de Voort
Marco van de Voort wrote 15 lines
Op 17-4-2026 om 11:23 schreef Michael Van Canneyt via fpc-devel: > If I see a MR that has test cases included, I'll be more inclined to merge, > this is for sure. > > Whether it was generated by AI or not is entirely irrelevant as far as I am > concerned. In the end it is my responsability anyway if I approve the MR. > > That's a fundamental rule for me: The human doing the commit is the one > responsible. > > (Which is why I never let Claude commit anything) > The MR submitter also has responsibility. The bugtracker is also an AI validation service.

Please explain, I don't get your meaning ?

Michael.

Reply by email

Michael Van Canneyt
to Marco van de Voort: Op 16-4-2026 om 11:29 schreef Michael Van Canneyt via fpc-devel: To my best knowledge…
Marco van de Voort wrote 12 lines
Automating building and branching is all fine and dandy, but the problem is to actually get content (read: merged revisions) in those branches, and your proposals are awfully quiet about that. It sets a few schedules and rules (that basically are an toothless appeal to developers "to think about the releases and do the merges", but all developers could have merged all their commits in the current situation already, so what effectively changes). You are trying to fix a basic problem (no people actually doing something) with lots of high level rules and infrastructure that is copied from large scale projects that allows managers to track progress of the grunts. IMHO it simply doesn't make sense in a FPC volunteer context.

It does: By better structuring - for example forcing the use of a MR - we can assign a milestone when accepting MR's and we'll have an exact list of MRs to go to fixes as well as devel.

Merging to devel and/or fixes branch is then much easier: it already groups commits that belong together.

By forcing a little more work upfront, we reduce the work later on, and we'll not be stuck with a bazillion commits that no-one knows how to handle.

As I understand it, many people use the fixes_x branch, so it'll also be tested a lot sooner.

We can of course discuss "good practices" till doomsday come, but unless we try something else we'll never know whether it works.

Michael.

Reply by email

Marco van de Voort
to Michael Van Canneyt

Op 17-4-2026 om 11:57 schreef Michael Van Canneyt:

Show quoted text 5 lines
It does: By better structuring - for example forcing the use of a MR - we can assign a milestone when accepting MR's and we'll have an exact list of MRs to go to fixes as well as devel.

/So much/ administrative overhead. And then we still have to find out if that concept works at all in the FPC context.

I would be against that.

Merging to devel and/or fixes branch is then much easier: it already groups commits that belong together.

Only the ones from that feature. But the next series of commits might built on this, creating dependencies again.

We used such philosophy in a previous job. No merge requests, but with a ticketing system were the sourcesafe and  later SVN revs were annotated. Of course merging and the like were not single mouse clicks, but the principles were the same.

But  this worked because nearly all work was daily maintenance of business rules and minor improvements/enhancement in an enormous mountain of business code.   This was enabled by the fact that most developers had their own specialism, and mutation rate of the shared core was very low, and even then not very intense. Features rarely touched each other, and if it did they were usually from the same developer.

Then you get indeed a kind of perfect independent set of features that you can mix and mash, but I can't imagine to see this fly for the compiler, not even for most of the rest.  Just see the constant restructuring that is going on (Nikolay's msg of today).

And the non compiler situation  is not that big a problem. I mostly do the merging on the side when I'l monitoring some remote sites.

We can of course discuss "good practices" till doomsday come, but unless we try something else we'll never know whether it works.

Well, maybe we shouldn't try then directly on the top level. Find some subsystem that you manage (pas2js, fcl-web or something like it) and accept only merge requests, and see how it goes for a major cycle.

No big bang scenarios as we had for the gitlab migration please, we have all seen what that leads to.

Reply by email

Marco van de Voort
to Michael Van Canneyt: Please explain, I don't get your meaning ? Michael.

Op 17-4-2026 om 11:44 schreef Michael Van Canneyt via fpc-devel:

Show quoted text 6 lines
>> >> > The MR submitter also has responsibility. The bugtracker is also an > AI validation service. Please explain, I don't get your meaning ?

The final committing developer is only the last line of checks (AI or otherwise). It should be expected that the submitter of the MR did as much due diligence as possible.

Reply by email

Michael Van Canneyt
to Marco van de Voort: Op 17-4-2026 om 11:57 schreef Michael Van Canneyt: /So much/ administrative overhead. And…
Marco van de Voort wrote 9 lines
Op 17-4-2026 om 11:57 schreef Michael Van Canneyt: > > It does: By better structuring - for example forcing the use of a MR - > we can assign a milestone when accepting MR's and we'll have an exact > list of MRs to go to fixes as well as devel. > /So much/ administrative overhead. And then we still have to find out if that concept works at all in the FPC context.

There is no administrative overhead. I'mm not proposing to work with epics, stories and whatnot.

No: You create a branch, develop your thing, and push. That's it. Press a button to merge.

The difference with before: we have a good record that's easier to handle.

And if we find it really does not work, we switch back. It's that simple.

I would be against that.

No surprise there.

We see the world very differently. As far as I am concerned, the change to gitlab has only been for the good. The number of merged merge requests is a testimony to that.

Your last words in your mail clearly indicate you have a different view of that.

Probably a matter of glass half full/half empty.

Michael.

Reply by email

Michael Van Canneyt
to Marco van de Voort: Op 17-4-2026 om 11:44 schreef Michael Van Canneyt via fpc-devel: The final committing…
Marco van de Voort wrote 12 lines
Op 17-4-2026 om 11:44 schreef Michael Van Canneyt via fpc-devel: >>> >>> >> The MR submitter also has responsibility. The bugtracker is also an AI >> validation service. > > Please explain, I don't get your meaning ? The final committing developer is only the last line of checks (AI or otherwise). It should be expected that the submitter of the MR did as much due diligence as possible.

No argument there:

Which is why I said that a testcase increases confidence in the MR.

Michael.

Reply by email

Martin Frb
to Michael Van Canneyt: There is no administrative overhead. I'mm not proposing to work with epics, stories and…
Michael Van Canneyt wrote 22 lines
On Fri, 17 Apr 2026, Marco van de Voort via fpc-devel wrote: > > Op 17-4-2026 om 11:57 schreef Michael Van Canneyt: >> >> It does: By better structuring - for example forcing the use of a MR - >> we can assign a milestone when accepting MR's and we'll have an exact >> list of MRs to go to fixes as well as devel. >> > /So much/ administrative overhead. And then we still have to find out > if that concept works at all in the FPC context. There is no administrative overhead. I'mm not proposing to work with epics, stories and whatnot. No: You create a branch, develop your thing, and push. That's it. Press a button to merge. The difference with before: we have a good record that's easier to handle.

Maybe I am missing something, but this leaves a big part of Marco's concern standing.

1) It does not address anything that isn't in a branch. I would expect many bug fixes are one or 2 commits and aren't going via a separate branch (let alone an MR).
Then you still need a 2nd list to track "bug fix" commits?

2) If anything else needs to be merged, how much of that is today developed in a branch (and gets an MR)?
I.e. how much overhead for all of the FPC team to move any "potential merge" work into branches upfront, and create MR for those?

----------
But the core idea (if that does not already happen?):    When a commit makes it into main, decide then and there if that commit may (maybe) go into any fixes branch. (does not cover any dependencies, just the commits that of their own accord want to be in fixes).

How to document that decision is 2ndary.

Reply by email

Unknown author
to Michael Van Canneyt: It does: By better structuring - for example forcing the use of a MR - we can assign a…
Michael Van Canneyt wrote 10 lines
Merging to devel and/or fixes branch is then much easier: it already groups commits that belong together. By forcing a little more work upfront, we reduce the work later on, and we'll not be stuck with a bazillion commits that no-one knows how to handle. As I understand it, many people use the fixes_x branch, so it'll also be tested a lot sooner.

I'm glad somebody gets it!!!

General observation:
From an outsider’s perspective, it appears there was a migration from Subversion to Git without a corresponding shift in workflow. Many team members seem stuck in a "Subversion mentality" -- the idea that branches are expensive or merging is difficult -- none of which applies to Git.

Unfortunately, the FPC project seems to have stalled since the migration, and there is no clear consensus on how to properly leverage these new [2026] tools. Given that, I don't believe there is much more I can contribute at this stage. I’ll stay on the sidelines for now and hope for the best. And yes, I'm still happy to triage/review Merge Requests where I can. Could we at least get some triage labels added to the fpcsource project, as I suggested in the proposal?

Regards,
Graeme

Reply by email

Michael Van Canneyt
to Martin Frb: Maybe I am missing something, but this leaves a big part of Marco's concern standing. 1)…
Martin Frb wrote 31 lines
On 17/04/2026 14:11, Michael Van Canneyt via fpc-devel wrote: > > > On Fri, 17 Apr 2026, Marco van de Voort via fpc-devel wrote: > >> >> Op 17-4-2026 om 11:57 schreef Michael Van Canneyt: >>> >>> It does: By better structuring - for example forcing the use of a MR - >>> we can assign a milestone when accepting MR's and we'll have an exact >>> list of MRs to go to fixes as well as devel. >>> >> /So much/ administrative overhead. And then we still have to find out >> if that concept works at all in the FPC context. > > There is no administrative overhead. I'mm not proposing to work with > epics, > stories and whatnot. > > No: You create a branch, develop your thing, and push. That's it. > Press a button to merge. > > The difference with before: we have a good record that's easier to handle. Maybe I am missing something, but this leaves a big part of Marco's concern standing. 1) It does not address anything that isn't in a branch. I would expect many bug fixes are one or 2 commits and aren't going via a separate branch (let alone an MR). Then you still need a 2nd list to track "bug fix" commits?

It's just a label to apply to a MR: backported.
You filter closed MRs (possibly 'milestone) with not backported -> you have your list.

2) If anything else needs to be merged, how much of that is today developed in a branch (and gets an MR)? I.e. how much overhead for all of the FPC team to move any "potential merge" work into branches upfront, and create MR for those?

git branch x
...work...
git commit
git push

ctrl-click link which gitlab presents you(!)
click OK
click 'set-to-auto-merge'

Relax while gitlab works.

I doubt the 3 extra clicks will make the bulk of the work.

Running the testsuite asks several minutes, so plenty of time to prepare the MR. (Florian's own words, BTW :-))

Show quoted text 7 lines
---------- But the core idea (if that does not already happen?):    When a commit makes it into main, decide then and there if that commit may (maybe) go into any fixes branch. (does not cover any dependencies, just the commits that of their own accord want to be in fixes).

-> hence the milestone. when you create the MR, you decide if it is 'merge-worthy' and add the milestone. Later on you have 99% of your list for free.

Like I said: a little upfront work to make life easier down the road.

We use gitlab only for a small part what it offers. The only gain we have today over svn is:

- MR (easier for others to contribute)

- CI/CD (half useful, we have our own testsuite)

All I'm proposing is that we use it a little more what it is intended for.

Will it cover all cases ? No. No system ever will.

Will it make life easier? Yes.

Michael.

Reply by email

Nikolay Nikolov
to Unknown author: And yet it works flawlessly on 10,000s of other open source projects (big and small). I…
Graeme Geldenhuys wrote 7 lines
On 2026-04-17 13:00, Marco van de Voort via fpc-devel wrote: > And then we still have to find out if that concept works at all in > the FPC context. And yet it works flawlessly on 10,000s of other open source projects (big and small). I simply don't know why you think FPC is so special that it will not work here.

FPC is special in the regard that it is a compiler and that it has an extremely high coupling between compiler and rtl units. So, changes are very interdependent. It's hard to separate them and treat them as independent, because they're simply not. This doesn't apply to most of the packages. That's why there's extra effort on keeping the compiler's history linear, avoiding merge commits and running regular automated tests on many platforms, so that bugs are caught early and so that it is easy to find the single commit that caused a bug via "git bisect". I've worked commercially in my last job on a compiler for a specialized language, called "Noir" that used a "squash" all merge request policy and it didn't work well with regards to stability and ease of resolving merge conflicts. But it was a "move fast and break things" kind of startup mentality, so they didn't care much about stability at this stage.

Nikolay

Reply by email

Michael Van Canneyt
to Michael Van Canneyt: It's just a label to apply to a MR: backported. You filter closed MRs (possibly…
Michael Van Canneyt wrote 10 lines
> > ---------- > But the core idea (if that does not already happen?): >    When a commit makes it into main, decide then and there if that commit > may (maybe) go into any fixes branch. (does not cover any dependencies, > just the commits that of their own accord want to be in fixes). -> hence the milestone. when you create the MR, you decide if it is 'merge-worthy' and add the milestone. Later on you have 99% of your list for free.

I was wondering why there is so much resistance to this idea, why people think it is cumbersome.

There is a detail that is maybe unknown to erstwhile SVN users:

When you look at a MR that was merged to devel, there is a link 'Cherry pick' in the MR gitlab page. This will let you merge all commits of the MR to another branch (fixes or any other).

This literally lets you merge a MR to another branch with some clicks. No need for checkouts, merging manually, pushing etc.

It can be done when a MR was just merged to devel, or can be done later on.

In case of conflicts, it's of course a little more work, but this has always been so.

But in the bulk of cases, it's just a couple of clicks and you're done.

Michael.

Reply by email

Martin Frb
to Michael Van Canneyt: It's just a label to apply to a MR: backported. You filter closed MRs (possibly…
Michael Van Canneyt wrote 8 lines
I doubt the 3 extra clicks will make the bulk of the work. Running the testsuite asks several minutes, so plenty of time to prepare the MR. (Florian's own words, BTW :-))

Depends what client you use. I use commantline and tortoise. And with the latter I frequently close the commit confirm window to fast, and then have to manually browse to the "I just pushed a new branch" ... Annoys the heck out of me

Will it make life easier? Yes.

Well, in the end, that is for all of the core team members to decide.  I am an outsider...

I am very happy with git. But I would likely not use MR (or "milestone" / tag) to track what should get merged.

To start with (but that would only matter if I had to do any part of that merging), those are avail only via the web interface. I then have to go there and either
- collect them, so I can do merging locally
- create another MR, to merge online to the fixes branch. I prefer doing that with my local git client....

Of course, I don't know who will do that job, and if they will prefer doing it the online way.

Reply by email

Michael Van Canneyt
to Nikolay Nikolov: FPC is special in the regard that it is a compiler and that it has an extremely high…
Nikolay Nikolov wrote 14 lines
On 4/17/26 4:32 PM, Graeme Geldenhuys via fpc-devel wrote: > On 2026-04-17 13:00, Marco van de Voort via fpc-devel wrote: >> And then we still have to find out if that concept works at all in the FPC >> context. > > And yet it works flawlessly on 10,000s of other open source projects (big > and small). I simply don't know why you think FPC is so special that it > will not work here. FPC is special in the regard that it is a compiler and that it has an extremely high coupling between compiler and rtl units. So, changes are very interdependent. It's hard to separate them and treat them as independent, because they're simply not.

So ? How is the proposed flow at odds with this ?

I would think rather the opposite: by doing a MR you ensure related commits remain together.

Michael.

Reply by email

Martin Frb
to Michael Van Canneyt: I was wondering why there is so much resistance to this idea, why people think it is…
Michael Van Canneyt wrote 37 lines
On Fri, 17 Apr 2026, Michael Van Canneyt via fpc-devel wrote: >> >> ---------- >> But the core idea (if that does not already happen?): >>    When a commit makes it into main, decide then and there if that >> commit may (maybe) go into any fixes branch. (does not cover any >> dependencies, just the commits that of their own accord want to be >> in fixes). > > -> hence the milestone. when you create the MR, you decide if it is > 'merge-worthy' and add the milestone. Later on you have 99% of your > list for > free. I was wondering why there is so much resistance to this idea, why people think it is cumbersome. There is a detail that is maybe unknown to erstwhile SVN users: When you look at a MR that was merged to devel, there is a link 'Cherry pick' in the MR gitlab page. This will let you merge all commits of the MR to another branch (fixes or any other). This literally lets you merge a MR to another branch with some clicks. No need for checkouts, merging manually, pushing etc. It can be done when a MR was just merged to devel, or can be done later on. In case of conflicts, it's of course a little more work, but this has always been so. But in the bulk of cases, it's just a couple of clicks and you're done.

Well, see my other mail...

But lets differentiate.

If I merged a contributed MR... And if I did that online... I have no issue to use the web to cherry pick it to fixes too. (some MR I prefer to pull, and merge locally, and test (or add commits) before I push).

If I do my own commits (even If it was decided that every change, even single commits changes would go through a branch), then I would want to merge those branches locally.
Going to the web interface requires me to involve an additional tool, switching to my browser, needing my browser to go to another tab,  ... It may just be a few clicks. Its still less if I do it locally.

Also, given that I may have more than one branch in the works (that happens, even now, when I rebase everything on top of main), then switching tools adds a danger of having the wrong branch in the tool, and acting on the wrong branch.
That has happened locally too. But locally that is not an issue (well, its time lost, but all else recoverable). Locally I have the reflog, and can rewrite everything to what it should be.

--------------------
further doing my fixes-merges locally has advantages when I defer pushing them, wanting to wait if any issues are reported on main.

I then just have un-pushed commits on my local fixes branch, and rebase them when needed. But I have them all in one place, and ready to push. I find that by miles more convenient than having to search gitlab for MR that
- are mine
- merged to main
- milestoned for fixes
- not yet in fixes

But on that last bit, I don't know, maybe gitlab has some bits to ease that (unlikely it will be as simple as my "git log fixes", but still.

I have to say, after all I am more of a git guy, than a gitlab guy.

Reply by email

Nikolay Nikolov
to Michael Van Canneyt: So ? How is the proposed flow at odds with this ? I would think rather the opposite: by…
Michael Van Canneyt wrote 23 lines
On Fri, 17 Apr 2026, Nikolay Nikolov via fpc-devel wrote: > > On 4/17/26 4:32 PM, Graeme Geldenhuys via fpc-devel wrote: >> On 2026-04-17 13:00, Marco van de Voort via fpc-devel wrote: >>> And then we still have to find out if that concept works at all in >>> the FPC context. >> >> And yet it works flawlessly on 10,000s of other open source projects >> (big and small). I simply don't know why you think FPC is so special >> that it will not work here. > > FPC is special in the regard that it is a compiler and that it has an > extremely high coupling between compiler and rtl units. So, changes > are very interdependent. It's hard to separate them and treat them as > independent, because they're simply not. So ? How is the proposed flow at odds with this ? I would think rather the opposite: by doing a MR you ensure related commits remain together.

I'm not sure I understand the question. Graeme's proposal includes squashing commits. Squashing rewrites history and converts many commits into one. Currently, the "eliminate_global_state" branch contains 1080 commits. All of these will be merged into one. Then, if it turns out this breaks some obscure platform in a weird way, we'll have an "all or nothing" approach - revert everything, or keep it broken. You won't have any idea which of these 1080 fine grained commits really caused this bug.

Or, are you talking about something else?

The problem with git is that there are so many workflows possible and that no two developers can agree which subset of it to use.

Nikolay

Reply by email

Michael Van Canneyt
to Martin Frb: Well, see my other mail... But lets differentiate. If I merged a contributed MR... And if…
Martin Frb wrote
> > But in the bulk of cases, it's just a couple of clicks and you're done. Well, see my other mail...

We can of course all stick desperately to the old ways. I myself will have to change my ways, I rarely make branches today.

But if this leads to more frequent releases, I'll be happy to do it.

If however no-one wishes to change their ways, then we can stop discussing, and simply keep pushing commits, not bother about frequent releases, quality, and whatnot.

Michael.

Reply by email

Michael Van Canneyt
to Nikolay Nikolov: I'm not sure I understand the question. Graeme's proposal includes squashing commits.…
Nikolay Nikolov wrote 28 lines
On 4/17/26 5:10 PM, Michael Van Canneyt via fpc-devel wrote: > > > On Fri, 17 Apr 2026, Nikolay Nikolov via fpc-devel wrote: > >> >> On 4/17/26 4:32 PM, Graeme Geldenhuys via fpc-devel wrote: >>> On 2026-04-17 13:00, Marco van de Voort via fpc-devel wrote: >>>> And then we still have to find out if that concept works at all in the >>>> FPC context. >>> >>> And yet it works flawlessly on 10,000s of other open source projects (big >>> and small). I simply don't know why you think FPC is so special that it >>> will not work here. >> >> FPC is special in the regard that it is a compiler and that it has an >> extremely high coupling between compiler and rtl units. So, changes are >> very interdependent. It's hard to separate them and treat them as >> independent, because they're simply not. > > So ? How is the proposed flow at odds with this ? > > I would think rather the opposite: by doing a MR you ensure related commits > remain together. I'm not sure I understand the question. Graeme's proposal includes squashing commits.

That part I would definitely not take, we're agreed on that.

But this does not mean we should reject everything he proposes.

Michael.

Reply by email

Martin Frb
to Michael Van Canneyt: We can of course all stick desperately to the old ways. I myself will have to change my…
Michael Van Canneyt wrote 12 lines
On Fri, 17 Apr 2026, Martin Frb via fpc-devel wrote: >> >> But in the bulk of cases, it's just a couple of clicks and you're done. > > Well, see my other mail... We can of course all stick desperately to the old ways. I myself will have to change my ways, I rarely make branches today.

My mail wasn't really about "not wanting to use branches" => I do that a lot, at least locally.

If I was affected (if I were working on fpc), then I would have to say:
- I prefer a largely linear commit history. My personal preference (but open wide to adaption) is to have
   3rd party in a branch
   team-commits mainly linear, but down to every team members preference.   => in either case, as long as branches are rebased before merging (none-FF merges) then that is linear enough.

I do make a difference between
- git (and all that git allows us to do)
- GitLab
The latter is less important to me. It's a means to enable git.

Also, the conclusion of "sticking to the old way" just because I see one of a thousand possible new ways as maybe not that great => that conclusion seems a bit much...

-----------------------
For the rest, I don't know the full current way. I don't know the preferences of everyone in the the team....

IMHO the first is to decide (or establish, if the current is good) the flow. (And maybe you have that, and I - as outsider - miss that). The tools can then be found to match the flow.

Of course proposed flows can be based on available tools => that makes sense. But at the same times, flows can be proposed to see if the tooling exists.

About the flow.

1) There are 2 type of commits that need merging/cherry picking to fixes a) those that carry fixes or changes that in their own warrant the pick. b) those that are needed to enable the above (dependencies / former changes that the "a" commits are based on)
=> the 2nd "b" group can be mostly ignored, as decisions on it are dictated by "a"

2) When (and by whom) are the decisions made what is a "a" commit (not the merging / the decision).
If the merging is later, then tooling is needed to record the decision (can be done)

3) When are the merges/pick done, and by whom. Are they required to be done in particular order?

4) any "after work" e.g. tests?

I would sort of except that "2" is done ASAP. In most cases (except where fixes are an unknown side effect) that would be at the time of pushing the commit (and by the person pushing it).

"3" There are arguments for either ASAP (more testing in fixes) or after-some-time (waiting for feedback from usage in main branch first).

-----------------------

The other big question (that is always forgotten in those discussion). Who? Who does it.

My opinion: Everyone. Everyone takes care that their own commits (if applicable "1a") are picked.
Unless, some one volunteered.

And actually that "everyone" works fairly well for Lazarus, IMHO. With the addition, that for the few that aren't comfortable, their are others who help them. (based on just publishing the sha1 that should be done)

-----------------------
If the answer to "3" => "When" is asap, then everything that should go into fixes, is picked at the very moment that its is decided that it should. No need to tag it in any way as "needs to be picked".

If the answer is later, then you need a way to tag that. Using MR is not the only way to do that.

Reply by email

Marco van de Voort
to Unknown author: And yet it works flawlessly on 10,000s of other open source projects (big and small). I…

Op 17-4-2026 om 15:32 schreef Graeme Geldenhuys via fpc-devel:

Show quoted text 6 lines
> And then we still have to find out if that concept works at all in > the FPC context. And yet it works flawlessly on 10,000s of other open source projects (big and small). I simply don't know why you think FPC is so special that it will not work here.

Yeah, the 100000 lemmings can't be wrong argument.

Reply by email

robert rozee
to Unknown author: I'm glad somebody gets it!!! General observation: From an outsider’s perspective, it…

Sent: Saturday, April 18, 2026 at 1:30 AM
From: "Graeme Geldenhuys via fpc-devel"

Unfortunately, the FPC project seems to have stalled since the migration

i'd like to look at this from a different direction by exploring a question:

assumption:
-----------
FPC 3.2.2 has been around, unchanged, for 4 or 5 years. in that time it is fair to say that pretty much all of the bugs in 3.2.2 have been discovered and, in one way or another, documented. admittedly, some of that 'documentation' is in the form of patches that currently sit in limbo. but, nonetheless, a record exists.

observation:
------------
i've been using FPC 3.2.2 for much of the duration that this specific version has existed, and where needsbe i have managed to avoid, work around, or develop my own patches for bugs that affect ME. notably for me was my patch to fix the incorrect handling of GLIBC symbol versions (erroneously assigning the newest symbol version discoverable on the build machine to code that was written against much earlier prototypes). but most importantly - i have been able to make FPC 3.2.2 work, for me, just fine; i have never found FPC 3.2.2 to be lacking.

question:
---------
why on earth would anyone want to use any build of FPC other than 3.2.2? for the vast majority of users it works fine. ok, not so great for apple users, but then they are off on their own little journey with FPC 3.2.4, and i wish them the very best of luck in their endeavors.

has anyone ever found themselves in a position where it has NOT been possible for them to create and compile a program to solve any specific problem using FPC 3.2.2? ie, are there classes of computational problem for which FPC3.2.2 is incapable of being used to find a solution?

suggestion:
-----------
why not ask Claude to create a treatise detailing all the BUGS that it can identify through examining the source code differences between FPC 3.2.2 and the 4/5 years of subsequent code changes on GitLab? this would provide a blueprint of fixes that could be applied to create a short-term successor to the HIGHLY successful FPC 3.2.2. or it could be used as an errata document to warn users of 'things to avoid'.

one could also ask Claude to create a second treatise, detailing all the new FEATURES that have been added since FPC 3.2.2. this would then provide a blueprint to what enhancements could be considered for any future FPC 4.

with Claude doing the majority of the work (and writing NO code) the main thing required to create these treatises would be a financial contribution from the FPC Foundation to fund Claude's efforts. NO DEVELOPER INPUT REQUIRED.

could this be a way forward that no one would object to?

cheers,
rob :-)

Reply by email

Marco van de Voort
to Unknown author: I'm glad somebody gets it!!! General observation: From an outsider’s perspective, it…

Op 17-4-2026 om 15:30 schreef Graeme Geldenhuys via fpc-devel:

Show quoted text 8 lines
General observation: From an outsider’s perspective, it appears there was a migration from Subversion to Git without a corresponding shift in workflow. Many team members seem stuck in a "Subversion mentality" -- the idea that branches are expensive or merging is difficult -- none of which applies to Git.

First, keep in mind that nearly everything I do is single commits.

In tortoisesvn:

- mark 6 repositories in explorer and click update.  All repositories will be updated.

In tortoisegit:

-  pull, stash window, rebase, stash pop prompt per repository.

Just with the update you are already a two dozen of clicks in.

Show quoted text 8 lines
Unfortunately, the FPC project seems to have stalled since the migration, and there is no clear consensus on how to properly leverage these new [2026] tools. Given that, I don't believe there is much more I can contribute at this stage. I’ll stay on the sidelines for now and hope for the best. And yes, I'm still happy to triage/review Merge Requests where I can. Could we at least get some triage labels added to the fpcsource project, as I suggested in the proposal?

Always the my way or the highway attitude, all along the way implying the opponents are Neanderthals for their efforts to engage with you. Typical.

Reply by email

Michael Van Canneyt
to Martin Frb: My mail wasn't really about "not wanting to use branches" => I do that a lot, at least…
Martin Frb wrote 16 lines
On 17/04/2026 16:30, Michael Van Canneyt via fpc-devel wrote: > > > On Fri, 17 Apr 2026, Martin Frb via fpc-devel wrote: > >>> >>> But in the bulk of cases, it's just a couple of clicks and you're done. >> >> Well, see my other mail... > > > We can of course all stick desperately to the old ways. I myself will > have to change my ways, I rarely make branches today. My mail wasn't really about "not wanting to use branches" => I do that a lot, at least locally.

In your case its your reluctance to use the web:

Because the tooling is in the web.

Show quoted text 8 lines
If I was affected (if I were working on fpc), then I would have to say: - I prefer a largely linear commit history. My personal preference (but open wide to adaption) is to have    3rd party in a branch    team-commits mainly linear, but down to every team members preference.   => in either case, as long as branches are rebased before merging (none-FF merges) then that is linear enough.

Rebase is the rule in FPC. It's independent of the discussion.

Show quoted text 5 lines
I do make a difference between - git (and all that git allows us to do) - GitLab The latter is less important to me. It's a means to enable git.

That is where we have different visions.

If I just wanted git, I would not need gitlab.
gitea (or whatever it is called today) does the job.

There were 2 reasons for switching to gitlab SaaS:
- No maintenance
- The tooling we get.

If you don't want to use the tooling of gitlab, there is no point in discussing, as that is a given for me: setting up some system beside gitlab which does what gitlab does, is IMO utterly pointless if you're already using gitlab.

However, if you insist on using a local tool (command-line or not): no problem. gitlab cli (glab) exists already. You can use that to handle merge requests without ever touching the web interface.

Gitlab is API first, so If this is your wish, I'll even write a lazarus UI tool or FPC command-line tool to create the MR, merge it, all in one go.

If that makes your (and other people's) life easier or more comfortable in a MR-based workflow, I am prepared to do the work.

It will not take me an hour to create it, even without AI.

The human side (decisions) remains the same whatever the tooling, but can we get at least the tooling discussion out of the way: i.e. to use MRs for easier tracking.

Michael.

Reply by email

Martin Frb
to Marco van de Voort: Op 17-4-2026 om 15:30 schreef Graeme Geldenhuys via fpc-devel: First, keep in mind that…
Marco van de Voort wrote 23 lines
Op 17-4-2026 om 15:30 schreef Graeme Geldenhuys via fpc-devel: > > > General observation: > From an outsider’s perspective, it appears there was a migration from > Subversion to Git without a corresponding shift in workflow. Many > team members seem stuck in a "Subversion mentality" -- the idea that > branches are expensive or merging is difficult -- none of which > applies to Git. First, keep in mind that nearly everything I do is single commits. In tortoisesvn: - mark 6 repositories in explorer and click update.  All repositories will be updated. In tortoisegit: -  pull, stash window, rebase, stash pop prompt per repository. Just with the update you are already a two dozen of clicks in.

This mixes 2 issues (even though they can force each other in some cases).

The ability to update many at once => that is a simple script (batch script on windows).
Of course that fails, the moment you have conflicts in the rebase....

But my advice here would be to at least have a script that either
- remote updates all repos
- remote update and then "git.exe merge --ff-only"

The latter means, if you are on a tracking branch, and it can fast forward, then it will.
Otherwise you are left were you are now => resolve each rebase... (or rebase later, and keep working on your local branch as it is now)

In my batch I have (for each repo)
"C:\Program Files\Git\bin\sh.exe" --login -i -c 'cd B:/lazarus_gitlab ; git.exe remote update ; git.exe merge --ff-only'

The 2nd is the need to rebase. (after pull / including when you must pull before push)
SVN simple forced that. It allowed you to push, and merged on the server => and you never knew if the result was good or not (well in 99.999% it was good, so that flaw didn't matter).
So, if there was a conflict, even with svn you couldn't just  push (commit) => you had to pull (update) first and resolve it. So resolving isn't entirely new.

Btw, my tortoise will => when push fails => offer me on one click to
- pull and rebase.
I think that got enabled when I changed the config for pull.  (from my conf file)

[pull]
    ff = only
    rebase = true

I still have to confirm stashing (their should be autostash, but I haven't tried).

But yes, the extra pull is still more clicks than in SVN.

Reply by email

Marco van de Voort
to Martin Frb: Maybe I am missing something, but this leaves a big part of Marco's concern standing. 1)…

Op 17-4-2026 om 14:42 schreef Martin Frb via fpc-devel:

Show quoted text 18 lines
> > There is no administrative overhead. I'mm not proposing to work with > epics, > stories and whatnot. > > No: You create a branch, develop your thing, and push. That's it. > Press a button to merge. > > The difference with before: we have a good record that's easier to > handle. Maybe I am missing something, but this leaves a big part of Marco's concern standing. 1) It does not address anything that isn't in a branch. I would expect many bug fixes are one or 2 commits and aren't going via a separate branch (let alone an MR). Then you still need a 2nd list to track "bug fix" commits?

I think Nikolay's comments about history are even more important. But yes, some relief of the insanity to let single commits bypass this mandate would be helpful.

And if not, then I think the onus should be on the people that request this. Since GIT (lab)is so advanced and flexible, we probably could engineer the workflow that way. So have the front main branch where simply every commit goes in, and then another branch "shadowmain" trailing it where the git overlords can squash and rearrange the input however they like?

Works for my case, but unfortunately not for Nikolay's.

2) If anything else needs to be merged, how much of that is today developed in a branch (and gets an MR)? I.e. how much overhead for all of the FPC team to move any "potential merge" work into branches upfront, and create MR for those?

Currently even the main compiler developers afaik mostly commit directly., not via MR. I (almost?) never see a merge requests for a core developer in the list.

 Merge requests are (gut feeling) 50% by a handful of regular 3rd party committers and lazarus devels (the people that would rather quickly have gotten limited SVN access in the old days), and the other 50%, smaller requests by random 3rd party developers.

MRs are mostly a good thing, but as said I think the value of it is vastly overrated in the current situation, and there are dangers (people working very long, and then submitting huge requests for you to sort out).  Upping the requirements for merge requests will only increase the number of branches that are stalled because the submitter doesn't react or doesn't care. Invalidating the whole process.

Show quoted text 6 lines
---------- But the core idea (if that does not already happen?):    When a commit makes it into main, decide then and there if that commit may (maybe) go into any fixes branch. (does not cover any dependencies, just the commits that of their own accord want to be in fixes).

That invalidates the gestation time in a public branch before merging to a stable branch. At least a couple weeks should be inserted.

But that is maybe not that different from how it goes now.  As long as there is a record of it (mergelogs or MR (main->fixes) list). The maintainers will let it linger the appropriate time. it is all less revolutionary than people pretend.

Reply by email

Michael Van Canneyt
to Marco van de Voort: Op 17-4-2026 om 15:30 schreef Graeme Geldenhuys via fpc-devel: First, keep in mind that…
Marco van de Voort wrote 23 lines
Op 17-4-2026 om 15:30 schreef Graeme Geldenhuys via fpc-devel: > > > General observation: > From an outsider’s perspective, it appears there was a migration from > Subversion to Git without a corresponding shift in workflow. Many team > members seem stuck in a "Subversion mentality" -- the idea that > branches are expensive or merging is difficult -- none of which > applies to Git. First, keep in mind that nearly everything I do is single commits. In tortoisesvn: - mark 6 repositories in explorer and click update.  All repositories will be updated. In tortoisegit: -  pull, stash window, rebase, stash pop prompt per repository. Just with the update you are already a two dozen of clicks in.

Maybe use another tool than tortoisegit ?

I used it in the past. It's an ill-conceived fork of tortoisesvn.

What you describe I do on the command line in 1 go.

I don't much care for UI tools but what I see from my colleagues who do use UI tools, none of them has to do so many clicks as you describe.

Show quoted text 10 lines
> Unfortunately, the FPC project seems to have stalled since the > migration, and there is no clear consensus on how to properly leverage > these new [2026] tools. Given that, I don't believe there is much more > I can contribute at this stage. I’ll stay on the sidelines for now and > hope for the best. And yes, I'm still happy to triage/review Merge > Requests where I can. Could we at least get some triage labels added > to the fpcsource project, as I suggested in the proposal? > Always the my way or the highway attitude, all along the way implying the opponents are Neanderthals for their efforts to engage with you.

Looking at it from aside, the 'engage' very much resembles breaking down every proposal that comes along.

You may not intend it like that, obviously, but
this is not very motivating for users who wish to help.

Graeme offered help, he still offers help - triaging.

I can imagine your last reply is very off-putting for him.

You could get reactions like this:

https://components4developers.blog/2025/06/10/i-left/

Michael.

Reply by email

Martin Frb
to Michael Van Canneyt: In your case its your reluctance to use the web: Because the tooling is in the web.…
Michael Van Canneyt wrote 14 lines
That is where we have different visions. If I just wanted git, I would not need gitlab. gitea (or whatever it is called today) does the job. There were 2 reasons for switching to gitlab SaaS: - No maintenance - The tooling we get. If you don't want to use the tooling of gitlab, there is no point in discussing, as that is a given for me: setting up some system beside gitlab which does what gitlab does, is IMO utterly pointless if you're already using gitlab.

If it is just the MR click on "cherry pick this" => then I wouldn't call that "tooling you get with Gitlab" => for that Gitlab is just a client, like any other git client. And you can do that with any other git client.

If it is the ability to add labels (includes milestones), and search MR for that => then yes that is tooling. But (and that is not my decision for FPC) is it the most efficient tooling?  (regardless of you being used to it, and it being easiest to you). But that is between the core members of fpc. I can't answer that.

Show quoted text 5 lines
However, if you insist on using a local tool (command-line or not): no problem. gitlab cli (glab) exists already. You can use that to handle merge requests without ever touching the web interface.

Can't comment. Haven't looked into it.
But depending on what other members in fpc core team want, that may be a selling point.

Gitlab is API first, so If this is your wish, I'll even write a lazarus UI tool or FPC command-line tool to create the MR, merge it, all in one go.

Which would mean you could actually write a tool for all the fpc team members that performs all the tasks without needing any knowledgde on gitlab....
That should be a selling point. (if that tool is on offer)

Of course, that may bring up another point... Which may or may not have been discussed when moving to git (I wasn't part of the FPC discussion on it)...
But, I distinctly recall several mention of
"gitlab has the best offer for now, but git allows us at any time to roll our own web if gitlab can't be used no longer. Either by our own gitlab server with the free parts of gitlab, or any alternative)" So at that time, it sounded very much that there would be no dependency on gitlab.

If I recall that correct, then I guess that is a big decision for the future. If the advantage are indeed that good, then it may well be worth it.
I don't know the answer to that. But I would caution to explore and compare workflows that don't set that kind of dependency....

Mind, that either way, some of gitlabs features are still adding value. E.g. we run CI for tests. We are not dependent on that. The workflows we have will work, even if that discontinues. But for now, having it is great.

If that makes your (and other people's) life easier or more comfortable in a MR-based workflow, I am prepared to do the work.

that really is between you and your team mates.

I don't commit to the fpc repo. So I am not affected.

I offer my comments here, as "ideas to be added to the pool". From the mail thread it seems that there are different expectations around. So maybe in those ideas there is something that can be picked.

Reply by email

Marco van de Voort
to Michael Van Canneyt: Maybe use another tool than tortoisegit ? I used it in the past. It's an ill-conceived…

Op 17-4-2026 om 17:48 schreef Michael Van Canneyt via fpc-devel:

Maybe use another tool than tortoisegit ? I used it in the past. It's an ill-conceived fork of tortoisesvn.

It is much worse than T-SVN was. But it works in a pretty vanilla install, and does not require a bunch of scripting for basic operations. That lessens keeping heaps of scripts synchronised between machines. Keep in mind that I mostly work on single commits on multiple machines. Having everything stashed in some local branch is not workable for me.

Also: I have to write off all time I spend on git and gitlab on my time spent on FPC.

I don't much care for UI tools but what I see from my colleagues who do use UI tools, none of them has to do so many clicks as you describe.

Then retest. Make sure you have a few files dirty, even if only a few .lpi's for e.g. the compiler or so (because you added a few run parameters). I can make a video?

Show quoted text 14 lines
>> Unfortunately, the FPC project seems to have stalled since the >> migration, and there is no clear consensus on how to properly >> leverage these new [2026] tools. Given that, I don't believe there >> is much more I can contribute at this stage. I’ll stay on the >> sidelines for now and hope for the best. And yes, I'm still happy to >> triage/review Merge Requests where I can. Could we at least get some >> triage labels added to the fpcsource project, as I suggested in the >> proposal? >> > Always the my way or the highway attitude, all along the way implying > the opponents are Neanderthals for their efforts to engage with you. Looking at it from aside, the 'engage' very much resembles breaking down every proposal that comes along.

That is a matter of viewpoint. The other side would argue that those proposals are basically all the same, just reinserting the same coin over and over again each time an issue/discussion comes up in the project, adopting more gitlab workflow will solve everything, even if that was not the question. Specially since people involved with releases mentioned umpteen times that the current delays are not due to tooling.

Show quoted text 5 lines
You may not intend it like that, obviously, but this is not very motivating for users who wish to help. Graeme offered help, he still offers help - triaging.

He offered help, but with conditions. Moreover it doesn't help to constantly label people opposed to whatever you do as behind the curve, without even inquiring circumstances.

Maybe I'm hyper sensitive to that due to the history of git before, so I apologise for any harshness.

But the point is that we were talking about releasing , not resetting the tooling and redesigning the workflow of the whole project.

I attempted to bring some real world knowledge and did a outstanding revisions to merge count and showed that MRs are a tiny part of that number, even if I overestimate it several times.

And what do I get as answer?  "Centralise MRs in every aspect of the development process" then.

What other reaction would you guys expect on statements like that?

Those changes are btw not beyond discussion, but only if they are somewhat proven with little experiments.  And specially not over the backs of an already enormously delayed release process.

And getting back to releasing, work has to be done now. Not tooling for future use which will be visible after 2030 with the current pace. And with more upheaval we might not even make that deadline.

The fixes release should be routine, and not even worth discussing. (just do it), but _NOBODY_ is discussing in this thread about the viability of branching main somewhat soonish. That should be the number one topic, not whatever workflow gitlab has just enabled.

I can imagine your last reply is very off-putting for him.

I can imagine, and I apologise. I was red hot because of the above reasons. But at the same time I hope he gets that workflow is sensitive, and that there is far from a consensus about that.

But anyway, put your MR to the test on the main list, and we can maybe get passed this in one swift swoop, for good or bad. I'm not a top 10 committer, and easily overruled.

Show quoted text 5 lines
You could get reactions like this: https://components4developers.blog/2025/06/10/i-left/

The question is, if you can avoid such is a
typical reaction of somebody who doesn't get his way.  A nice dramatic epitaph like statement without much dialogue to counter it.

What other solution is there to avoid this, just  acquiescence to every random request, no matter the strings attached?

Reply by email

Martin Frb
to Marco van de Voort
Marco van de Voort wrote 12 lines
Op 17-4-2026 om 17:48 schreef Michael Van Canneyt via fpc-devel: > > Maybe use another tool than tortoisegit ? > I used it in the past. It's an ill-conceived fork of tortoisesvn. It is much worse than T-SVN was. But it works in a pretty vanilla install, and does not require a bunch of scripting for basic operations. That lessens keeping heaps of scripts synchronised between machines. Keep in mind that I mostly work on single commits on multiple machines. Having everything stashed in some local branch is not workable for me.

It is probably not what you want (may even be overkill in your case / i.e. for a single commit), but you can sync git repos between different machines => without any gitlab.
Just as long as those machines at some time are in the same LAN
- e.g your laptop can update from you PC
- but, you PC at work, may not be able to update from/to your PC at home (unless their is a VPN)

Happy to help / answer questions. If it is of any interest.

Show quoted text 7 lines
> I don't much care for UI tools but what I see from my colleagues who > do use > UI tools, none of them has to do so many clicks as you describe. Then retest. Make sure you have a few files dirty, even if only a few .lpi's for e.g. the compiler or so (because you added a few run parameters). I can make a video?

I am kind of seeing both of your sides.

Yes, Marco's scenario can happen. But for it to happen frequently on all 3 FPC repos => that seems to be rather unlucky. (according to my experience)

I.e.
Marco, if you have the fpc.lpi modified => git pull should only complain if that file changed in the upstream repo. I wouldn't expect LPI to do that so often. But of course there could be some other file that changes frequently.

There is autostash. But I haven't played with it. Afaik that would mean as long as their is no conflict, any pull goes fast forward. (even if there are changed files)... But again, not tested.

But, to conclude, apart from "frequent or not", those extra steps in updating do indeed happen. And they do with any tool.

---
Btw, I use Tortoise myself.
Yes it lacks a bit with regard to standard git flows  (though some of them I do diff, even when using console git).

But, TG has sofar the best integration into Windows (explore) that I have seen.  (And on a Windows PC, I use Windows means)

Reply by email

n7800
to Michael Van Canneyt: In your case its your reluctance to use the web: Because the tooling is in the web.…
Show quoted text 16 lines
However, if you insist on using a local tool (command-line or not): no problem. gitlab cli (glab) exists already. You can use that to handle merge requests without ever touching the web interface. Gitlab is API first, so If this is your wish, I'll even write a lazarus UI tool or FPC command-line tool to create the MR, merge it, all in one go. If that makes your (and other people's) life easier or more comfortable in a MR-based workflow, I am prepared to do the work. It will not take me an hour to create it, even without AI.

You don't have to use «glab» or the «GitLab REST API» — y ou can create a MR directly through Git. I sometimes do this for simple MRs:

 git push -o merge_request.create ... HEAD

See docs: https://docs.gitlab.com/topics/git/commit/#push-options

Note that you can specify many options, including labels, milestone, and target branch. You can write a script (in «two lines») to create MRs, for example, for two branches at once.

Reply by email

n7800
to Nikolay Nikolov: FPC is special in the regard that it is a compiler and that it has an extremely high…
Show quoted text 10 lines
That's why there's extra effort on keeping the compiler's history linear, avoiding merge commits and running regular automated tests on many platforms, so that bugs are caught early and so that it is easy to find the single commit that caused a bug via "git bisect". I've worked commercially in my last job on a compiler for a specialized language, called "Noir" that used a "squash" all merge request policy and it didn't work well with regards to stability and ease of resolving merge conflicts. But it was a "move fast and break things" kind of startup mentality, so they didn't care much about stability at this stage.

Yes, squashing is «evil» - it's only needed to clean up the messy history of many small edits (if you were adding commits to the MR for editing instead of rebasing). I mentioned this in this comment:

https://gitlab.com/freepascal.org/fpc/source/-/merge_requests/988#note_3241863181

It should be a regular merge, without squashing. This keeps the entire history intact (all commits, dates, etc.). We already discussed this in this issue:

https://gitlab.com/freepascal.org/lazarus/lazarus/-/work_items/42205

Reply by email

n7800
to Michael Van Canneyt: Maybe use another tool than tortoisegit ? I used it in the past. It's an ill-conceived…
Show quoted text 21 lines
In tortoisesvn: > > - mark 6 repositories in explorer and click update.  All repositories > will be updated. > > In tortoisegit: > > -  pull, stash window, rebase, stash pop prompt per repository. > > Just with the update you are already a two dozen of clicks in. Maybe use another tool than tortoisegit ? I used it in the past. It's an ill-conceived fork of tortoisesvn. What you describe I do on the command line in 1 go. I don't much care for UI tools but what I see from my colleagues who do use UI tools, none of them has to do so many clicks as you describe.

I used TortoiseGit when I was learning Git. Now it's just getting in the way. A lot of routine "clicks" are replaced with a simple command or a script.

As I already wrote, you can even create MR in GitLab using the "git push" command, I have a script for that, too, and many others. Graphical clients don't allow for such automation.

Reply by email

Graeme Geldenhuys
to Martin Frb: Well, see my other mail... But lets differentiate. If I merged a contributed MR... And if…
BST Martin Frb wrote 6 lines
If I do my own commits (even If it was decided that every change, even single commits changes would go through a branch), then I would want to merge those branches locally. Going to the web interface requires me to involve an additional tool, switching to my browser, needing my browser to go to another tab, ... It may just be a few clicks. Its still less if I do it locally.

Gitlab is just another tool. Yes, the FPC team chose it years ago - they must have had specific reasons. But the same workflow can be done without GitLab, by using "pure git" alone.

Here are the three most effective ways to recreate that workflow using pure Git.

1. Unique Tag Names (The "Suffix" Method)

You give each merge commit (or single commit) its own unique tag within a namespace.

The Tag: patch-candidate/v3.2.4/mr-101, patch-candidate/v3.2.4/mr-105, etc.

The Extraction: You use a wildcard search to find every tag in that "folder."
Bash

git tag -l "patch-candidate/v3.2.4/*"

Pros: Very easy to filter; tags are permanent and searchable.

Cons: Can clutter your tag list if you have hundreds of MRs (though namespaces like patch-candidate/ help).

2. Standardized Commit Trailers (The "Linux Kernel" Way)

Large open-source projects often use "trailers" (key-value pairs at the end of a commit message) to track metadata.

The Workflow: When merging an MR, ensure the merge commit message (or the squashed commit) includes a specific string.

Example: Fixes: #1234. Target-Release: 1.2.1

The Extraction: You use git log with the --grep flag to find everything marked for that release.
Bash

git log main --grep="Target-Release: 1.2.1" --format="%H"

This command returns a list of commit hashes that you can then pipe directly into git cherry-pick.

3. The "Integration Branch" Strategy (what "Git" project itself uses)

Instead of labeling individual commits, you use a temporary branch as a "bucket" for the next release.

The Workflow: Every time an MR is merged into main that also needs to go to fixes, you immediately cherry-pick it into a "staging" branch called fixes- pending.

The Extraction: When it’s time for the actual release, you simply merge fixes-pending into fixes.

Pros: No need to "find" commits later; they are already gathered.

Cons: Requires immediate action at the time of the original merge, which might be a context switch for the developer.

All three are viable, and you could even use it with Gitlab too. But Gitlab is not a requirement.

Regards,
Graeme

Reply by email

Graeme Geldenhuys
to Martin Frb: If it is just the MR click on "cherry pick this" => then I wouldn't call that "tooling…
BST Martin Frb wrote
gitlab cli (glab) exists already. You can use that to handle > merge requests without ever touching the web interface. Can't comment. Haven't looked into it.

I can vouch for glab (the gitlab cli) - it works very well. We use it all the time at my work.

gitlab server with the free parts of gitlab, or any alternative)" So at that time, it sounded very much that there would be no dependency on gitlab.

As I explained in my other recent email (3 alternatives) - strictly speaking, you can apply the same proposed workflow without Gitlab. Yes "milestones" is a Gitlab thing, but there are possibilities of using both Gitlab and "pure git" to achieve the same workflow.

Regards,
Graeme

Reply by email

Graeme Geldenhuys
to Nikolay Nikolov: I'm not sure I understand the question. Graeme's proposal includes squashing commits.…
BST Nikolay Nikolov wrote
Graeme's proposal includes squashing commits. Squashing rewrites history and converts many commits into one.

I personally don't like to squash branches, but I included it explicitly because I was told they (can't remember who) preferred a linear history.

You can get perfectly safe 'git bisect' without squashing a branch. All you have to do is rebase that branch just before you merge it. History is still linear.

eg:
--A--------------------------C---D (head)
\-o--o--o--o--o--o--o--o-/

G.

Reply by email

Graeme Geldenhuys
to robert rozee: Sent: Saturday, April 18, 2026 at 1:30 AM From: "Graeme Geldenhuys via fpc-devel" i'd…
BST robert rozee wrote
against much earlier prototypes). but most importantly - i have been able to make FPC 3.2.2 work, for me, just fine; i have never found FPC 3.2.2 to be lacking.

Count yourself very lucky then. :)

I have return to Free Pascal coding 6 months ago, after a 6 year break. I have hit numerous bugs in 3.2.2

- inconsistent api in fcl-passrc
- missing APIs in the 'windows' unit
- memory leaks
etc

why on earth would anyone want to use any build of FPC other than 3.2.2?

For one, I've created a new debug format (OPDF) for the compiler, and CLI reference debugger, and IDE debug integration (as a second client to test the debug format). At the current rate, I'll be lucky if this feature sees the light of day in an "official" release for another 5+ years. That's not a lot of motivation to contribute to an open-source project.

Then lets look at other things:

- Generics have improved greatly in 3.3.1!
- New language features
- New features in various FCL packages.
- Tons of bug fixes.
...and many more.

Regards,
Graeme

Reply by email

Graeme Geldenhuys
to n7800: I used TortoiseGit when I was learning Git. Now it's just getting in the way. A lot of…
you can even create MR in GitLab using the "git push" command, I have a script for that,

Most of the times you don't even need a script. Simply use Git's built-in alias feature.

Add this to your ~/.gitconfig file.

-----------------
[alias]
# to list these alias via 'git alias'
alias = config --get-regexp ^alias\\.
one = show -s --pretty='format:%h (%s)'
l = log --pretty='format:%h %ad %s' --date=short
lg = log --graph --decorate --pretty=oneline --abbrev-commit changelog = !sh -c 'git log --pretty=short master..develop | git shortlog' -----------------

I probably have 50 of these for various things I need. And if I can't remember the command/alias, then 'git alias' (the first entry) helps me out. :)

G.

Reply by email

Luca Olivetti
to Graeme Geldenhuys: Count yourself very lucky then. :) I have return to Free Pascal coding 6 months ago,…

El 18/4/26 a les 2:21, Graeme Geldenhuys via fpc-devel ha escrit:

Show quoted text 8 lines
I have return to Free Pascal coding 6 months ago, after a 6 year break. I have hit numerous bugs in 3.2.2 - inconsistent api in fcl-passrc - missing APIs in the 'windows' unit - memory leaks etc

I don't use fcl-passrc so I can comment about it, but I have a bunch of projects made with lazarus and fpc 3.2.2 that run unattended 24/7 and there's no memory leak (unless I created them).
I didn't intervene in this thread but I'd hate if the next release introduce regressions (though I could keep on using 3.2.2 until I retire).

Bye

Luca

Reply by email

Luca Olivetti
to Luca Olivetti

El 18/4/26 a les 10:20, Luca Olivetti via fpc-devel ha escrit:

Show quoted text 12 lines
El 18/4/26 a les 2:21, Graeme Geldenhuys via fpc-devel ha escrit: > I have return to Free Pascal coding 6 months ago, after a 6 year > break. I have > hit numerous bugs in 3.2.2 > > - inconsistent api in fcl-passrc > - missing APIs in the 'windows' unit > - memory leaks > etc > I don't use fcl-passrc so I can comment about it, but I have a bunch of

^^^ that was meant to be "can't"

Show quoted text 6 lines
projects made with lazarus and fpc 3.2.2 that run unattended 24/7 and there's no memory leak (unless I created them). I didn't intervene in this thread but I'd hate if the next release introduce regressions (though I could keep on using 3.2.2 until I retire). Bye

Reply by email

Michael Van Canneyt
to Luca Olivetti: El 18/4/26 a les 2:21, Graeme Geldenhuys via fpc-devel ha escrit: I don't use fcl-passrc…
Luca Olivetti wrote 16 lines
El 18/4/26 a les 2:21, Graeme Geldenhuys via fpc-devel ha escrit: > I have return to Free Pascal coding 6 months ago, after a 6 year break. I > have > hit numerous bugs in 3.2.2 > > - inconsistent api in fcl-passrc > - missing APIs in the 'windows' unit > - memory leaks > etc > I don't use fcl-passrc so I can comment about it, but I have a bunch of projects made with lazarus and fpc 3.2.2 that run unattended 24/7 and there's no memory leak (unless I created them). I didn't intervene in this thread but I'd hate if the next release introduce regressions (though I could keep on using 3.2.2 until I retire).

No-one proposes to introduce regressions ?

Michael.

Reply by email

Michael Van Canneyt
to Martin Frb: If it is just the MR click on "cherry pick this" => then I wouldn't call that "tooling…
Martin Frb wrote 19 lines
On 17/04/2026 17:28, Michael Van Canneyt via fpc-devel wrote: > > That is where we have different visions. > > If I just wanted git, I would not need gitlab. gitea (or whatever it > is called today) does the job. > > There were 2 reasons for switching to gitlab SaaS: > - No maintenance > - The tooling we get. > > If you don't want to use the tooling of gitlab, there is no point in > discussing, as that is a given for me: setting up some system beside > gitlab which does what gitlab does, is IMO utterly pointless if you're > already using gitlab. If it is just the MR click on "cherry pick this" => then I wouldn't call that "tooling you get with Gitlab" => for that Gitlab is just a client, like any other git client. And you can do that with any other git client.

The difference is that in gitlab it takes all the commits from the MR. on the command-line, you need to specify all commits yourself.

Secondly, when you are handling the MR (which you must do anyway if it is a 3rd party MR), you are already in gitlab, so it is right there under your nose. It's literally a click away.

You can of course go back to the command line and do everything manually there after merging the MR if you are so inclined.

Michael.

Reply by email

Martin Frb
to Michael Van Canneyt
Michael Van Canneyt wrote 10 lines
On Fri, 17 Apr 2026, Martin Frb via fpc-devel wrote: > > If it is just the MR click on "cherry pick this" => then I wouldn't > call that "tooling you get with Gitlab" => for that Gitlab is just a > client, like any other git client. And you can do that with any other > git client. The difference is that in gitlab it takes all the commits from the MR.

If the MR is merged, I have a branch with all the commits. Most local GUI clients will make it very easy to select that for picking => so there is no real difference in that.
I stand by: That button in gitlab is no better tooling than any other (halfway decent) GUI client. (GUI, since the web is GUI too)

Show quoted text 9 lines
on the command-line, you need to specify all commits yourself. Secondly, when you are handling the MR (which you must do anyway if it is a 3rd party MR), you are already in gitlab, so it is right there under your nose. It's literally a click away. You can of course go back to the command line and do everything manually there after merging the MR if you are so inclined.

1) "not related to cherry pick button"
Yes, an MR has advantages over a PR (the original Pull request). Well in some cases.

A small MR is easy to handle on the web.

But if the changes a big, I personally find it impossible to review on the web. I need to be able to look up other (existing) code. I need the code (the proposed new code) in the IDE, to be able to use todetools, follow it around, proper review it.
Trying to do that online does not work for me, **IF** the MR is sufficiently big.

2) --- the actual "cherry pick this MR" ---

That is fine online (and I said that before!).  But I also said: only if I do it immediately.

If I merge the request now, and in a month decide I want to cherry pick it => having to find it again online is more work than finding the branch in my local GUI client.
Yet it would not matter, since the diff is really slim.

Of course: If I
- merge now
- want to keep some form of list (bookmark) to review merging in a month => then tagging the MR is ONE way (one of many).

If I use the MR as bookmark, then using the "cherry pick" button is fine **IF** and only if there are no conflicts.
If it does have a conflict => I *sometimes* find it easier to resolve conflicts in the IDE that in any "merge/conflict" viewer. "sometimes" => not always, but often enough.
So if there is a conflict, it may tremendously speed up the process (for me) if I already have it local. Of course, if I have the MR already open, I don't mind trying to click the button, and abort if it conflicts.

But using the MR as bookmark => well if there is a volunteer who will process all that bookmarks then fine.
If I have to use the (rather limited) search (including advance gitlab search) to find "just the bookmarks that I handle" then tagging MR is at best an average solution. (see the "amount of MR" below)

----------

Again just adding my experiences as a means to broaden the view. Sure it can be solved... As for if and to which extend which solution is wanted, that isn't my decision.

----------

Also, I must say, if I understand that correct, and if every change (including every single commit fix) goes through an MR, then you have hundreds (thousands?) of MR => Essentially the entire "git history" duplicated into MR => not something that I find reasonable.

Albeit, it would mean that fpc team members don't have to create the MR => you can have a bot that creates an MR for every commit pushed.

Reply by email

Michael Van Canneyt
to Martin Frb
Martin Frb wrote 16 lines
On 18/04/2026 11:05, Michael Van Canneyt via fpc-devel wrote: > > > On Fri, 17 Apr 2026, Martin Frb via fpc-devel wrote: >> >> If it is just the MR click on "cherry pick this" => then I wouldn't >> call that "tooling you get with Gitlab" => for that Gitlab is just a >> client, like any other git client. And you can do that with any other >> git client. > > The difference is that in gitlab it takes all the commits from the MR. If the MR is merged, I have a branch with all the commits. Most local GUI clients will make it very easy to select that for picking => so there is no real difference in that. I stand by: That button in gitlab is no better tooling than any other (halfway decent) GUI client. (GUI, since the web is GUI too)

Except see below.

Show quoted text 6 lines
> on the command-line, you need to specify all commits yourself. > > Secondly, when you are handling the MR (which you must do anyway if it is > a 3rd party MR), you are already in gitlab, so it is right there under > your nose. It's literally a click away.

You were conveniently ignoring this part in your reply. You have to handle the user's MRs in gitlab.

Which is exactly what I am doing:

Merge Requests Grouped by User:
--------------------------------
586 mvancanneyt
452 FPK2
16 PierreMuller
16 CuriousKit
11 chainq
7 PascalDragon
7 nickysn
7 jmaebe
6 marcoonthegit
4 lazidealist
1 xhajt03
1 jvdsluis

Standard output of gitlab tooling, BTW.

Michael.

Reply by email

Martin Frb
to Michael Van Canneyt
Michael Van Canneyt wrote
You were conveniently ignoring this part in your reply. You have to handle the user's MRs in gitlab.

I thought the part where I wrote

2) --- the actual "cherry pick this MR" --- That is fine online (and I said that before!).  But I also said: only if I do it immediately.

I.e. When/If I do it as part of this handling.
That is not always the case. (and the other obstructions)

So, no: I did not ignore that.

Which is exactly what I am doing: Merge Requests Grouped by User:

This is probably mixing 2 things up now (I still reply just in one bit)
- merging into main (which was *not* the topic / and which I do to, except cases that I described separately)
- using the cherry-pick button.

That list is
- merging them into main
- merging them, and cherry picking them into fixes **at the same time**
- merging them, and cherry picking them into fixes **at a later time** ?

And:
- How big where they.
- How much review was needed
- How much code in places **not adjacent to the diff** needed to be looked up for the review
- How many of them needed conflict resolution

On the last point: It may be that for you conflict resolution works fine in the gitlab interface.
For me, that is - half the time - not the case.

I do regularly open conflicts (with the >>>> markers) in the IDE, and resolve them there. It's just for me personally that works better in those cases.

----------------------
I am missing your response to the following.
Which is
- *NOT* about MR from 3rd party
- but about every team member adding every change via MR (so then that could be used for merge tracking to fixes)

Also, I must say, if I understand that correct, and if every change (including every single commit fix) goes through an MR, then you have hundreds (thousands?) of MR => Essentially the entire "git history" duplicated into MR => not something that I find reasonable.

This may be based on some misunderstanding by me => but then I would like to know it what I misunderstood.

Reply by email

Michael Van Canneyt
to Martin Frb
Martin Frb wrote 15 lines
On 18/04/2026 12:01, Michael Van Canneyt via fpc-devel wrote: > > You were conveniently ignoring this part in your reply. You have to > handle the user's MRs in gitlab. I thought the part where I wrote > 2) --- the actual "cherry pick this MR" --- > > That is fine online (and I said that before!).  But I also said: only > if I do it immediately. I.e. When/If I do it as part of this handling. That is not always the case. (and the other obstructions) So, no: I did not ignore that.

I didn't make the link, I stand corrected on that account.

Show quoted text 13 lines
> > Which is exactly what I am doing: > > Merge Requests Grouped by User: This is probably mixing 2 things up now (I still reply just in one bit) - merging into main (which was *not* the topic / and which I do to, except cases that I described separately) - using the cherry-pick button. That list is - merging them into main

Merging into main.

Show quoted text 7 lines
- merging them, and cherry picking them into fixes **at the same time** - merging them, and cherry picking them into fixes **at a later time** ? And: - How big where they. - How much review was needed

Depends on the MR. Some bigger, some smaller.

Show quoted text 8 lines
- How much code in places **not adjacent to the diff** needed to be looked up for the review - How many of them needed conflict resolution On the last point: It may be that for you conflict resolution works fine in the gitlab interface. For me, that is - half the time - not the case.

We must have very different users.

I don't think even 3% neeed conflict resolution.

If there is, most of the time user needs to take action. It's very rare that I must do it.

I do regularly open conflicts (with the >>>> markers) in the IDE, and resolve them there. It's just for me personally that works better in those cases.

I never use gitlab to resolve conflicts.
I do the same as you, but see above.

---------------------- I am missing your response to the following. Which is - *NOT* about MR from 3rd party

It is about MR from 3rd party.

My point was that since we have gitlab, the merging of user contributions goes way faster than the SVN+Mantis procedure, where we had to download and apply patches manually. Anyone denying that is denying the light of the sun.

Given the amount of work I do on MRs, if I can flag and later or immediatly merge MRs to a fixes branch, it would be a huge time saver.

So if the team would also use MR's and just flag them 'fit for fixes' then that should normally result in more regular releases for the users.

Because that is what it is all about:
getting out more releases for the user.

Gitlab (or github) helps in that, but you must use it for what it was meant.

The older SVN public sites were obliterated by github/gitlab. That was definitely not because it the latter were more difficult to use.

Michael.

Reply by email

Marco van de Voort
to Michael Van Canneyt

Op 18-4-2026 om 15:18 schreef Michael Van Canneyt via fpc-devel:

Show quoted text 7 lines
It is about MR from 3rd party. My point was that since we have gitlab, the merging of user contributions goes way faster than the SVN+Mantis procedure, where we had to download and apply patches manually. Anyone denying that is denying the light of the sun.

Still that is different than the proposal.

1. it does not affect normal committers. Those never submitted branches as loose patches.

2. regular commiters like Rika, Margers etc already had gotten SVN access and/or branches in the past .

3. So that leaves the much smaller rest external contributors,.

That doesn't mean it is not an advantage/easier, but it must not be bigger than it really is.

And that is only the MAIN angle, for FIXES, an even again much smaller number is non compiler in easy to merge categories. Compiler is hardly merged any more after the initial major release.

Given the amount of work I do on MRs, if I can flag and later or immediatly merge MRs to a fixes branch, it would be a huge time saver.

So maybe 50 of your MRs apply, saving 50 times git cherry-pick -x over  several years. Is that really worth changing all workflow over ? Do really think that will do anything wrt 5 year release gaps? Come on!

And _I_  (and some others like Pierre) do most of that (main->fixes)  work now, and the bulk work is not really related to the release process. Only last minute stuff is.

So there are no huge numbers to accelerate in the first place.

Reply by email

Michael Van Canneyt
to Marco van de Voort
Marco van de Voort wrote 11 lines
Op 18-4-2026 om 15:18 schreef Michael Van Canneyt via fpc-devel: > > It is about MR from 3rd party. > > My point was that since we have gitlab, the merging of user contributions > goes way faster than the SVN+Mantis procedure, where we had to > download and apply patches manually. Anyone denying that is denying > the light of the sun. Still that is different than the proposal.

It is not.

> Given the amount of work I do on MRs, if I can flag and later or > immediatly merge MRs to a fixes branch, it would be a huge time saver. So maybe 50 of your MRs apply,

Since I am the one doing the work, I think I'm better placed to judge: It will be more than 400, I assure you.

I'll be mild: The day when you reached 200 merged MRs, we'll talk again. Maybe at that point you'll have enough experience with it to accurately judge the advantages it brings (or not).

If you can overcome your prejudice, that is: instead of fighting the tool, try embracing it. It will make your life easier, maybe even more fun.

Michael.

Reply by email

Marco van de Voort
to Michael Van Canneyt

Op 18-4-2026 om 16:08 schreef Michael Van Canneyt via fpc-devel:

Show quoted text 14 lines
>> >> It is about MR from 3rd party. >> >> My point was that since we have gitlab, the merging of user >> contributions >> goes way faster than the SVN+Mantis procedure, where we had to >> download and apply patches manually. Anyone denying that is denying >> the light of the sun. > > Still that is different than the proposal. It is not.

My point is your math doesn't add up even for the main list, and the whole release angle is even more far fetched.

Let's get back to releasing, how many of those merge requests have you merged to fixes?

Show quoted text 11 lines
>> Given the amount of work I do on MRs, if I can flag and later or >> immediatly merge MRs to a fixes branch, it would be a huge time saver. > > So maybe 50 of your MRs apply, Since I am the one doing the work, I think I'm better placed to judge: It will be more than 400, I assure you. I'll be mild: The day when you reached 200 merged MRs, we'll talk again. Maybe at that point you'll have enough experience with it to accurately judge the advantages it brings (or not).

That is /mild/ in your book? After having done 75% plus of all merging since FPC 2.0.4 ? Maybe 20000+ revisions or more?

And that is not just historic, just check the history of post 3.2.2 revisions in the GIT era.   Compare that number to your 200 MRs.

If you can overcome your prejudice, that is: instead of fighting the tool, try embracing it. It will make your life easier, maybe even more fun.

Maybe, if you ever make a compelling case for it instead of trying to use every little tidbit to glorify your proposal and vilify the old procedures. That doesn't instigate trust.

But the core point is and remains: bulk merging to fixes is not the cause of release delays. Period.

Reply by email

Martin Frb
to Michael Van Canneyt: I didn't make the link, I stand corrected on that account. Merging into main. Depends on…
Michael Van Canneyt wrote 11 lines
On Sat, 18 Apr 2026, Martin Frb via fpc-devel wrote: > On the last point: It may be that for you conflict resolution works > fine in the gitlab interface. > For me, that is - half the time - not the case. We must have very different users. I don't think even 3% neeed conflict resolution.

Misunderstanding....

Half of the time that need conflict resolution => Of those times that need it, take half.

If there is, most of the time user needs to take action. It's very rare that I must do it.

For the current low amount of MR, indeed its rare.

But if you scale up the amount of MR by making all team commits go that way, and therefore also touch a wider range of code => then it will happen more often.

Quite possible even between commits of the same person. => I have plenty of conflicts between my own branches. (because by nature they work on the same range of code / so if I do more than one thing at a time, then conflicts are natural)

Show quoted text 7 lines
> I do regularly open conflicts (with the >>>> markers) in the IDE, and > resolve them there. It's just for me personally that works better in > those cases. I never use gitlab to resolve conflicts. I do the same as you, but see above.

Hope my new reply explains it better.

Show quoted text 12 lines
> ---------------------- > I am missing your response to the following. > Which is > - *NOT* about MR from 3rd party It is about MR from 3rd party. My point was that since we have gitlab, the merging of user contributions goes way faster than the SVN+Mantis procedure, where we had to download and apply patches manually. Anyone denying that is denying the light of the sun.

Then we were talking about 2 diff things. I was under the impression this was all still about the "every commit by every team member should go via an MR".

Using gitlab to accept MR is (mostly) fine. I.e. for those are small enough to just look at the diff and that is enough to review => I use the online "merge to main" button too.

I have not yet come to the point were I knew at that very point that I want to also pick it into fixes.
But if I knew, at that very time, then that cherry pick button would work.

In other scenarios, other means may be faster (not in all cases, in some cases).

---------------------------
However that is away from the original issue of how to improve tracking what goes into fixes -> 3rd party MR are only a fraction of that.

Show quoted text 6 lines
Given the amount of work I do on MRs, if I can flag and later or immediatly merge MRs to a fixes branch, it would be a huge time saver. So if the team would also use MR's and just flag them 'fit for fixes' then that should normally  result in more regular releases for the users.

Is that you volunteering to look after the flagged commits? Or you expecting everyone to then search there flagged MR and deal with them themself?

And, if it is:   everyone taking care of their own MR => then why doing an MR at all, why not just instantly cherry picking?

That what we (Lazarus) currently do (with slight extra for the few not yet that comfy with git) => If someone commits something, and its fixes worthy they cherry pick it.
Done.
No extra steps.
Just the cherry pick.

Show quoted text 9 lines
Because that is what it is all about: getting out more releases for the user. Gitlab (or github) helps in that, but you must use it for what it was meant. The older SVN public sites were obliterated by github/gitlab. That was definitely not because it the latter were more difficult to use.

I am neither comparing with SVN means (I didn't even touch branches back then), no do I advertise to stick with those means.

Git (and the surrounding tools) offers plenty of ways => each task can be solved in many of them.

There are people who say that all commits must first be in a feature branch (and then go over various means into various other branches...) => we don't do that. Even so some people will tell us that not only is this the best way, its is supposedly the only way that disagree. Strongly. Very strongly.

------------------------
And even if MR would be a good way (which I am not convinced because I think other ways are better.
At least for commits by the team, which often are either
- single commits
- single commits with dependencies (that wouldn't be identified by the MR either)

For starters, mix them with regular MR in the MR list on gitlab => you get a mixed list that you need to sort and search
- MR by 3rd party only for main
- MR by 3rd party merged to main, waiting for cherry pick to fixes
- MR by team against the fixes branch

That adds work, were we should seek to reduce it.

So again, unless you did just volunteer to then do all the cherry picks => then I am pretty sure they will just sit on gitlab, and nothing will happen with them.
- You may call it pessimism, I call it experience ;)

For the few cases where entire branches wont to be picked to fixes (e.g. 3rd party MR) / I don't know how often that happen with "team origin" => that can maybe be considered. (not my call, but..>) Though it might lead to splitting the list of "to be picked commits"

=> for all others, I would either
- pick the directly into fixes
- pick them locally into fixes, push when they had some testing in main
- pick them to a "pre fixes" : same as locally, just push, but as "trial and error fixes branch" from which they then later get picked into real fixes

the last one also works for "branches that were merged".

Reply by email

Michael Van Canneyt
to Martin Frb
Martin Frb wrote 17 lines
On 18/04/2026 15:18, Michael Van Canneyt via fpc-devel wrote: > > > On Sat, 18 Apr 2026, Martin Frb via fpc-devel wrote: > >> On the last point: It may be that for you conflict resolution works >> fine in the gitlab interface. >> For me, that is - half the time - not the case. > > We must have very different users. > > I don't think even 3% neeed conflict resolution. Misunderstanding.... Half of the time that need conflict resolution => Of those times that need it, take half.

Well, since we don't do conflict resolution in gitlab, the point is moot.

Show quoted text 8 lines
> If there is, most of the time user needs to take action. > It's very rare that I must do it. For the current low amount of MR, indeed its rare. But if you scale up the amount of MR by making all team commits go that way, and therefore also touch a wider range of code => then it will happen more often.

Why would that happen ?

The member pushing the MR can merge it as soon as he created it.

The point of the MR is to have a record of grouped commits that can easily be flagged and merged later on.

Quite possible even between commits of the same person. => I have plenty of conflicts between my own branches. (because by nature they work on the same range of code / so if I do more than one thing at a time, then conflicts are natural)

Makes no difference then. You'll have work either way.

Show quoted text 7 lines
>> I do regularly open conflicts (with the >>>> markers) in the IDE, and >> resolve them there. It's just for me personally that works better in >> those cases. > > I never use gitlab to resolve conflicts. I do the same as you, but see > above. Hope my new reply explains it better.

Considerably, yes.

Show quoted text 15 lines
>> ---------------------- >> I am missing your response to the following. >> Which is >> - *NOT* about MR from 3rd party > > It is about MR from 3rd party. > > My point was that since we have gitlab, the merging of user contributions > goes way faster than the SVN+Mantis procedure, where we had to > download and apply patches manually. Anyone denying that is denying > the light of the sun. Then we were talking about 2 diff things. I was under the impression this was all still about the "every commit by every team member should go via an MR".

It is. See below, integrator role.

Show quoted text 7 lines
> Given the amount of work I do on MRs, if I can flag and later or > immediatly merge MRs to a fixes branch, it would be a huge time saver. > > So if the team would also use MR's and just flag them 'fit for fixes' > then that should normally  result in more regular releases for the users. Is that you volunteering to look after the flagged commits?

yes, obviously. The role is usually called an integrator.

We do this integration today, manually. It's clearly not working.

By doing what I propose, the role of the integrator becomes much easier.

Or you expecting everyone to then search there flagged MR and deal with them themself?

That would be utterly pointless.

And, if it is:   everyone taking care of their own MR => then why doing an MR at all, why not just instantly cherry picking?

Indeed.

That what we (Lazarus) currently do (with slight extra for the few not yet that comfy with git) => If someone commits something, and its fixes worthy they cherry pick it.

That's why IMO the MR is better. if you have 10+ commits, you do it in one fell swoop with the MR, and (a benefit IMO) it can be done by someone else (the integrator). All the developer needs to do is merge and flag the MR.

An additional advantage of MR is also that we can run CI/CD once before merge; doing CI/CD for every push is most likely not going to work any more once we make the CI/CD work for all platforms. The allowed compute time is not infinite, and as soon as a new push is done, an existing pipeline is aborted, making error detection much harder. the gitlab mails which I receive often indicate the wrong commit because of this.

Are there some extra steps for the dev ? Yes, obviously.

But if it results in more frequent releases, then IMO that's worth it.

Michael.

Reply by email

Michael Van Canneyt
to Marco van de Voort: Op 18-4-2026 om 16:08 schreef Michael Van Canneyt via fpc-devel: My point is your math…
Marco van de Voort wrote 21 lines
Op 18-4-2026 om 16:08 schreef Michael Van Canneyt via fpc-devel: > >>> >>> It is about MR from 3rd party. >>> >>> My point was that since we have gitlab, the merging of user >>> contributions >>> goes way faster than the SVN+Mantis procedure, where we had to >>> download and apply patches manually. Anyone denying that is denying >>> the light of the sun. >> >> Still that is different than the proposal. > > It is not. > My point is your math doesn't add up even for the main list, and the whole release angle is even more far fetched. Let's get back to releasing, how many of those merge requests have you merged to fixes?

For lack of an agreed procedure, none obviously.

That's the whole reason why I'm proposing a schedule that IMO would help.

Show quoted text 15 lines
>>> Given the amount of work I do on MRs, if I can flag and later or >>> immediatly merge MRs to a fixes branch, it would be a huge time saver. >> >> So maybe 50 of your MRs apply, > > Since I am the one doing the work, I think I'm better placed to judge: > It will be more than 400, I assure you. > > I'll be mild: The day when you reached 200 merged MRs, we'll talk again. > Maybe at that point you'll have enough experience with it to accurately > judge the advantages it brings (or not). That is /mild/ in your book? After having done 75% plus of all merging since FPC 2.0.4 ? Maybe 20000+ revisions or more?

Wait: I was in no way diminishing your work on SVN. Far from it.

I was talking solely about MR's you handled in gitlab. 7 is a too fow to form a good opinion. I do more than 7 every I worked with svn as an integrator at work for 14 years, I worked longer with FPC on svn (albeit not as integrator).

So I think I'm (currently) in a better position than you to judge the advantage of gitlab.

I'm just saying that you should maybe try to appreciate what gitlab has on offer. Judging from aside, I can only say that you've opposed git and gitlab from the start and that you've never given the tool the chance it IMO deserves.

Michael.

Reply by email

Martin Frb
to Michael Van Canneyt: Well, since we don't do conflict resolution in gitlab, the point is moot. Why would that…
Michael Van Canneyt wrote 10 lines
>> If there is, most of the time user needs to take action. >> It's very rare that I must do it. > > For the current low amount of MR, indeed its rare. > > But if you scale up the amount of MR by making all team commits go > that way, and therefore also touch a wider range of code => then it > will happen more often. Why would that happen ?

I gave an example, more simultaneous branches on a small amount of work (since team members probably have "areas" on which they do concentrate their work, and if the frequency of parallel commits/branches in a small area goes up, then that is a risk factor for conflicts.

This is based, on the branches existing for some time before merge. See next part of reply.

The member pushing the MR can merge it as soon as he created it.

If it is merged immediately, then why do a merge request?

If I have a commit (a commit of my own), that I just did myself (and I did locally on my machine, as most people do for their own commits.... And if I want that commit to be merged/cherry picked ... => why do I need to go via gitlab (as tool), if I locally already using git, which can do the merge immediately? with no extra effort? Actually, possible with even less work?

What is the gain by going via MR @ gitlab?

I thought your argument was to use the MR to track outstanding cherry picks? But If they are already done, then they need no tracking (tracking for future picking them)?

The point of the MR is to have a record of grouped commits that can easily be flagged and merged later on.

You just said "the MR can be merged as soon as it is created"

--------------------------------------

Show quoted text 17 lines
> > Then we were talking about 2 diff things. I was under the impression > this was all still about the "every commit by every team member > should go via an MR". It is. See below, integrator role. >> Given the amount of work I do on MRs, if I can flag and later or >> immediatly merge MRs to a fixes branch, it would be a huge time saver. >> >> So if the team would also use MR's and just flag them 'fit for fixes' >> then that should normally  result in more regular releases for the >> users. > > Is that you volunteering to look after the flagged commits? yes, obviously. The role is usually called an integrator.

Ok, well, in that case I say, if you volunteer to do the work you have a right to say in which way you want the "notification for outstanding work" to be done.

How much of a "pre-decision" lays by the committer? I.e., if the committer commits a new feature, they know that wont be taken into fixes => so in that case they would NOT need a branch, and NOT create an MR?

So the proposal you make would then be:
- if anyone commits something that may (as in maybe) go to fixes
- they commit into a branch.
- they merge the branch into main, by any means they like (probably except fast forward)
- they create an MR (that can actually be an MR to fixes branch) => they are done.

You will then deal with the MR.

The MR replaces (or introduces) a means of "writing down" all/any commits that may (maybe) go to fixes?

I think there is a selling point for that.
(of course you have to still sell it to your team mates, rather than to me / but if I was team, I would buy in)

Might need some workflows for everyone, such as, if someone forgot to create a branch => they then can use rebase to extract the commits into a branch (creates a copy).
(actually haven’t tested how clever gitlab is => if one creates a branch at any point in main (then that point is the "fork point"), one could then fast forward the branch. There would be no 2nd line of commits. No visible branch point. But the fork point exists (I think it is taken from the reflog, but I need to check). If one pushes before and after the FF, then gitlab should have that fork point too.... Curious if such a branch works for an MR.)

We do this integration today, manually. It's clearly not working.

Matches my observations (though I can't fully judge the reasons). But since your proposal includes your manpower, I would expect it to be a true improvement)

By doing what I propose, the role of the integrator becomes much easier.

That depends on the integrator, but in this case: Yes.

Reply by email

Michael Van Canneyt
to Martin Frb
Martin Frb wrote 35 lines
On 19/04/2026 19:18, Michael Van Canneyt via fpc-devel wrote: >>> If there is, most of the time user needs to take action. >>> It's very rare that I must do it. >> >> For the current low amount of MR, indeed its rare. >> >> But if you scale up the amount of MR by making all team commits go >> that way, and therefore also touch a wider range of code => then it >> will happen more often. > > Why would that happen ? I gave an example, more simultaneous branches on a small amount of work (since team members probably have "areas" on which they do concentrate their work, and if the frequency of parallel commits/branches in a small area goes up, then that is a risk factor for conflicts. This is based, on the branches existing for some time before merge. See next part of reply. > > The member pushing the MR can merge it as soon as he created it. If it is merged immediately, then why do a merge request? If I have a commit (a commit of my own), that I just did myself (and I did locally on my machine, as most people do for their own commits.... And if I want that commit to be merged/cherry picked ... => why do I need to go via gitlab (as tool), if I locally already using git, which can do the merge immediately? with no extra effort? Actually, possible with even less work? What is the gain by going via MR @ gitlab? I thought your argument was to use the MR to track outstanding cherry picks? But If they are already done, then they need no tracking (tracking for future picking them)?

The logging and grouping. The CI/CD, and see below.

Show quoted text 5 lines
> The point of the MR is to have a record of grouped commits that can > easily > be flagged and merged later on. You just said "the MR can be merged as soon as it is created"

Yes. flagged is the key word.

Show quoted text 28 lines
-------------------------------------- >> >> Then we were talking about 2 diff things. I was under the impression >> this was all still about the "every commit by every team member >> should go via an MR". > > It is. See below, integrator role. > >>> Given the amount of work I do on MRs, if I can flag and later or >>> immediatly merge MRs to a fixes branch, it would be a huge time saver. >>> >>> So if the team would also use MR's and just flag them 'fit for fixes' >>> then that should normally  result in more regular releases for the >>> users. >> >> Is that you volunteering to look after the flagged commits? > > yes, obviously. The role is usually called an integrator. Ok, well, in that case I say, if you volunteer to do the work you have a right to say in which way you want the "notification for outstanding work" to be done. How much of a "pre-decision" lays by the committer? I.e., if the committer commits a new feature, they know that wont be taken into fixes => so in that case they would NOT need a branch, and NOT create an MR?

Theoretically, yes.
But then the day of the release comes and suddenly 'oh, can we please have these commits too?'

-> not an issue if there was a MR.

From experience, after some time you stop thinking about doing a MR or not,

you just do it. As I wrote to Marco, I do more than 7 MRs a feel in no way hampered by it:

I set to auto-merge, the CI/CD kicks in - takes 20+ minutes, and it's merged.

Show quoted text 12 lines
So the proposal you make would then be: - if anyone commits something that may (as in maybe) go to fixes - they commit into a branch. - they merge the branch into main, by any means they like (probably except fast forward) - they create an MR (that can actually be an MR to fixes branch) => they are done. You will then deal with the MR. The MR replaces (or introduces) a means of "writing down" all/any commits that may (maybe) go to fixes?

Yes.

Show quoted text 22 lines
I think there is a selling point for that. (of course you have to still sell it to your team mates, rather than to me / but if I was team, I would buy in) Might need some workflows for everyone, such as, if someone forgot to create a branch => they then can use rebase to extract the commits into a branch (creates a copy). (actually haven’t tested how clever gitlab is => if one creates a branch at any point in main (then that point is the "fork point"), one could then fast forward the branch. There would be no 2nd line of commits. No visible branch point. But the fork point exists (I think it is taken from the reflog, but I need to check). If one pushes before and after the FF, then gitlab should have that fork point too.... Curious if such a branch works for an MR.) > > We do this integration today, manually. It's clearly not working. Matches my observations (though I can't fully judge the reasons). But since your proposal includes your manpower, I would expect it to be a true improvement)

That is what I am hoping.

> By doing what I propose, the role of the integrator becomes much easier. That depends on the integrator, but in this case: Yes.

Yay, I managed to convince someone!

[Michael goes off to have a beer and celebrate]

Michael.

Reply by email

Graeme Geldenhuys
to Martin Frb: I gave an example, more simultaneous branches on a small amount of work (since team…
BST Martin Frb wrote
area goes up, then that is a risk factor for conflicts.

I million lines of code in FPC (I didn't count - so don't hold me to it) and what... 15 developers with commit access. Chances are super slim.

I work in a team of 15 developers on a large microservice of about 500k lines of code. We often swam on a single feature, thus same area of code. I can count on one (per month) how many times we get merge conflicts git couldn't resolve itself. And if so, those are normally pretty small to fix.

Infinitely better than what Subversion managed.

Regards,
Graeme

Reply by email

Nikolay Nikolov
to Graeme Geldenhuys
Graeme Geldenhuys wrote
On Sunday, 19 April 2026 18:46:46 BST Martin Frb via fpc-devel wrote: > area goes up, then that is a risk factor for conflicts. I million lines of code in FPC (I didn't count - so don't hold me to it) and what... 15 developers with commit access. Chances are super slim.

Changes to the compiler in trunk almost always lead to merge conflicts. Adding a target, refactoring the compiler to add such things as LLVM support (by adding the high level code generator), the current refactoring of the front end to eliminate global variables (and allow multithreaded compilation in the future) touch a lot of files! So, your statistic is too simplistic and wrong.

See e.g. the (unfinished) changes I'm currently working on in the eliminate_global_state branch:

https://gitlab.com/freepascal.org/fpc/source/-/compare/main...eliminate_global_state?from_project_id=28644964

These changes will probably be merged to main after the branching of the next stable branch for FPC 3.4.0, so merging of fixes between 3.6-main and 3.4-fixes will very often lead to conflicts!

Nikolay

Reply by email