All the Perl that's Practical to Extract and Report

Navigation

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Without JavaScript enabled, you might want to
use the classic discussion system instead. If you login, you can remember this preference.

The problem is that there tends to be tight coupling between many of these, but we have decentralized and largely uncoordinated tools and different toolchain combinations are needed to handle these tasks. Roughly in order of number of components:

Have I missed any? (I'm not even addressing Module::Build being used to generate a Makefile.PL, as that's Module::Build being used as an Authoring Tool to support #2 and #5 above. I'm also ignoring the complications that XS create.)

I may also have missed some Module::Install variations, as I'm not entirely sure where it ends and the other components begin from a task perspective.

I broke out the CPANPLUS::Dist::* ones separately, as *::Build is now a separate distribution -- in part to allow faster upgrades to the coupling between components.

So there's anywhere from 2 to 5 different components, each of which are maintained separately and have separate release cycles. Is there any wonder this breaks?

I like the Module::Install approach of bundling itself with the distribution because it helps a distribution to try to be good to users who have old versions of the other components. But it still sits on top of the rest of a cruddy toolchain, so it doesn't really address the core problem.

Things I think might help the situation:

I think refactoring the whole process around the individual tasks would help. I think CPANPLUS had the good idea of breaking up front-end administration from back-end distribution-specific plugins. CPAN should do the same.

CPAN and CPANPLUS should aggressively try to auto-upgrade themselves if they can, and they need to be seamless doing so (no lengthy configuration steps).

I'd like to see a CPAN.PL file that tells CPAN what installation plug-in to use. CPAN should then aggressively try to upgrade that plug-in or use one bundled with the distribution.

Potentially, distributions would use the Module::Install technique to bundle CPAN and appropriate plugins to upgrade CPAN if that was out of date. Yes that's even more bloat, but space is cheap these days and CPAN 1.87 is only 242K. I'd rather see bigger but more robust distributions over smaller ones that break under older versions of the toolchain.

That's my ramble for a Sunday morning. I think there's a lot more thinking that could be done about refactoring the whole process, but the big challenge will be getting the entire toolchain upgraded across current/legacy Perl's with and without network access. There, the Module::Install approach of bundling seems to have some interesting potential -- if anything, perhaps it doesn't go far enough!