|Perl Monk, Perl Meditation|
Module::Build and the PPMby barbie (Deacon)
|on May 18, 2004 at 12:48 UTC||Need Help??|
Recently there was an upload to CPAN featuring a PPM of an already existing distribution. Due to the way new uploads are announced, the module got announced on the cpan-testers list, and consequently got tested. As it's a ppm distribution it contains only a blib/ directory of files. The result for cpan-testing where several UNKNOWN reports being sent to the author and the list.
Randy Kobes sent a mail to the list indicating that as a result of a recent upgrade to Module::Build, that this is likely to now happen quite a lot. As a result of an intriguing conversation with Randy over this, it raised a few points/questions in my mind.
Now there are whole lot of issues here, and many monks maybe already writing their retorts now. However, this is not intended as a flame incitement, but a starting point (seeing as no-one seems to have started one before) for further discussions. Let me clarify my thoughts further.
Point 1: CPAN is well established and there are generally three recommended ways to install using any part of CPAN. perl Makefile.PL, CPAN.pm or CPANPLUS.pm. Some also use Module::Build, but that's not currently as popular as the others. As such anyone trying to use either of those methods is not going to get an install from this distribution. This then affects how some may perceive CPAN. This is bad in my opinion.
Point 2: I can see the following both being uploaded to CPAN; A/AU/AUTHORX/PPM-Cool-Module-0.01.tar.gz and A/AU/AUTHORY/PPM-Cool-Module-0.01.tar.gz. Which one is the Module::Build generated ppm distribution? The answer will be in 02packages.details.txt.gz. Or you could just download and see what's in it.
Point 3: I might be off course here, but wouldn't it have been more wiser to have Cool-Module-0.01.ppm.tar.gz? Or even better to have Cool-Module-0.01.ppm, which would actually be a tarball including a .tar.gz and .ppd. This would then make it much better to spot what it was. I have often wonder why ActiveState never adopted something like that. Perhaps that's for PPM4.
Point 4: If you are likely to affect how CPAN is used, it would seem to me, that you should be at least be courteous to let the CPAN/PAUSE maintainers, and other authors, know about what you're planning. I haven't seen any such discussion either on the module-authors list or the authors list. Randy actually mentioned that there wasn't much discussion on the Module::Build list, which I am very surprised at. Now maybe it wasn't envisaged that these distributions would be put on CPAN, but I can't but feel it must have been something that the authors considered as part of the effects of the change.
Point 5: I personally would like to see a repository of RPMs of Perl distributions available, as here at work we are planning to recompile a whole host of distributions as non-threaded. It would be nice if we could just pick them off the shelf. Randy tells me there are some RPMs already on CPAN, but I haven't come across any, and am not convinced that CPAN is the place for them anyway.
Continuing Points 1 and 5 first. Perhaps now that there are so many PPM repositories available, is now the time that those with repositories start getting together and looking at replicating each other, much in the same way the CPAN mirrors work? As the CPAN mirror process has proved successful, a PPM and a Perl-only-RPM mirror network might be just the thing to further the great thing about Perl and CPAN networking. It would also mean that the few current servers that host high profile PPM packages (Template-Toolkit comes to mind, as even ActiveState don't carry it) might balance the load on each more evenly. Then if a mirror did go down, there are still several repositories still online. Now don't get me wrong this is a big task, and not one I would approach lightly. However, the fact that situations like this ppm distribution upload are beginning to occur, perhaps now is the time for PPM repository owners to get together.
Continuing Points 2, 3 and 4. I seem to be continually up against Module::Build, as I have had nothing but problems with the distribution, despite several of the London Perl Mongers claiming it to be the latest and greatest. Maybe its because I've only tried it on Windows, however, perl Makefile.PL/CPAN.pm/CPANPLUS.pm works fine on every Windows machine I've used. While I applaud the authors for trying to create a pure Perl build mechanism, I am also disappointed when they seemingly try too much, without appearing to think things through. Allowing Module::Build to create and probably install a ppm distribution is to their credit. However, the way they have gone about it, appears to me perhaps not the best choice.
I guess this all comes down to the following questions: