NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.
All the Perl that's Practical to Extract and Report
Stories, comments, journals, and other submissions on use Perl; are Copyright 1998-2006, their respective owners.
Not really talking about installers (Score:1)
I think this taxonomy is lacking because it confuses several different tasks:
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:
CPAN, Module::Build(2)CPAN, ExtUtils::MakeMaker, make(3)CPAN, Module::Install, Module::Build(3)CPANPLUS, CPANPLUS::Dist::Build, Module::Build(3)CPAN, Module::Install, ExtUtils::MakeMaker, make(4)CPANPLUS, CPANPLUS::Dist::MM, ExtUtils::MakeMaker, make(4)CPANPLUS, CPANPLUS::Dist::Build, Module::Install, Module::Build(4)CPANPLUS, CPANPLUS::Dist::MM, Module::Install, ExtUtils::MakeMaker, make(5)Have I missed any? (I'm not even addressing
Module::Buildbeing used to generate a Makefile.PL, as that'sModule::Buildbeing 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::Installvariations, 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*::Buildis 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::Installapproach 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
CPANPLUShad the good idea of breaking up front-end administration from back-end distribution-specific plugins.CPANshould do the same.CPANandCPANPLUSshould 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.PLfile that tellsCPANwhat installation plug-in to use.CPANshould then aggressively try to upgrade that plug-in or use one bundled with the distribution.Potentially, distributions would use the
Module::Installtechnique to bundleCPANand appropriate plugins to upgradeCPANif 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::Installapproach of bundling seems to have some interesting potential -- if anything, perhaps it doesn't go far enough!Reply to This