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.