1. Shlomi Fish
  2. rethinking-cpan


rethinking-cpan / CPAN-Definitive-Tags / cpan-definitive-tags.pod

=head1 CPAN Definitive Tags

=head2 Introduction

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 categorisation.

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.

=head3 def/active_dev

The module is actively developed.

=head3 def/adopt_me

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. 

=head3 def/alt_to_core

"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).

=head3 def/black_magic

Like Magic only something that is considered "Evil". Possible examples are
source filters and the CPAN L<Error> distribution. Also see C<def/magic>.

=head3 def/deprecated

The module is present and may be maintained, but is not recommended for general

=head3 def/driver_base

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>.

=head3 def/driver

This is something like L<DBD::Mysql> or L<DBD::Pg> for L<DBI>.

See also C<def/driver_base>.

=head3 def/linux_only

The module only works on Linux.

=head3 def/macosx_only

This module only works on Mac OS X.

=head3 def/maintained

The module is maintained.

=head3 def/magic

Something unconventional and not straightforward, that may affect the rest of
Perl. Examples: L<Devel::Declare> .

=head3 def/meta_package

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)

=head3 def/mswin_only

MS-Windows Only.

=head3 def/non_final_api

Non-finalised API. Means the API may be broken in the future. 

=head3 def/plugin

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)

=head3 def/pure_perl 

A Pure Perl module.

=head3 def/requires_c

Requires a C compiler.

=head3 def/requires_cpp

Requires a C++ compiler.

=head3 def/requires_ext_libs

Requires an extenral library - for example the L<Gtk2> module which requires

=head3 def/requires_f77

Requires a Fortran 77 compiler.

=head3 def/requires_objc

Requires an Objective C Compiler.

=head3 def/source_filter

A source filter. Examples: L<Spiffy>, L<Acme::Gosub>.

=head3 def/unix_only

This module only works on UNIX (not Windows, DOS, etc.).


Copyright by Shlomi Fish, 2010.

=head1 LICENSE

This document is available under one of these licenses:

1. The MIT/X11 License - 
L<http://www.opensource.org/licenses/mit-license.php> .

2. The Creative Commons Attribution 3.0 Unported License (or at your option
any later version of that license):

L<http://creativecommons.org/licenses/by/3.0/> .