develooper Front page | | Postings from June 2008

Re: The uselessness of arbitrary Metric gaming

Thread Previous | Thread Next
Aristotle Pagaltzis
June 30, 2008 14:42
Re: The uselessness of arbitrary Metric gaming
Message ID:
* Eric Wilhelm <> [2008-06-30 23:15]:
> # from chromatic
> # on Monday 30 June 2008 13:01:
> >Where CPANTS works now is identifying actual, functional
> >problems with distributions: missing licensing information,
> >not extractable, POD errors, invalid META.yml, et cetera.
> There is some use in that, but what is the line before "&c"?

I think there is at least one very clear line, which is to be
drawn at “will this cause problems for users who don’t even care
about the module itself and are installing it merely as a prereq
for something else?” An incorrectly packaged distro clearly will.

> It's a slippery cliff between "what works" and "what some
> people happen to think". Is in: why isn't "uses Module::Build,
> contains no Makefile.PL, and requires 5.8.8" a point?

See above.

> What about "does not include cargo-culted Test::PodCoverage or
> Test::Pod"?

These things cause problems for actual users. This should be a
metric per the above criterion. And I’m not joking.

(The problem is that one of the aspects of kwalitee was supposed
to be that the module is properly documented – regardless of how
good the documentation is, it should follow proper form, at
least. Unfortunately, since a design goal for CPANTS is not to
run any code from the distro, testing POD coverage and even POD
itself is not actually doable because you don’t know what the API
will look like at runtime (AUTOLOAD, autogenerated functions or
methods, etc etc etc). So instead of measuring whether the POD
has good coverage, CPANTS measures if it has tests to check the
POD coverage… I honestly like and respect Thomas, so I don’t want
to insult him at all, but the absurdity of this line of thought
is mindboggling. How he arrived at the conclusion that this would
provide any sort of useful data point is unfathomable to me.)

> "Has no CamelCase"?,  "No methods expect ({arbitrary => extra
> => 'braces'})"?,  "isa() is a method"?, "overrides can()"?, "No
> Class::Accessor"?, "Mutators are set_foo()"?, "Does not inherit
> Exporter"?,  "META.yml includes keywords"?, "META.yml links to
> version control"?, "Uses Moose"!?

All of those are either not measurable, directly or at all, or
have significant valid exceptions. If we stick to metrics that
can be measured directly without reliance on any kind of proxy,
I think the slope won’t be nearly so slippery as you make it out
to be.

Just the fact that we disagree about a metric would be a good
indicator that it isn’t a functional CPANTS metric. Do you
disagree that a broken tarball is bad kwalitee? No? Thought so.

But *even if* the line was difficult to find, it seems to that
just because we were unable to agree exactly where it is doesn’t
imply that we’d be unable to agree when a metric is way over it.
I can’t imagine anyone ever proposing a Has No CamelCase metric
in all seriousness and without getting struck down swiftly.

> Regardless of whether the metrics are ambiguous or debatable,
> they can only be used for comparisons between modules if you
> open a new browser window/tab and manually lookup each one.

Disagree. Whether the module is packaged correctly has nothing
to do with its purpose and is a piece of information that stands
entirely on its own.

> All of it is potentially useful data to someone, but if it is
> going to be anything besides a game, it probably needs more
> ways to be queried.

Agree on that.

Aristotle Pagaltzis // <>

Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About