NAME

Acme::CPANAuthors - We are CPAN authors

SYNOPSIS

  use Acme::CPANAuthors;

  my $authors = Acme::CPANAuthors->new('Japanese');

  my $number   = $authors->count;
  my @ids      = $authors->id;
  my @distros  = $authors->distributions('ISHIGAKI');
  my $url      = $authors->avatar_url('ISHIGAKI');
  my $kwalitee = $authors->kwalitee('ISHIGAKI');
  my @info     = $authors->look_for('ishigaki');

If you don't like this interface, just use a specific authors list.

  use Acme::CPANAuthors::Japanese;

  my %authors = Acme::CPANAuthors::Japanese->authors;

  # note that ->author is context sensitive. however, you can't
  # write this without dereference for older perls as "keys"
  # checks the type (actually, the number) of args.
  for my $name (keys %{ Acme::CPANAuthors::Japanese->authors }) {
    print Acme::CPANAuthors::Japanese->authors->{$name}, "\n";
  }

DESCRIPTION

Sometimes we just want to know something to confirm we're not alone, or to see if we're doing right things, or to look for someone we can rely on. This module provides you some basic information on us.

WHY THIS MODULE?

We've been holding a Kwalitee competition for Japanese CPAN Authors since 2006. Though Japanese names are rather easy to distinguish from Westerner's names (as our names have lots of vowels), it's tedious to look for Japanese authors every time we hold the contest. That's why I wrote this module and started maintaining the Japanese authors list with a script to look for candidates whose name looks like Japanese by the help of Lingua::JA::Romaji::Valid I coined.

Since then, dozens of lists are uploaded on CPAN. It may be time to start other games, like offering more useful statistics online.

WEBSITE

Now we have a website: http://acme.cpanauthors.org/. You can easily see who is the most kwalitative author in your community, or who released or updated most in the past 365 days. More statistics would come, and suggestions are welcome.

ENVIRONMENTAL VARIABLE

ACME_CPANAUTHORS_HOME

Since 0.14, Acme::CPANAuthors checks ACME_CPANAUTHORS_HOME environmental variable to look for a place where CPAN indices are located. If you have a local (mini) CPAN mirror, or a source directory for your CPAN clients (~/.cpan/sources etc), set the variable to point there. If not specified, the indices will be downloaded from the CPAN (to your temporary directory, or to the current directory).

METHODS

new

creates an object and loads the subclasses corresponding to the category/categories you specified. If you don't specify any categories, it tries to load all the subclasses found just under the "Acme::CPANAuthors" namespace (except Acme::CPANAuthors::Not and some other internal classes).

count

returns how many CPAN authors are registered.

id

returns all the registered ids by default. If called with an id, this returns if there's a registered author of the id.

name

returns all the registered authors' name by default. If called with an id, this returns the name of the author of the id.

categories

returns the list of categories represented by this class (the names passed to new).

distributions, latest_distributions

returns an array of Acme::CPANAuthors::Utils::Packages::Distribution objects for the author of the id.

avatar_url

returns gravatar url of the id shown at search.cpan.org (or undef if you don't have Gravatar::URL). See http://site.gravatar.com/site/implement for details.

kwalitee

returns kwalitee information for the author of the id. This information is fetched from a remote API server.

look_for

my @authors = Acme::CPANAuthors->look_for('SOMEONE');
foreach my $author (@authors) {
  printf "%s (%s) belongs to %s.\n",
    $author->{id}, $author->{name}, $author->{category};
}

takes an id or a name (or a part of them, or even a regexp) and returns an array of hash references, each of which contains an id, a name, and a basename of the class where the person is registered. Note that this will load all the installed Acme::CPANAuthors:: modules but Acme::CPANAuthors::Not and modules with deeper namespaces.

SEE ALSO

As of writing this, there are quite a number of lists on the CPAN, including:

Acme::CPANAuthors::Australian
Acme::CPANAuthors::Austrian
Acme::CPANAuthors::Belarusian
Acme::CPANAuthors::Brazilian
Acme::CPANAuthors::British
Acme::CPANAuthors::Canadian
Acme::CPANAuthors::Catalonian
Acme::CPANAuthors::Chinese
Acme::CPANAuthors::Czech
Acme::CPANAuthors::Danish
Acme::CPANAuthors::Dutch
Acme::CPANAuthors::EU
Acme::CPANAuthors::European
Acme::CPANAuthors::French
Acme::CPANAuthors::German
Acme::CPANAuthors::Icelandic
Acme::CPANAuthors::India
Acme::CPANAuthors::Indonesian
Acme::CPANAuthors::Israeli
Acme::CPANAuthors::Japanese
Acme::CPANAuthors::Korean
Acme::CPANAuthors::Norwegian
Acme::CPANAuthors::Portuguese
Acme::CPANAuthors::Russian
Acme::CPANAuthors::Spanish
Acme::CPANAuthors::Swedish
Acme::CPANAuthors::Taiwanese
Acme::CPANAuthors::Turkish
Acme::CPANAuthors::Ukrainian

These are not regional ones but for some local groups.

Acme::CPANAuthors::Booking
Acme::CPANAuthors::British::Companies
Acme::CPANAuthors::CodeRepos
Acme::CPANAuthors::GeekHouse
Acme::CPANAuthors::GitHub

These are lists for specific module authors.

Acme::CPANAuthors::AnyEvent
Acme::CPANAuthors::DualLife
Acme::CPANAuthors::POE
Acme::CPANAuthors::ToBeLike
Acme::CPANAuthors::Acme::CPANAuthors::Authors

And other stuff.

Acme::CPANAuthors::CPANTS::FiveOrMore
Acme::CPANAuthors::Misanthrope
Acme::CPANAuthors::Nonhuman
Acme::CPANAuthors::Not
Acme::CPANAuthors::Pumpkings
Acme::CPANAuthors::You::re_using

Thank you all. And I hope more to come.

AUTHOR

Kenichi Ishigaki, <ishigaki at cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2007-2012 by Kenichi Ishigaki.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.