> Heed also: all we do right now is pass through a configure_requires
> parameter from new() to the META.yml.
Great, that's all we need for the basic implementation.
> The original idea from Adam was to automatically add
> configure_requires => {M::B => $M::B::VERSION} to every M::B-using
> distro, but we don't do that at this point.
To clarify, my original intent was that you DEFAULT to $M::B::VERSION
unless told otherwise.
This provides a reasonable guarantee of feature/command support, at
the cost of potentially overly aggressive upgrading.
I had expected that a large percentage of people would specific a
version directly to mitigate the what I'll call the "aggressive
upgrade" problem.
In a situation where an unknown problem in a release causes an
OMGIBROKECPAN bug (which I'll class as impacting 1000 distributions or
more, potentially unrecoverably because the toolchain is broken) but
instead of typical lazy upgrade cycle you get by explicitly specifying
a minimum version (which reduces and delays the impact of the bug on
most people) defaulting to the newest version (which most authors
will) would mean that many new module releases will have their
configure_requires entry auto-update to the latest.
One or two popular modules doing this (think Template Toolkit or some
new popular thingy like, at the time, ack) would result in high
numbers of people (at least relatively, possibly also in absolute
terms) upgrading to a new version without 24 or 48 hours of the
Module::Build release, which is the biggest window for an
OMGIBROKECPAN bug.
Unlike Schwern's Test::Builder bug, which took WEEKS before we noticed
and a day or so to be sure it was a major bug because of lazy
upgrades, a major bug in Module::Build could break a
disproportionately large number of installs.
So I have to admit I'm in two minds now what we should do.
I think it would be reasonable to have a Module::Build => 0 dependency
as a default.
If Module::Build is inherently aware of the versions in which features
or methods appear, it might be practical to scatter some sort of
feature_requires_version(0.28) invocation around in the various
methods, and have M:B default it's own minimum version in a smarter
way...
Which of course brings up another issue... if the user specifies a
minimum Module::Build that Module::Build thinks isn't new enough, who
do you trust.
Anyways... here's a can of worms, discuss.
Adam K