in reply to Re: Module::Starter, a helper for new module authors
in thread Module::Starter, a helper for new module authors

Please God no. Module::Build (0.23, Mac OS 10.2.8, Perl 5.8.3) has been a plague to me by failing to work with CPAN installs, while ExtUtils::MakeMaker has always treated me well. Maybe there are good reasons to head toward M::B, but from looking at the "motivation" section of the POD, I'm not so convinced. (Disclaimer: I am not, nor have I ever been, a Windows user.)

It claims that "Perl is said to be a language for system administration. Could it really be the case that Perl isn't up to the task of building and installing software?" This absolutely grates -- Perl is about text manipulation and system administration, but it's also about gluing existing parts together. If there's a tried-and-true wheel out there, Perl can usually take advantage of it, rather than having to reinvent it. Even if M::B is made to work as well as make at the moment, it will lead to a constant duplication of effort as platforms change, so long as other projects continue to use make, and therefore keep it up-to-date. As it says in the M::B docs, "It is risky to make major changes to MakeMaker, since it does so many things, is so important, and generally works." So on the one hand, there is crufty code; on the other hand, I appreciate its "generally working." (This sounds like a Perl 5/6 comparison in some ways, and I see neither an effort to convert people to Perl 6 by subtle default, nor a cry that they adopt it simply "because it's new".)

For people who need to do elaborate tweaks to the build process, M::B sounds like a definite improvement. But for the rest of us, and certainly for most users of Module::Simple, EU::MM will minimize pain to both author and users.

  • Comment on Re: Re: Module::Starter, a helper for new module authors

Replies are listed 'Best First'.
Re^3: Module::Starter, a helper for new module authors
by adrianh (Chancellor) on Apr 05, 2004 at 14:15 UTC
    Module::Build (0.23, Mac OS 10.2.8, Perl 5.8.3) has been a plague to me by failing to work with CPAN installs

    Try 0.24 - I think you may have hit M::B at a bad time. Both 0.22 and 0.23 had some rather annoying bugs with passthrough Makefile.PLs that caused problems when used with CPAN. I suspect that 0.24 will work fine, as would using CPANPLUS which calls Module::Build directly rather than using the Makefile.PL.

    I've been using M::B on Mac OS X, various Linux varieties, Free BSD and Solaris with no problems.

    Perl is about text manipulation and system administration, but it's also about gluing existing parts together. If there's a tried-and-true wheel out there, Perl can usually take advantage of it, rather than having to reinvent it

    The problem is that there isn't a wheel, there are several. The various make variants all work in slightly different ways. Dealing with this is one of the reasons E:MM is so complex. Dealing with this variety when writing extensions is a pain. Then there are those platforms that don't have that particular wheel by default.

    Next there is the problem that the declarative makefile style isn't always suitable to express the dependencies and processes you want to happen during a build process. So you have to jump backwards and forwards between the makefile and perl code - which is hard.

    Finally there's the problem that EU::MM isn't really built to be extended, so it's a royal PITA for folk like me who need to make custom build processes :-)

    For people who need to do elaborate tweaks to the build process, M::B sounds like a definite improvement. But for the rest of us, and certainly for most users of Module::Simple, EU::MM will minimize pain to both author and users.

    Depends on the author/user I guess ;-) For those platforms that don't come with a make M::B can be a lot simpler. As a CPANPLUS user I have had zero problems using Module::Build. As a module author I vastly prefer it to EU::MM since it's really easy to extend.

      As a CPANPLUS user I have had zero problems using Module::Build.
      You see, CPANPLUS falls into the same category as M::B for me, namely "solutions looking for a problem". Both replace modules with supposedly hairy internals that have been carefully tweaked and polished over years to do their jobs quite well. Both have chosen to compete head-on with mature solutions, and both often compete based on criteria (extensibility, maintainability) that are only relevant to a tiny fraction of their users. I wish them well, but you'll have to forgive my not seeing a compelling reason to switch.

      As a module author I vastly prefer it to EU::MM since it's really easy to extend.
      As a fellow member of the module-authoring elite, I've never needed to extend EU::MM. I'm not sure whose experience is more representative here.

      Next there is the problem that the declarative makefile style isn't always suitable to express the dependencies and processes you want to happen
      I take this as a challenge... people manage to write major programs in Prolog and Haskell, despite their declarative natures ;). YMMV, of course.
        You see, CPANPLUS falls into the same category as M::B for me, namely "solutions looking for a problem".

        CPANPLUS falls into the same category as M::B for me too - except it's the category of "thank goodness - at last a solution to some long standing problems" :-)

        I wish them well, but you'll have to forgive my not seeing a compelling reason to switch.

        Then don't ;-) I was just pointing out another solution for automatically handling M::B's Build.PL files. I believe a patch has gone into CPAN too, so hopefully that will make it into 5.10 and make the whole issue moot.

        Indeed, if you avoid the 0.22 and 0.23 releases CPAN should cope quite happily with a M::B install now, as long as there is a passthrough Makefile.PL.

        As a fellow member of the module-authoring elite, I've never needed to extend EU::MM. I'm not sure whose experience is more representative here.

        Of course, if you don't need the functionality then don't use it. I'm not trying to force people to move to M::B - honest :-)

        I just that, for me, the improvements that M::B gives me in building and installing modules are worth the minor-to-non-existant pain of dealing with CPANPLUS and/or passthrough Makefile.PL files that I have encountered.

        I take this as a challenge... people manage to write major programs in Prolog and Haskell, despite their declarative natures ;). YMMV, of course.

        I'm not knocking declarative languages. I've done a lot of Prolog in my time (I even reinvent it in Perl on occasion :-). It's just that inserting bits of Perl into a makefile via EU::MM is non-trivial.