The current process worked fine for more than a decade, and there is nothing fundamentally wrong with it that it could not support 2 fixes releases per year. With the original care and everything.
Wait... from what I've understood, the current process isn't the same as the previous process, specifically, the software used to manage the releases isn't the same and the release manager also isn't the same.
This cycle had to adjust to GIT, and that caused many delays, but the essence remains the same. But the migration could also have been handled much faster. And there was no reason to hold the fixes branch over an year in freeze if you don't initiate anything to make a final release.
Those changes likely imply other changes in the process that are not obvious but there nonetheless. We all see the result: 5 years without a release and I believe that's what we all want to avoid in the future.
If you really want to see the cause in the process no matter what yes. But I'm telling you, that is not it. It is the people. They get older, have less free time, and prefer to spend time on fun things rather than thinking of releases. The new release manager avoids conflict, so didn't force people to do their thing now, or forget about it, and presto, a 5 year gap.
I think @Juha has a point. FPC is a large and varied project. Even someone who is very well versed in compiler development is unlikely to be an expert in every platform FPC supports, including the different code generators, optimizers and linkers required for different platforms.
As said, the compiler is not merged via common procedures anyway after the .0 release. Between branching a new fixes branch and the .0 release, there is a lot of main-> fixes merging that is relatively straightforward, but after that less and less, as simply the class/datastructure of the compiler changes, needing a real will to migrate changes.
This implies that whoever is managing the global project has to delegate responsibilities to other members to ensure those parts of the project keep advancing and make it into the next release in a timely basis.
Delegating also means following up if that doesn't happen, and having process in place for that. And that is where the problems of such approach lie. In companies and high profile open source project with dedicated release people and/or even paid workers that simply means rotate to the next grunt to do the work and a negative recommendation.
What do you do in the future if a committer hardly merges up front, and if you talk to him about it he says "safety" and says he will look at it the weekend after next ? Read all the mails of Michael and Graeme c.s., and see what alternate procedures they describe except for the "flag for merge at the moment" and the "release manager that dutifully and automatically presses the button when prompted". They don't even commit to maintaining an eligible revision list, making falling back to the current process in the case of problems, or simply to mop up revisions that were wrong.
Sometimes when asked, they all postpone that to the future and scripting and the like. Just like they did with the gitlab migration, but it took over 1.5 years to get basic cherry-picking with a list of merged revisions available. By the time such things are sorted, the new fixes branch will already be old. And even if the support still must be written, you could outline things way more detailed.
Quite likely my perception is overly simple but, it seems to me that, at this point, the current release manager is part of the problem.
Certainly. But it is carrying out the tasks, not the tasklist that is the problem.