While I didn't advocate a "no branch policy" I did recommend that main
be seen as the unstable branch and that stable branches (including
"release" branches) be created from main. My reasoning is that the
developers have stopped working together. Instead, they work
separately then try to integrate. Working with others is seen as a
pain, so the tendency is to simply not, and the integration gets
delayed, and delayed, and delayed.
I understand that an unstable branch is intimidating to some, as
experimentation needs a stable base, but experimentation branches can
be created from stable branches, and changes that show up on the
unstable branch can be merged in as needed. On the other hand,
working on small changes is often best done without a branch, as
integration is the focus, and not being able to tell if your changes
will break some experimental branch means that you're offloading work
onto the experimenters, and that also makes people reluctant to
contribute.