I'm also head of Vienna.pm [pm.org], maintainer of the CPANTS [perl.org] project, member of the TPF Grants Commitee [perlfoundation.org] and the YAPC Europe Foundation [yapceurope.org].
I've got stuff on CPAN [cpan.org], held various talks [domm.plix.at] and organised YAPC::Europe 2007 in Vienna [yapceurope.org].
It contains the following new metrics:
The last two are generated by parsing the source code with a Parse::RecDescent based parser (Module::ExtractUse). This might be buggy, so please inform me if something got parsed wrong.
There's also quite a bit of new metadata, mainly a list of all modules actually used by a dist (again gathered by parsing). This information isn't used currently, but I plan to compare this list with what's specified in PREREQ_PM (minus Module::CoreList, of course).
Some data (total Kwalitee available is 14) (SQLite db is available here: http://cpants.dev.zsi.at/):
sqlite> select kwalitee,count(kwalitee) as cnt from kwalitee group by kwalitee order by kwalitee;
kwalitee cnt
---------- ----------
0 30
2 3
3 11
4 57
5 35
6 34
7 95
8 276
9 670
10 1609
11 2567
12 1780
13 747
14 21
+++++++++++++++++++++++++++
sqlite> select avg(kwalitee) from kwalitee;
avg(kwalitee)
--------------------
10.7424070573409
++++++++++++ +++++++++++++++
sqlite> select cpanid,name,average_kwalitee from authors where distcount>5 order by average_kwalitee desc limit 20;
cpanid name average_kwalitee
---------- ------------------------- ----------------
BPOSTLE Bruno Postle 13
STEPHANB Stephan Buys 13
JCDUQUE Julius C. Duque 12.9411764705882
AMBS Alberto Manuel Brandao Si 12.9
IAN Ian Langworth 12.7857142857143
BARBIE Barbie 12.75
FABPOT Fabien Potencier 12.7272727272727
RMCFARLA Ross McFarland 12.7142857142857
BMORROW Ben Morrow 12.7142857142857
RSAVAGE Ron Savage 12.68
RJBS Ricardo SIGNES 12.5769230769231
SSCOTTO Salvatore E. ScottoDiLuzi 12.5714285714286
COG Jose' Alves de Castro 12.4615384615385
DAVECROSS Dave Cross 12.4375
JOUKE Jouke Visser 12.4285714285714
NKH Nadim Ibn Hamouda El Khem 12.4285714285714
JFITZ James FitzGibbon 12.4
TSCH Torsten Schoenfeld 12.3333333333333
CLOTHO Clotho Advanced Media 12.3333333333333
FLORIAN Florian Helmberger 12.3333333333333
+++++++++++++++++++++++++++
sqlite> select module,count(module) as cnt from uses group by module order by cnt desc limit 20;
module cnt
-------------------- -------------------------
strict 7026
vars 4542
Carp 3226
Exporter 3052
warnings 2255
DynaLoader 751
constant 747
5.006 731
Data::Dumper 631
AutoLoader 503
POSIX 381
File::Spec 341
IO::File 337
File::Basename 336
5.004 321
DBI 309
Fcntl 294
5.005 284
Apache::Constants 274
Cwd 269
Next steps:
use warnings; (Score:2)
use warnings as a metric is unfair if a module expects to work with 5.005 or earlier. Likewise, having use warnings without a
require 5.006(or later) in Makefile.PL is probably a sign of poor kwalitee.Re:use warnings; (Score:1)
So I guess I'll drop use warnings as a metric, and maybe add a combined use warnings && require 5.006 check.
Re:use warnings; (Score:2)
Some oddities (Score:2)
I'm curious how your system decides which modules to include: several of mine are missing, such as Chemistry::Elements, Apache::Htaccess, and Data::Constraint.
The "use warning" metric is a bit unfair. Not only does it not work with perl versions prior to 5.6, but some people don't want warnings on in production code lest a perl upgrade start dumping new warnings into logs files. Before disks got to be as big as they are today, one
Re:Some oddities (Score:1)
It seems the "use strict" test doesn't work out right for Business::ISMN.
You're right. Business::ISMN contains two module files, but defines three namespaces, all of which use strict. The bug in CPANTS is that it expects the number of use stricts to be the same as the number of module files. Which is obviously wrong. I changed '==' to '
I'm curious how your system decides which modules to include: several of mine are missing, such as Chemistry::Elements, Apache::Htaccess, and Data::Constraint.
Hmm, str
Another possible metric? (Score:1)