=head1 CPAN Definitive Tags
CPAN packages can specify B<keywords> (also known as B<tags> or B<labels>)
in their META.yml to provide guidelines for indexing a module. This document
will list some B<"definitive" tags> which will be agreed upon to qualify
some meta-data about the module for easy categorization.
Unless noted otherwise, all the definitive tags live in the C<def/*> module
where they are used to be separated from other more random tags.
=head2 List of tags.
This means the module is abandoned and up-for-adoption. It probably indicates
that the current maintainer still finds it to be a good and recommended module,
just that they have lost interest, lack the necessary time, or are otherwise
unable to maintain it.
"Alternative to core".
This module provides a (hopefully better) alternative to a core module.
Examples: L<File::Next>, L<File::Find::Object>, L<Readonly>
(alternative to "constant"), L<Module::Build> (alternative to
ExtUtils-MakeMaker), L<Module::Starter> (alternative to h2xs),
L<Sub::Exporter> (alternative to Exporter.pm).
Like Magic only something that is considered "Evil". Possible examples are
source filters and the CPAN L<Error> distribution. Also see C<def/magic>.
The module is present and may be maintained, but is not recommended for general
This implements the so-called "Template Pattern"
( L<http://exciton.cs.rice.edu/javaresources/DesignPatterns/TemplatePattern.htm> ) where one has a base class
that has many drivers as sub-classes that implement the rest of the
functionality. Examples: L<DBI>, L<XML::SAX>. (Thanks to G. Wade Johnson).
See also C<def/driver>.
This is something like L<DBD::Mysql> or L<DBD::Pg> for L<DBI>.
See also C<def/driver_base>.
The module is maintained.
Something unconventional and not straightforward, that may affect the rest of
Perl. Examples: L<Devel::Declare> .
This is a CPAN "Bundle" or "Task" that does not contain any original
functionality of its own, and just specifies a list of dependencies to be
retrieved. (Thanks to G. Wade Johnson)
Non-finalised API. Means the API may be broken in the future.
A plugin to another module, that extends it and provides more functionality.
Examples: L<Template::Plugin::PodSimple>, L<POE::Component::IRC>, etc. (Thanks
to G. Wade Johnson)
A Pure Perl module.
Requires a C compiler.
Requires a C++ compiler.
Requires an external library - for example the L<Gtk2> module which requires
Requires a Fortran 77 compiler.
Requires an Objective C Compiler.
A source filter. Examples: L<Spiffy>, L<Acme::Gosub>.
The module is still a work in progress and more features are planned to
be added. It is "in flux". This is as opposed to a module that is in
maintenance mode (or deep maintenance mode) and is not planned to be enhanced
and expanded too much.
This module should work on Mac OS X.
This module should work on Microsoft Windows.
This module should work on most UNIX/POSIX systems (not Windows, DOS, etc.).
=head3 Possibly other def/works_on_*
C<def/works_on_linux>, C<def/works_on_beos>, C<def/works_on_vms> etc.
This is version v0.1.7 of this document.
Copyright by Shlomi Fish, 2010.
This document is available under one of these licenses:
1. The MIT/X11 License -
2. The Creative Commons Attribution 3.0 Unported License (or at your option
any later version of that license):