I remember that back when I was co-RM for PHP 5.3 one of the very painful parts was the crying and moaning about the commit freezes we put into place while packaging up a new release. The reason being we were on CVS, if people kept committing while a release was being tested it would effectively prevent any sort of QA. Obviously we could have just tagged at the start of the QA process, but pretty much every time build fixes were necessary, if you then also throw in normal commits it wouldn't work at all. So we usually reserved about 2 days where no commits were allowed. Since there is no truly reliable way to inform people there would frequently be one or two commits still, but it was somewhat manageable. However it obviously made it quite annoying for people to work in this time interval. Either commits had to be delayed or someone had to remember to merge the change from HEAD once the commit freeze was over.
Right after 5.3 came out we made the switch over to Subversion. Yes its not a distributed VCS, but its well known, fairly similar to CVS and someone spend the time to actually make the switch a reality. I still believe that for a large OSS project it makes sense to use SVN as the central repository and if needed simply ensure that there is infrastructure to mirror to some DVCS. Anyways one of the big benefits of the move away from CVS is that we now actually have a bit more fun (merge tracking and friends) in terms of working with branches not only for a minor release (aka 5.2, 5.3 etc) but even for patch releases (aka 5.3.1, 5.3.2 etc).
This means we no longer need to do commit freezes. Of course we could have also done the same with a bit more pain with CVS. Actually even with SVN its still not really trivial to manage all of this and so a lot of core developers have spoken out against using branching even for patch releases. However Pierre has stepped up with a little script that filled in all commits to the main branch and if they have been merged yet or not. The initial version used the wiki and now we have a fancy tool that makes the process very transparent and the risk for things falling through the cracks are now pretty slim. Even if something does slip through its a lot easier to identify which parts exactly didn't get applied. I think this is really a top class effort to make the life of RMs easier. And the work of the RMs is to make the life of all core developers easier .. so everybody wins :)
Was just pondering my title. I guess the summary of the above is that looks like PHP's kicking and screaming about branching is now more like James Brown: I feel good!
Php branching kicking and screaming....Its new to me...