ANNOUNCE: ExtUtils-ModuleMaker-0.43 and ExtUtils-ModuleMaker-PBP-0.08

ANNOUNCE: ExtUtils-ModuleMaker-0.43 and ExtUtils-ModuleMaker-PBP-0.08

am 01.10.2005 17:48:54 von Jim Keenan

ANNOUNCE
ExtUtils::ModuleMaker version 0.43 is now available on CPAN
().
ExtUtils::ModuleMaker is a replacement for the most typical use of
the h2xs utility bundled with all Perl distributions: the creation
of the directories and files required for a pure-Perl module to be
installable with make and distributable on CPAN.

A companion distribution, ExtUtils::ModuleMaker::PBP, version 0.08,
is also now available and is described below.

DESCRIPTION
ExtUtils::ModuleMaker was created by R Geoffrey Avery in 2001. I
took over maintenance of the distribution in July 2005. The central
focus of ExtUtils::ModuleMaker remains unchanged, as do its
modalities. The recommended way to get started with
ExtUtils::ModuleMaker is the modulemaker command-line utility which
prompts the user to enter a module name and other information and
then creates the directories and files needed to bring that module
to life. modulemaker is extremely easy for novice module authors to
use and, as such, typifies the Perl virtue of laziness. The user can
also provide modulemaker with command-line arguments.
ExtUtils::ModuleMaker can also be called from within a Perl program
via its "new()" and "complete_build()" methods.

In the past three months, however, there have been significant
enhancements to ExtUtils::ModuleMaker's functionality as well as
improvements to the distribution itself.

New Options
Fourteen new attributes have been added to ExtUtils::ModuleMaker's
default values. Five of these provide the user with more
fine-grained control over the directories and files created by
running ExtUtils::ModuleMaker:

INCLUDE_SCRIPTS_DIRECTORY
INCLUDE_MANIFEST_SKIP
INCLUDE_TODO
INCLUDE_LICENSE
INCLUDE_FILE_IN_PM

Eight of the new default values provide the user with greater
control over which test files to include, how to name them and how
many modules each test file tests:

FIRST_TEST_NUMBER
TEST_NUMBER_FORMAT
TEST_NAME
EXTRA_MODULES_SINGLE_TEST_FILE
TEST_NAME_DERIVED_FROM_MODULE_NAME
TEST_NAME_SEPARATOR
INCLUDE_POD_COVERAGE_TEST
INCLUDE_POD_TEST

Finally, a new default value is provided to enable the user to save
selections made via modulemaker as new default values:

SAVE_AS_DEFAULTS

By enabling the user to save his/her selections as new default
values, the latest version of ExtUtils::ModuleMaker significantly
enhances the user's ability to customize its use.

But wait, there's more!

Improved Subclassability
While ExtUtils::ModuleMaker always was subclassable, its
subclassability is now easier and better documented.
ExtUtils::ModuleMaker's default values and private methods, formerly
found entirely in 'lib/ExtUtils/ModuleMaker.pm', have been moved
into three separate packages based on functionality:

lib/ExtUtils/ModuleMaker/Defaults.pm
lib/ExtUtils/ModuleMaker/Initializers.pm
lib/ExtUtils/ModuleMaker/StandardText.pm

Private methods called within "ExtUtils::ModuleMaker::new()" are
found in Initializers.pm. Private methods within
"ExtUtils::ModuleMaker::complete_build()" are found within
StandardText.pm. A potential subclasser's attention is therefore
more precisely focused on the methods needing overriding.

ExtUtils::ModuleMaker::PBP
As an illustration of how to subclass ExtUtils::ModuleMaker, I have
written a companion Perl extension, ExtUtils::ModuleMaker::PBP, also
now available on CPAN, which you can use to create the skeleton for
a Perl extension in the manner recommended by Damian Conway in his
recent book *Perl Best Practices* (O'Reilly, 2005)
. ExtUtils::ModuleMaker::PBP
includes its own command-line utility, mmkrpbp, which works in the
same way as modulemaker.

The net effect of these enhancements is to create a comfortable
learning curve for the ExtUtils::ModuleMaker user.

* A beginner can create the framework for a Perl distribution by
typing modulemaker at the command-prompt and then filling in a
few blanks.

* An advanced beginner can provide command-line arguments to
reduce the amount of editing of files needed once the
distribution has been created.

* An intermediate user can save his/her modulemaker selections as
new default values, thereby saving keystrokes in the creation of
future distributions.

* An advanced intermediate user can achieve finer control over the
directories and files created by using ExtUtils::ModuleMaker
within a Perl program and calling appropriate methods.

* Finally, an advanced user can subclass ExtUtils::ModuleMaker to
create templates for other distributions.

But wait, there's still more!

Structural Improvements
As a CPAN distribution ExtUtils::ModuleMaker has been significantly
improved with the addition of new tests and documentation. As
measured by Devel::Cover, ExtUtils::ModuleMaker's test coverage is
now very high. Only the modulemaker utility's interactive mode lacks
good coverage.

In particular, the test suite tests to see whether a file containing
new default values can be saved in an appropriate location on the
user's system and whether such a file, when used, generates values
expected to override ExtUtils::ModuleMaker's own default values. In
the event that a user is upgrading from one version of
ExtUtils::ModuleMaker to another, the test suite also makes certain
to leave intact and file of default values the user has already
saved on disk so that it is still intact after the upgrade.

During the testing process, new directories and files are now
created in temporary directories which are created and then erased
via File::Temp.

ExtUtils::ModuleMaker itself is intended to be backwardly compatible
with Perl 5.5, but most of its test suite requires Perl 5.6. The
tests which require 5.6 are all wrapped in SKIP blocks, so 5.5 users
should be able to test and install the distribution with no problem.

ACKNOWLEDGEMENTS
Acknowlegements go out to:

* Geoff Avery for creating and popularizing ExtUtils::ModuleMaker
-- and for willing to put his child up for my adoption!

* David Golden for suggestions for enhancements in functionality
and for helping to make the 'learning curve' concept more
explicit.

* Damian Conway for permission to lift sections of his code from
Module::Starter::PBP.

* The following beta testers, CPAN testers, Perl hackers and
Perlmonks, each of whom made suggestions at one or more stages
in the development process (see ACKNOWLEDGEMENTS in
documentation for details):

Brian Clarkson
Scott Godin
imacat
Reinhard Urban
Michael G Schwern
A Sinan Unur
Paul Lalli
davidrw
tlm
Anonymous Guest
CountZero
xdg
Tanktalus
holli
TheDamian
nothingmuch
Alex Gill
Marc Prewitt
chromatic
dave_the_m
randyk
njh

SUPPORT
Please report any bugs or feature requests to
"bug-ExtUtils-ModuleMaker@rt.cpan.org", or through the web interface
at .