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

Reply via email to