On Mon, Mar 28, 2005 at 07:52:22PM -0500, Christopher H. Laco wrote:
> Michael G Schwern wrote:
> >Until such time as there are test_* flags, one should take a pragmatic 
> >view.
> >And that view is "what is going to cause the least amount of hassle for
> >those who want to install my module" because they don't know nor care about
> >the internal mechanics.  
> [snip]
> 
> Sticking with ExtUtils::MakeMaker. :-)
> [But where's the fun in that.]

I know you're joking, but you've flipped my rant switch.

*****************************************************************************
The following is rant.  Please scale the hyperbole down to an acceptable size 
*****************************************************************************

I hear a lot of complaints about Module::Build of this form:
"Module::Build can do X and Y but it can't do Z.  I'm switching back to
 MakeMaker!"

Often, MakeMaker can't do Z either, or even X and Y!  Or it takes so much
hackery to get MM to do X, Y and Z that you could have patched MB nine times
over in the time it took to get MM to do it.

For example, the dependency nits we've been discussing.

There's no point here except maybe to explain why my jaw is so often on the
floor listening to Module::Build vs MakeMaker comparisons.

Maybe there is a point, and I'm going to fly off into analogy here.

Module::Build is like a female politian.

What?

Module::Build is like a female politian.  Or to be even more broad, a non-
white, male, christian, above the age of 35 politian.

MakeMaker is the old man of Perl.  Its "known, working technology" as someone
on Perlmonks once said.  We're willing to give it every benefit of the doubt
because we're so comfortable with its many, many, many quirks and it "works"
if you are running Unix, not trying to link in XS code and not doing anything 
too complicated.

But those who understand how MakeMaker really works are horrified by it.

Module::Build, otoh, is new, clean and potentially infinitely better than
MakeMaker.  So many features that I have to reject for MakeMaker because it
would break something or require huge amounts of work and testing would be
almost trivial in MB.  And I point that out all the time.  And that people
should go spend their time on MB.  With a fraction of the effort *I alone*
have to spend on MakeMaker, Module::Build could blow past it in terms of
functionality and reliability.

But it hasn't.  And I only see a small number of people patching 
Module::Build.  And there's tons of low hanging fruit available.

What's going on here?  One thing I see going on is that people are holding
Module::Build up to rediculously high standards.  Much, much higher than
MakeMaker ever was.  Anything Module::Build tries to do people still nit-pick
it to death, and here's the horrible part, they don't generate much patches.

Take dependency resolution.  MakeMaker has one way to specify a dependency.
MB has a whole spectrum.  And yet people still want to fall back to MM's
low resolution dep system because MB's isn't quite high enough.

Take create_makefile_pl.  Module::Build bends over backwards to be compatible
with MakeMaker.  It offers not one but THREE different methods of providing
that.  Hell, it'll even generate a Makefile.PL that will download MB for you!
And yet when people encounter small problems with it the response isn't
"Here's a patch" or even "I'll just work around that for now".  No, its
"I'm going back to MakeMaker" where they'll likely have to do more work and
more work arounds to achieve the same effect.

Module::Build is the female politian of Perl.  It has to do things nine times
better than MakeMaker to be seen as being equal.  Its failures are jumped
all over while MakeMaker's failures are forgiven.  And despite ringing
endorsements from people who really should know, such as ME, THE MAINTAINER
OF MAKEMAKER AND KNOWLEDGABLE PERSON OF HOW PERL MODULES REALLY GET BUILT AND 
INSTALLED, I can't seem to get people to put their effort into patching
MB rather than hacking around MM.  Folks don't seem to want to patch MB
despite it being demonstrated as being trivial compared to MM.  I ported
MB to VMS in a night!  I made it work on MacOS Classic better than MM ever
did IN THE SAME NIGHT!  I recently threw away all the MacOS Classic code in
MakeMaker because it was such a disaster and never really worked anyway.
MakeMaker 6.26 went through TWELVE alphas trying to get VMS to work properly.

*deep breaths*

The point is this.

* Give MB a chance.
* When you encounter a problem in MB, try to patch it.
* Do not expect Ken and Randy to do all the work for you.
* Do not immediately run back to the warm, familiar, utterly flawed embrace 
  of MakeMaker.

Thank you.  This has been a rant.

Reply via email to