xsawyerx/module-starter

Default should be Module::Build, not ExtUtils::MakeMaker

Closed this issue · 5 comments

This is opinion, so feel free to close if you disagree.

The default builder is currently ExtUtils::MakeMaker. perldoc perlnewmod says:

The module-starter utility is distributed as part of the Module::Starter CPAN package. It creates a directory with stubs of all the necessary files to start a new module, according to recent "best practice" for module development

However I think most agree that Module::Build is the better choice for new modules. Here is Schwern on stackoverflow:

As the maintainer of ExtUtils::MakeMaker, I like to recommend Module::Build because MakeMaker is a horror show and I don't want to maintain it any more. Module::Build is so much better put together.

I found many sources that recommend Module::Builder over ExtUtils::MakeMaker, that was just one.

But as I said this is opinion. I do however find it sad that perldoc perlnewmod indirectly suggests ExtUtils::MakeMaker as a best practice through Module::Starter's default.

Ok, that was probably a little arrogant of me to file a bug report. Perhaps I should have started with:

Is there a good reason why ExtUtils::MakeMaker is the default instead of Module::Builder?

;-)

No, ExtUtils::MakeMaker should be the default, not Module::Build. Module::Build should only be used in a distribution if necessary (i.e. it is performing a task that is more difficult or impossible with other builders).

That advice from schwern is now seven years old, and horribly out of date.

http://www.dagolden.com/index.php/2140/paying-respect-to-modulebuild/

Yes, we switched the default builder because Module::Build is on life support pending death, whereas ExtUtils::MakeMaker has been actively developed since we managed to steal it off schwern so he didn't keep trying to kill it (it turns out schwern thinks make is evil, so is a little biased :)

Ok, my bad. I've learned something.

@pmorch "It's not a mistake if you learn something". :)

Thank you for opening the ticket. Now others can be pointed to it if they're wondering why MakeMaker is used as the default instead of Module::Build.