With the recent contretemps on non-open licenses on the module-authors
mailing list, I thought I'd look at the list of licenses that
Module::Build has a shorthand for.

Except that there is no list in the documentation for Module::Build, which
is where I'd expect to find it.

After searching through a few more document pages on CPAN, I decided to
look through the source instead, and I found the relevant item in
Module::Build::Base

  my %licenses =
    (
     perl => 'http://dev.perl.org/licenses/',
     gpl => 'http://www.opensource.org/licenses/gpl-license.php',
     apache => 'http://apache.org/licenses/LICENSE-2.0',
     artistic => 'http://opensource.org/licenses/artistic-license.php',
     lgpl => 'http://opensource.org/licenses/artistic-license.php',
     bsd => 'http://www.opensource.org/licenses/bsd-license.php',
     gpl => 'http://www.opensource.org/licenses/gpl-license.php',
     mit => 'http://opensource.org/licenses/mit-license.php',
     mozilla => 'http://opensource.org/licenses/mozilla1.1.php',
     open_source => undef,
     unrestricted => undef,
     restrictive => undef,
     unknown => undef,
    );
  sub valid_licenses {
    return \%licenses;
  }

I resumed searching through the available documentation in the
Module::Build subclass documentation, and it wasn't until I clicked on
Module::Build::API that I found it.

Now, there are a couple of problems here.  One is that I wouldn't have
expected to find the valid licenses in Module::Build::API (in fact the
module description says "Normally you won't need to deal with these
methods unless you want to subclass Module::Build.")  A simple Google
search of license + "Module::Build" brings up M::B, M::B::Convert,
M::B::PM_Filter, and M::B::Authoring in the first two pages, but not
M::B::API (which finally shows up on the seventh page).

Secondly, there's the classic problem of code-to-document disconnect.  The
key 'open_source' in %licenses has undef as a value, but in M::B::API,
there's a link to 'http://www.opensource.org/licenses/'.

Some off-the-top-of-my-head proposals:

1) Perhaps the license list POD documentation should be in
Module::Build::Base, since that's where the %licenses hash is.

2) If so, is there a way to automatically include the %licenses variable
in POD documentation?  I note that there is a Pod-Constants distribution
that does that, but I don't know if you want another dependency in
Module::Build.

3) If neither one above is any good, is there some way to auto-generate a
LICENSES file to put in the distribution?

4) Some other solution that requires more thought than I've spared here?

Thanks,
        -john

Reply via email to