-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Aug 13, 2008, at 6:41 PM, Antoine Pitrou wrote:
Le mercredi 13 août 2008 à 18:33 -0400, Barry Warsaw a écrit :
Or to adopt tools that help improve reliability. I'm not convinced that the buildbots really do that. A PQM-style approach, while more of a pain for developers because of the serialized landings, would definitely improve things, and there's not nearly as much infrastructure involved to keep humming for old releases. PQM isn't perfect, but I do believe it would help.
What is a "PQM-style approach"?
PQM = Patch Queue Manager
Basically, it's a robot that controls commits to the trunk. Nothing
lands in the trunk without getting through PQM first. PQM serializes
changesets so that they must apply cleanly with no conflicts, and pass
the entire test suite. There could be other conditions, e.g. that it
lints cleanly, has no whitespace issues, etc.
If any of the set of conditions fail, the changeset does not land.
This means that the trunk is always in a releasable state, and we
avoid the problems I run into all the time now, where we have red
buildbots on or near release date. I would dearly love to be able to
spin a release at any time and have a high degree of confidence that
what I'm releasing is stable.
There's a specific implementation of PQM based on the Bazaar revision
control system, available here: https://edge.launchpad.net/pqm
PQM is not perfect, nor is it a perfect fit for us. For example, we
have buildbots that run on multiple platforms, while PQM runs on a
single platform. So a vanilla PQM could still miss changes that break
only on a specific operating system. It also doesn't help at all for
bugs not covered by the test suite (well, buildbots don't help there
PQM also introduces delays on trunk landing because it serializes
commits. So when things get backed up, it might take a while for your
branch to land on the trunk.
PQM wouldn't replace the buildbots, but it would greatly improve the
quality of the development branches, IMO. The buildbots would still
be useful to ensure cross-platform quality.