One of the most common cries I hear from CPAN users is that they have trouble
finding modules.  A CPAN module is largely found by its distribution name.
Names have to be unique and short which tends to hurt its descriptiveness.
Furthermore, a distribution can only have one name while a module could be
described different ways depending on how you look at it.

CPAN is organized as a simple tree hierarchy.  Hierarchies suck for describing
the real world.  They allow for only one way to describe a thing and imply a
hierarchy which may not exist.

Let's un-overload the distribution name by providing another axis by which an
author can categorize their module.  The single most dominant organizational
tool of the web:  tags.  For a large, wide, decentralized library its simple
and the least worst way to organize things.  It provides multiple axis to
describe the use of a module and frees up the name to be just a short, unique
descriptor.  Best practices for tags and how to work their strengths and
weaknesses are well understood.

The implementation is simple, add a "tags" keyword to META.yml.  Have
search.cpan.org so something interesting with that extra information.

Here's some examples off the top of my head.

        name:           WWW-Mechanize
        tags:           [www, robot]

        name:           ExtUtils-MakeMaker
        tags:           [build, developers, make]

        name:           Module-Build
        tags:           [build, developers]

        name:           DBIx-MyServer
        tags:           [dbi, mysql, network, protocol]

        name:           Convert-Age
        tags:           [datetime]

        name:           Incunabulum
        tags:           [mvc, pluggable]

        name:           Google-Adwords
        tags:           [www, google, adwords, soap]

        name:           LWP
        tags:           [www, html, parser]

        name:           CGI
        tags:           [cgi, html, generator]

The particular tags will fluctuate at first (ie. web vs www) but will quickly
settle down, especially if aided by simple tag visualization tools like tag
clouds.

Unless someone screams "NO, STOP!" I intend to add this functionality to
MakeMaker.

Reply via email to