I have a couple of CPAN Testers failures listed against SVN::Notify::Config specifically because I specified a minimum Module::Build release, and the person running the tests upgraded Module::Build in the test sandbox, while trying to build SVN::Notify::Config. I hate this, because it means I don't find out about actual failures in my code, but rather only failures in the testing framework.
I see now that Ken has added --allow_mb_mismatch (and with the last release actually mentioned it), so you can ignore the die() if the _build directory was built with a different M::B release than the one that is currently installed. This is better, but only up to a point. What would be better is change that die() into a warn() iff the installed version is newer than the version that was used to generate the _build directory. What would that give us? Well, for one thing it would give me three less failures on my CPAN Testers page. ;-) But more than that, by warning if the currently installed version is higher, we are still on very comfortable ground. The M::B testsuite is very complete, and there shouldn't be any regressions in newer releases. So the newer release of M::B should not have any problems in executing the older _build files. If there were new features introduced in a later version that changed the contents of _build, they would simply not be available until Build.PL was rerun. If there was a bugfix that meant that the old files couldn't be used, then we could add that as an exception. Ken would have to comment on whether that was at all likely, based on history. Of course, there is also the belts and suspenders approach with version::Limit, which allows a fine-leveled compatibility contract. I'm not suggesting that, because it would require a lot of care to decide which capabilities were forward compatible as well as backward compatible. It /can/ also be used to simply block off bad releases individually. As a last alternative, perhaps the die() could be replaced with a prompt() asking the user to decide whether to continue with allow_mb_mismatch in place (with a default of Y). This would have the correct behavior under CPAN Testing or CPANPLUS, in that a non-interactive install would throw a warning, but not stop the installation. John -- John Peacock Director of Information Research and Technology Rowman & Littlefield Publishing Group 4501 Forbes Blvd Suite H Lanham, MD 20706 301-459-3366 x.5010 fax 301-429-5747