On 7/30/07, Ovid <[EMAIL PROTECTED]> wrote:
> We also have dependencies on Sub::Uplevel (a notorious source of build
> problems),

Excuse me?  CPAN::Testers for Sub::Uplevel 0.14: PASS 165 FAIL 0

There was a time when Test::Exception had things in build_requires
that should have been in requires.  Test::Exception also exposed bugs
in nesting uplevel() calls, but this only affected modules that used
Sub::Uplevel and tested code with Test::Exception as well.  In those
cases, Sub::Uplevel wasn't just a build requirement anyway and test
failure were quite helpful in finding and fixing the upstream bug.

> So for this trivial example, we have about 40,000 potentially unneeded
> installs and possible failures.
>
> Of course, that's a rough and stupid calculation and those numbers have
> NO MEANING, but it shows how quickly this could balloon.  Now try and
> calculate this for all CPAN modules.  You can see why false negatives
> are a fact of life and anything which avoids this would be wonderful.

<sarcasm>And if usage of Perl doubled, we'd have 80,000 unneeded
installs!  So clearly the answer is to reduce the number of people
using Perl to reduce the number of unneeded installs.</sarcasm>

So, yes, that's a rough and stupid calculation.

CPAN is a core strength of Perl because it makes developer's lives
easier by not reinventing the wheel.  More usage of modules means more
installs and points of dependency failure.  Modules which use lots of
dependencies that might fail to install will themselves fail to be
installed more often and may be passed over and the world goes on.  So
let's not start a "dependencies are bad" bandwagon -- let the market
figure out what dependencies are worth the risk.  (I.e. your chance of
install failure is increased by the install failure chance of all your
upstream dependencies)

In my view, testing modules that make modules faster to develop and or
lead to better diagnostic output when failures do happen can make
author's lives easier, which leads to more development, which is a
good thing.  If that means some extra installs, well, OK.  Balance the
benefits to you against the likelihood that some people won't put up
with the extra dependencies.

The issue at hand is really *release* testing (i.e. did I bump the
version, did I test my Pod, do I use good style, etc.) being mixed
with *functional* testing -- and the corresponding push for release
testing modules being included as requirements.

For that, I blame -- among other things -- Module::Starter for
including pod.t and pod-coverage.t and with a default setting to run
tests.  Better would have been to skip tests unless
$ENV{AUTHOR_TESTING} or some similar flag was set.

Yes, there's good defensive code to make sure Test::Pod and
T::P::Coverage are installed, but that just encourages people just
putting them in their prereqs as it's easy to imply that they should
be run if at all possible.

(There's also a tricky problem with T::P::C being happy with any
version of P::C, too: http://perlmonks.org/index.pl?node_id=508109 )

If some author wants to bear the risk of forcing them as a dependency,
fine.  But I do think that the community shouldn't be actively
encouraging that through Kwality, Module::Starter and so on.

Regards,
David

Reply via email to