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

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

=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/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/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 external library - for example the L<Gtk2> module which requires
libgtk.

=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/work_in_progress

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.


=head3 def/works_on_macosx

This module should work on Mac OS X.

=head3 def/works_on_mswin

This module should work on Microsoft Windows.

=head3 def/works_on_unix

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.

=head1 VERSION

This is version v0.1.7 of this document.

=head1 COPYRIGHT

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/> .
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.