As I mentioned yesterday, I now have a new shiny analysis toy in the form of downstream dependency graphing.
So now we can tackle some issues that have been hard to get traction on until now.
The first one I'd like your help dealing with is some fallout from Kwalitee and Perl::Critic, unintended consequences of superficially positive metrics targeted by contestants in a game without access to clear best practices resulting in damage to the CPAN graph.
(Don't get me wrong, I'm a huge supported of CPANTS and Dom did a lot to help me with it, including creating the original version of the awesome red and green box author page basically to my spec. This is just about two particular metrics)
It's not so much the use of them at all, since they are quite safe to use when applied with author test best practices.
It's that many (alas, very many) people used these modules in ways that made their use compulsory, imposing hard dependencies instead of soft dependencies (only running them if already installs).
Test::Pod imposes a Perl 5.8 dependency, blowing any chance at back-compatibility for anything that uses it.
And Test::Pod::Coverage has a history of failing to get to 100% PASS rates, the current release has 30 odd failures.
So, what's the shape of the problem we've got here?
Let's start with Test::Pod::Coverage.
(Don't forget to use CTRL-minus to zoom out)
As you can see, there are a couple of large nasty tangles of dependencies, and a number of high-dependency explosions.
And even though Test::Pod::Coverage has 650 dependencies (resulting in 18,500 FAILure points) it's obvious from the graph that several hundred dependencies can be removed by fixing just three modules
There's one more critical high-dependency node there (Test::Distribution) but as a Test:: module depending on another Test:: distribution, it's far more likely it is a legitimate dependency.
But even without that last one, we've got some very juicy low-hanging fruit to go after here. And once these three have been fixed, we can rerun the graphs and see if anything else stands out.
So now we move on to Test::Pod, which is bigger again.
As with Test::Pod::Coverage, the three previous modules (Test::Compile, Module::Find and WWW::Search) show up again.
And this graph also adds some more interesting targets.
So that's no more than around 7 modules that we need to tweak and rerelease to unwind half or more of the dependencies, and reduce the dependency weight of many of the Heavy 100 by 5 dependencies each.
By doing this reduction of false dependencies, we reduce the time it takes to install CPAN software, and reduce false failures due to failing dependency modules for things that never should have been dependencies at all.