Re: post-YAPC::Europe CPANTS news

2006-09-14 Thread Philippe BooK Bruhat
Le mardi 12 septembre 2006 à 11:15, Chris Dolan écrivait:
 On Sep 12, 2006, at 9:24 AM, Salve J Nilsen wrote:
 
 Any metric that catches bad things, particularly bad technical  
 things, is going to be just fine.
 Metrics that try to push good behavior are fraught with trouble,  
 because they start pushing people in odd directions.
 
 Do you have an example on this? (Any pointer would be wonderful.)
 
 I have two: pod.t and pod_coverage.t.  These are pointless to run on  
 an end-user's machine.  At best they are redundant to immutable tests  
 already run on the author's machine and just waste processor cycles.   
 At worst they fail and cause false negative test reports.  The  
 prevalence of those two tests in CPAN modules is almost entirely due  
 to the influence of CPANTS.

At least has_test_pod can be rewritten as no_pod_errors and achieve the
same goal (check that the documentation is syntactically correct pod-wise).

Since running Test::Pod on all .pm and .pod file doesn't require actually
running the code itself, it sound perfectly acceptable for both parties
(those who want to check that the pod is correct and those that think
that multiple copies of t/pod.t shouldn't clutter CPAN).

...

I just had myself motivated enough to write such a metric, when I
discovered that Module::CPANTS::Analyse already has a no_pod_errors
metric!

That makes me wonder about the utility of has_test_pod, since
no_pod_errors is even more interesting: we want to give points to people
that *have* a correctly written pod, rather than to those who merely try,
don't we?

-- 
 Philippe BooK Bruhat

 What everyone wants, nobody gets, What nobody gets, everybody wants.
(Moral from Groo The Wanderer #47 (Epic))


Re: post-YAPC::Europe CPANTS news

2006-09-14 Thread Michael G Schwern
Adam Kennedy wrote:
 I'm find with adding an additional environment variable though for the
 packaging state. But please lets not decide on anything right now,
 AUTOMATED_TESTING is already a sub-optimal name, I'd rather make sure
 that the EU::MM, M:B and M:I modules all agreed on a single consistent
 name before we go and add support for it.

Whatever it is, prefix it with PERL_ to avoid conflicts.


Re: post-YAPC::Europe CPANTS news

2006-09-13 Thread David Cantrell

A. Pagaltzis wrote:

Adam Kennedy wrote:

On the other hand, the downside with this is that modules could
well have URIs that take actions in them,

*pulls out HTTP RFC*
*starts beating random bad programmers over the head with it*
`GET` SHOULD BE SAFE AND IDEMPOTENT!
`GET` SHOULD BE SAFE AND IDEMPOTENT!
`GET` SHOULD BE SAFE AND IDEMPOTENT!


So I have a URL in a module, which *must* be POSTed for it to do
whatever it needs to do because it's not intended to be impotent.  I
arrange matters so that GETting it is forbidden, because GETting it is
meaningless.  Your GET test then correctly fails, and would be
incorrectly recorded as a failure.  That will really give me confidence
in the quality of CPANTS.

--
David Cantrell


Re: post-YAPC::Europe CPANTS news

2006-09-13 Thread brian d foy
In article [EMAIL PROTECTED], Chris
Dolan [EMAIL PROTECTED] wrote:

 On Sep 12, 2006, at 9:24 AM, Salve J Nilsen wrote:
 
  Any metric that catches bad things, particularly bad technical  
  things, is going to be just fine.
  Metrics that try to push good behavior are fraught with trouble,  
  because they start pushing people in odd directions.

  Do you have an example on this? (Any pointer would be wonderful.)

 I have two: pod.t and pod_coverage.t.  These are pointless to run on  
 an end-user's machine.  At best they are redundant to immutable tests  
 already run on the author's machine and just waste processor cycles.   

I've actually discovered POD problems when users run these tests. They
aren't immutable because people use different versions of tools and
different versions of the various POD modules. With simple fixes, I can
make some things readable by people even with old Perl distributions.

Having said that, I still find value in them. If the installer watches
the tests go by, they see that the documentation is being tested. I
hope that gives them a little more confidence in the module.

And, since this is open source, I distribute all the source I use to
develop the module. That's the idea, isn't it? If the user changes
something, they still have all the tests, including one to remind them
to document their new function using the proper format. :)


Re: post-YAPC::Europe CPANTS news

2006-09-13 Thread Adam Kennedy

David Golden wrote:

Adam Kennedy wrote:
But with that in mind, I still don't see much point in running them at 
install-time, so lately I've modified my pod.t test so that it's skip 
message is now skipped: Author tests not required for installation 
or the like, and the tests now only run when AUTOMATED_TESTING is on.


So now the tests will still get run during CPAN Testers and the like, 
but regular installation will not be impacted.


Personally, I prefer AUTHOR_TESTING and run it as part of my automated 
release process.


I turn on AUTOMATED_TESTING for all the Vanilla builds to skip past 
things that want user prompts -- I think of AUTOMATED_TESTING as 
limiting tests to things that are safe for non-attended operation.  It 
would be a surprise to me to find more tests turned on for 
AUTOMATED_TESTING.


Sorry to burst your bubble, but this is already happening.

There are modules using AUTOMATED_TESTING to detect automated testing 
systems and adding extra dependencies, so that additional tests can be 
run that would be overly onerous for someone doing an ordinary 
installation to run.


I can't point to any off the top of my head, but I think at least one 
thing I've written adds a dependency on SQLite under AUTOMATED_TESTING 
so that it can run a whole slew of extra tests, when under ordinary 
installation circumstances I wouldn't want to force someone to install 
SQLite just for testing my module.


I'm find with adding an additional environment variable though for the 
packaging state. But please lets not decide on anything right now, 
AUTOMATED_TESTING is already a sub-optimal name, I'd rather make sure 
that the EU::MM, M:B and M:I modules all agreed on a single consistent 
name before we go and add support for it.


Adam K


Re: post-YAPC::Europe CPANTS news

2006-09-12 Thread Salve J Nilsen

Adam Kennedy wrote:


Of course some authors don't care about having a community around their 
software, and some don't consider their CPAN package as important or 
big enough to warrant a community (despite it probably being licensed 
with an open source-friendly license). These people are entirely free to 
continue do nothing. :)


Yes, but we've seen what happens once the metrics are created. The natural 
competitive nature of people comes out and they start doing things just 
because there's a metric for it.


This, to me, is a good thing - ripe for exploitation! :-D

There's nothing as cool as letting strangers do good things (like contribute to 
an open source community) just by allowing them to do what's natural. :)



Any metric that catches bad things, particularly bad technical things, is 
going to be just fine.


Metrics that try to push good behavior are fraught with trouble, because 
they start pushing people in odd directions.


Do you have an example on this? (Any pointer would be wonderful.)


I think it's important that we take some care about the metrics that get 
created that encourage people to take good behaviors (as opposed ones that

 just encourage not-bad behavior).


Agreed. Giving good names to new META.yml fields and documenting them in a
complete, terse way that isn't open to (mis-) interpretation should be done
_before_ any implementation. (Especially when it comes to something that can
affect community growth in some significant way. :)


Finally, I don't personally see an obvious (causative or otherwise) link 
between a non-author community support channel, and module Kwalitee (or 
quality for that matter).


CPAN modules are all (?) Free Software/Open Source projects, and with all such
projects, the feature, code and documentation quality is in many ways a
product of the amount of attention it is given. More attention = better
products (Given enough eyeballs, all bugs are shallow, you know).

It's obviously not as easy as that - one still needs to attract people that 
care, have time and enough competency to contribute in a positive way, and then

actually allow and motivate these people to contribute in the way they like.

Still if we are going to find more people that want to contribute/become part
of the community, then we need to do all kinds of marketing - including telling
users that if they use Perl, they'll easily find both the useful CPAN software
and the communities around that software.

How to attract people to the Perl community:

 1) Show them Perl and it's community exists
 2) Show them what kind of useful options they get from Perl and the community
 3) Let them try out the things they want to - easily
 4) Show them where to find help when they need it   --- WE'RE IMPROVING THIS
 5) Show them we'd like their feedback (and bug reports (and patches))
 6) Allow them to give back to/help the community when they feel ready
 7) Allow them to become project developers when they feel ready

(I'm sure this list is missing some crucial points, but I hope it still makes 
some sense. :)



- Salve

--
Salve J. Nilsen salvejn at met dot no / Systems Developer
Norwegian Meteorological Institute   http://met.no/
Information Technology Department / Section for Development



Re: post-YAPC::Europe CPANTS news

2006-09-12 Thread Chris Dolan

On Sep 12, 2006, at 9:24 AM, Salve J Nilsen wrote:

Any metric that catches bad things, particularly bad technical  
things, is going to be just fine.
Metrics that try to push good behavior are fraught with trouble,  
because they start pushing people in odd directions.


Do you have an example on this? (Any pointer would be wonderful.)


I have two: pod.t and pod_coverage.t.  These are pointless to run on  
an end-user's machine.  At best they are redundant to immutable tests  
already run on the author's machine and just waste processor cycles.   
At worst they fail and cause false negative test reports.  The  
prevalence of those two tests in CPAN modules is almost entirely due  
to the influence of CPANTS.


Despite the criticisms above, the CPANTS POD tests have ultimately  
succeeded: they have convinced authors to do a better job of  
documenting all methods, or marking private methods as such.  I think  
nobody can argue that the POD tests, in particular, have had a net  
positive effect on the quality of CPAN.


 ===

Now begins a huge digression on encouraging good behavior vs.  
discouraging bad behavior leading to a recommendation for CPANTS.


One flaw in the language of Adam's assertion is that he doesn't  
properly distinguish the goals and metrics of CPANTS.  Discouraging a  
specific bad behavior is just a way encouraging other unspecified  
behavior, which could be good or bad.  IF FEASIBLE, it's always  
better to encourage good behavior.  The danger is not metrics that  
encourage good behavior, but instead metrics that encourage a  
specific good behavior when there are a multitude of equally-valid  
good behaviors.  In that case, discouraging the bad behaviors is the  
best you can do.  I believe that's what Adam was trying to say.


I'm going to continue with the specific example of POD Kwalitee.  The  
CPANTS goal is (obviously) to encourage higher quality  
documentation.  However, that's a hard thing for a computer to  
measure.  So, instead we try to discourage specific bad behaviors:  
POD syntax errors and undocumented subroutines.


Let me run through an exercise.  In the first step, consider how one  
would arrive at the need for CPANTS POD tests:


Goal: encourage high-quality CPAN packages
  Assertion: high-quality packages have high-quality documentation
Assertion: high-quality documentation is parseable by doc tools
  Subgoal: discourage invalid POD
Measure: Is the POD valid for each module in the package?
Assertion: high-quality documentation describes every public  
subroutine

  Subgoal: discourage undocumented subs
Measure: Does each module in the package have documentation  
for every public sub?


The next step in the exercise becomes how to implement those  
measures.  In the current CPANTS simple proxies are used for those  
measures.  Namely, we assume that if there is a t/*pod.t file present  
then the pod is valid, and if there is a t/*pod_coverage.t present  
then all subroutines are documented.


Note that my subgoals are stated as discouraging bad behavior.  It's  
always easier to test for failures than successes (case in point:  
governments usually create laws, not commandments).  The CPANTS POD  
tests, however, check for good behavior (Thou shalt add pod.t to thy  
package) instead of checking for bad behavior (Thou shalt not  
include invalid POD in thy module).


Wouldn't it be better to just measure the POD validity directly  
instead of using a proxy for that measurement?  As an outsider, I'll  
guess that CPANTS resorts to the proxies for these reasons, in order  
of importance:

 1) reliability
 2) ease of implementation
 3) speed of evaluation
Certainly, CPANTS wants to avoid false negatives at all costs.  It's  
impact on the community is purely voluntary, so it wants to avoid  
antagonizing authors.  If CPANTS mistakenly says that your module has  
incomplete POD coverage when you *know* that you have documented  
every method, you're going to be annoyed.  Some authors may decline  
to participate in CPANTS if they get annoyed enough.  So, false  
negatives are perilous to the success of the entire project.


I believe the main reason that CPANTS measures t/*pod*.t existence  
instead of directly running Test::Pod/Test::Pod::Coverage is that the  
latter is harder for the author to judge consistently before he/she  
uploads to CPAN.  But, with the improved availability of offline  
CPANTS analysis (via Module::CPANTS::Analyse), it should be feasible  
for authors to get rid of more complex false negatives before  
uploading to CPAN.


So, as a technological expedient, CPANTS is encouraging a sub-optimal  
good behavior (adding t/*pod*.t to CPAN releases) in the process of  
trying to discourage a bad behavior.  To fix this, we need to remove  
the need for the expedient.  That means letting CPANTS perform more  
complicate analyses and letting authors test those analyses offline  
exactly as they would be 

Re: post-YAPC::Europe CPANTS news

2006-09-12 Thread Thomas Klausner
Hi!

On Tue, Sep 12, 2006 at 11:15:50AM -0500, Chris Dolan wrote:

Wow, excellent post!

Some notes:

 The next step in the exercise becomes how to implement those  
 measures.  In the current CPANTS simple proxies are used for those  
 measures.  Namely, we assume that if there is a t/*pod.t file present  
 then the pod is valid, and if there is a t/*pod_coverage.t present  
 then all subroutines are documented.

In fact, CPANTS actually runs Pod::Simple::Checker on the POD, so the
t/*pod.t check is more or less redunant. If there's a problem with the
POD, a dist won't get points for 'no_pod_errors'. (In the next release
of Module::CPANTS::Analyse the errors reported by Pod::Simple::Checker
will be available on cpants.perl.org)

The problem with pod_coverage is that Pod::Coverage executes the code to
get a list of all functions, and then uses some Pod parsing to check if
they are all covered. But running code is something CPANTS just cannot
do (at least not for all of CPAN (Win32::*, interfaces to various C
libraries, etc).

 Thus, I finally get to an action item: CPANTS should encourage  
 authors to run Module::CPANTS::Analyse offline before uploading to  
 CPAN.  I assert that if we can convince authors to perform more  
 thorough tests of their packages at author-time, then the quality of  
 CPAN will improve.  And the more closely the metrics match our real  
 quality goals, the bigger the quality delta we will achieve.

Well, I could add a metric like 'has_test_kwalitee' to check for
t/99_kwalitee.t which uses Test::Kwalitee :-)

Basically, nearly most of what you said describes quite exactly what I
think.

When I took over CPANTS, I was targetting low-hanging fruits (like some
simple-to-check files). Now, we are implementing more complex metrics
that are obviously more meaningfull than simple
does-this-file-exists-stlye metrics. 

In theory, we can now remove some of the very simple metrics (that
might not make that much sense), i.e. has_test_pod (no_pod_errors is
much better) and has_test_pod_coverage

The main reason why they're still here is because I do get reports from
people that say that adding these two test files (which they maybe never
heard of before (not everybody hangs around on YAPCs, IRC, use.perl and
perlmonks...)) made them add more/better docs. Which is good.


-- 
#!/usr/bin/perl   http://domm.zsi.at
for(ref bless{},just'another'perl'hacker){s-:+-$-gprint$_.$/}


Re: post-YAPC::Europe CPANTS news

2006-09-12 Thread Adam Kennedy

Gabor Szabo wrote:

On 9/13/06, Thomas Klausner [EMAIL PROTECTED] wrote:

In theory, we can now remove some of the very simple metrics (that
might not make that much sense), i.e. has_test_pod (no_pod_errors is
much better) and has_test_pod_coverage

The main reason why they're still here is because I do get reports from
people that say that adding these two test files (which they maybe never
heard of before (not everybody hangs around on YAPCs, IRC, use.perl and
perlmonks...)) made them add more/better docs. Which is good.



I would not remove them just reduce their weight in the overall rating.
They will remind people who don't know about them but will let others
achive high kwaletee rating even if they don't have them.


I concur.

I'd certainly like to see, at the very least, the pod coverage one 
become an optional metric.


And I think Chris clarified my position pretty well. The problem with 
encouraging a good is that it is almost always a specific good 
behavior and creates a perfect environment for cargo-culting, exactly 
the sort of fallout we've seen with the pod and pod_coverage tests.


That said, I've have come around a little on the subject of author tests.

The one advantage they do have, is that their inclusion means that while 
I may check POD structure, a pod.t ensures that in the event of someone 
else taking over the module, these things will continue to be checked.


But with that in mind, I still don't see much point in running them at 
install-time, so lately I've modified my pod.t test so that it's skip 
message is now skipped: Author tests not required for installation or 
the like, and the tests now only run when AUTOMATED_TESTING is on.


So now the tests will still get run during CPAN Testers and the like, 
but regular installation will not be impacted.


Adam K


Re: post-YAPC::Europe CPANTS news

2006-09-12 Thread Chris Dolan

On Sep 12, 2006, at 6:54 PM, Adam Kennedy wrote:

[...]
That said, I've have come around a little on the subject of author  
tests.


The one advantage they do have, is that their inclusion means that  
while I may check POD structure, a pod.t ensures that in the event  
of someone else taking over the module, these things will continue  
to be checked.


But with that in mind, I still don't see much point in running them  
at install-time, so lately I've modified my pod.t test so that it's  
skip message is now skipped: Author tests not required for  
installation or the like, and the tests now only run when  
AUTOMATED_TESTING is on.


So now the tests will still get run during CPAN Testers and the  
like, but regular installation will not be impacted.


That's fine, but in my opinion, a slightly better solution for author  
tests is to include them in revision control (i.e. SVN) but to  
exclude them from the public distro via MANIFEST.SKIP.  That's what  
we do for the Perl::Critic self-compliance tests, for example, which  
are time-consuming and not relevant to the functionality of  
Perl::Critic.  However, your approach to author-test skipping works  
well, and is more appropriate for modules which may not have a  
publicly-exposed revision control system.


*shrug* I could probably be convinced that your approach is better.

Chris

--
Chris Dolan, Software Developer, Clotho Advanced Media Inc.
608-294-7900, fax 294-7025, 1435 E Main St, Madison WI 53703
vCard: http://www.chrisdolan.net/ChrisDolan.vcf

Clotho Advanced Media, Inc. - Creators of MediaLandscape Software  
(http://www.media-landscape.com/) and partners in the revolutionary  
Croquet project (http://www.opencroquet.org/)





Re: post-YAPC::Europe CPANTS news

2006-09-12 Thread Chris Dolan

On Sep 12, 2006, at 9:44 PM, Adam Kennedy wrote:

That's fine, but in my opinion, a slightly better solution for  
author tests is to include them in revision control (i.e. SVN) but  
to exclude them from the public distro via MANIFEST.SKIP.  That's  
what we do for the Perl::Critic self-compliance tests, for  
example, which are time-consuming and not relevant to the  
functionality of Perl::Critic.  However, your approach to author- 
test skipping works well, and is more appropriate for modules  
which may not have a publicly-exposed revision control system.

*shrug* I could probably be convinced that your approach is better.


For something highly visible like Perl::Critic that's fine, but  
what tipped it over the line for me was that for ordinary modules  
repositories are transient, and can't always be relied on.


The only canonical and reliable source we have is what gets uploaded.


[...]

That's a very good point.  I'm convinced.  To restate what you've  
said, CPAN is a better long-term software repository than any other  
system for open source Perl programmers.


Chris

--
Chris Dolan, Software Developer, Clotho Advanced Media Inc.
608-294-7900, fax 294-7025, 1435 E Main St, Madison WI 53703
vCard: http://www.chrisdolan.net/ChrisDolan.vcf

Clotho Advanced Media, Inc. - Creators of MediaLandscape Software  
(http://www.media-landscape.com/) and partners in the revolutionary  
Croquet project (http://www.opencroquet.org/)





Re: post-YAPC::Europe CPANTS news

2006-09-11 Thread Salve J Nilsen

Gabor Szabo wrote:

On 9/7/06, Salve J Nilsen [EMAIL PROTECTED] wrote:

Thomas Klausner wrote:


Oh, and if you want to join the fun and help a bit, here's a (probably 
incomplete) list of tasks:


- Metrics:

[snip]

Would the metrics for community support channels that were suggested a 
while ago be welcome? (The discussion about them sort of died out :-\)


[snip]


The question then might be if that channel is used. E.g. are there (recent)
posts on the forum? How many posts are there? Have the questions been
answered? Has the module author blessed the channel (or for that mater
decided to point people to another support channel)?


Exactly. Having a metric like primary_community_resource: URL (or similar) 
would at least hint of which forum(s) the author intends to use. This is 
obviously useful information, since it lets the user inspect the forum(s) 
without first having to search for them.


Of course some authors don't care about having a community around their 
software, and some don't consider their CPAN package as important or big 
enough to warrant a community (despite it probably being licensed with an open 
source-friendly license). These people are entirely free to continue do nothing. :)



- Salve

--
Salve J. Nilsen salvejn at met dot no / Systems Developer
Norwegian Meteorological Institute   http://met.no/
Information Technology Department / Section for Development



Re: post-YAPC::Europe CPANTS news

2006-09-11 Thread Salve J Nilsen

Adam Kennedy wrote:

Salve J Nilsen wrote:

Thomas Klausner wrote:


Oh, and if you want to join the fun and help a bit, here's a (probably
incomplete) list of tasks:

- Metrics:

[snip]

Would the metrics for community support channels that were suggested a 
while ago be welcome? (The discussion about them sort of died out :-\)


I think the main issue with this was that it was really only a valid 
metric for huge modules, and for 90% of the smaller things there wasn't 
much point.



For example, Config::Tiny or Catalyst::Plugin::Some::Random::Small::Plugin.


Why?

Having such a metric is quite useful even for the smaller moules, IMO. Firstly, 
it says something about the author's ambitions (I'll be supporting this, I 
will continue developing features, I accept patches, I'd like to help you 
use my software).


And there's nothing wrong if several tiny modules point to a common mailing 
list... E.g. that certain Acme::* module authors subscribe to a hypothetical 
[EMAIL PROTECTED] mailing list.


Or that the Catalyst::Plugin::Some::Random::Small::Plugin author tells that 
she'll monitor irc://irc.perl.org/catalyst for questions...



And frankly, I don't think there's a good way to distinguish between 
should have a community and shouldn't need a community.


That's obviously entirely up to the author. What we, the CPAN community can 
do is urge the authors to consider having and using such a resource, since 
doing this in general /helps the community/, both in the general sense (showing 
the world that the CPAN community is easily accessible for outsiders and new 
users) and in the specific sense (make Perl software easier to use, since 
support apparently is easily available).



On the other hand, what WOULD be interesting, is a check to make sure 
that the URIs of anything mentioned are still valid.


Heh. Yeah, that would be a nice project all by itself. :)


So if the META.yml has a URI with a community page or what have you, 
that the page exists. The same sort of uris_exist could also check URIs 
in the main documentation.


Good idea. :)


- Salve

--
Salve J. Nilsen salvejn at met dot no / Systems Developer
Norwegian Meteorological Institute   http://met.no/
Information Technology Department / Section for Development



example metric (was Re: post-YAPC::Europe CPANTS news)

2006-09-11 Thread Michael G Schwern

Thomas Klausner wrote:

The one advantage of dedicated examples for me is that I can take that
example file (mostly downloaded from search.cpan.org), run it, modifiy
it, run it etc.


Cutting and pasting from the docs works as well, no network required.  And its 
going to be the example for the right version (ie. the one you have installed, 
not the latest on CPAN).



This hardly works with code embedded in the docs, as this code tends to
be overly verbose (eg no 'use strict' etc).


That's spurious.  The quality of the code has nothing to do with whether its in 
a file or a POD document.  In fact, with Test::Inline I can test my example 
code in the POD.


Re: post-YAPC::Europe CPANTS news

2006-09-11 Thread Adam Kennedy
Of course some authors don't care about having a community around their 
software, and some don't consider their CPAN package as important or 
big enough to warrant a community (despite it probably being licensed 
with an open source-friendly license). These people are entirely free to 
continue do nothing. :)


Yes, but we've seen what happens once the metrics are created. The 
natural competitive nature of people comes out and they start doing 
things just because there's a metric for it.


Any metric that catches bad things, particularly bad technical things, 
is going to be just fine.


Metrics that try to push good behavior are fraught with trouble, 
because they start pushing people in odd directions.


I think it's important that we take some care about the metrics that get 
created that encourage people to take good behaviors (as opposed ones 
that just encourage not-bad behavior).


Finally, I don't personally see an obvious (causative or otherwise) link 
between a non-author community support channel, and module Kwalitee (or 
quality for that matter).


Adam K


Re: post-YAPC::Europe CPANTS news

2006-09-08 Thread Adam Kennedy

Michael Peters wrote:


Adam Kennedy wrote:


It might be an interesting idea to also add a dependencies_exist
metric, that makes sure that all the dependencies that are declared
actually exist in the CPAN. Dunno, could be of dubiously little value,
but I just managed to somehow upload something with bad deps that I had
installed on my local machine, but that weren't all on CPAN yet...


I'm not sure this is such a good idea. There are several examples of modules
that rely on other Perl modules that aren't on CPAN. For instance, svk relies on
SVN::Mirror which is a part of svn. SWISH::HiLiter needs SWISH::API which is a
part of swish-e. There are lots of perl modules tied to various projects that
don't exist independently on CPAN.


But frankly, if you are uploading modules to CPAN that can't possibly 
ever be installed  with the CPAN client because you have to go install 
modules from somewhere else first, I'd consider that worth docking a 
kwalitee point over.


98%* of modules are going to pass this, 1% will fail and encourage more 
people to upload more things, and 1% will fail due to genuine errors we 
want to assist authors in catching.


On another subject that came up today one one of my modules 
(specifically the new Test::Object dependency of PPI) it seems like it 
could be a bad idea to have explicit dependencies on the latest version 
of a dual-life module.


One of the linux distro guys pinged me about Test::Object needing the 
very latest (CPAN-only) version of Test::Builder, because it means they 
can't package it properly for the distros without upgrading the main 
Perl package. Some packaging systems can't handle having the same file 
in more than one distro it seems.


While this might seem like punishing people for depending on things that 
work, it's another red box to alert you to a possible problem, and the 
red box will dissapear on it's own when the next version of Perl comes out.


I think it's worth considering.

Adam K

* Not actual percentages


Re: post-YAPC::Europe CPANTS news

2006-09-08 Thread Adam Kennedy

Thomas Klausner wrote:

Hi!

On Thu, Sep 07, 2006 at 10:23:39AM +1000, Adam Kennedy wrote:
 

- has_example
I thought we were generally negative on this one, because it would 
encourage people to spuriously add trivial example directories to their 
distributions...


Yes, but I've recently introduced the concept of 'optional' metrics.
Optional metrics are not used to calculate an authors rank in the CPANTS
game. Current optional metrics are 'is_prereq' and 'has_examples'.

This also makes it possible to get 110% kwalitee at the moment :-)


I saw that. The question is how many people are likely to be driven to 
add it just to get the green mark anyway (even if it doesn't alter the 
result of the game).


Perhaps as an initial fix, we could make the visual distinction seem 
smaller? For example, instead of white box with squiggle, change it to a 
grey box with the same level of brightness as the green box? So the 
difference is reduced to a fairly subtle shade difference?


As a secondary point, if we keep it you might also want to include 
/sample(s)/ and /demo(s)/.


Thanks, added


 - declares_dependencies
It might be an interesting idea to also add a dependencies_exist 
metric, that makes sure that all the dependencies that are declared 
actually exist in the CPAN. Dunno, could be of dubiously little value, 
but I just managed to somehow upload something with bad deps that I had 
installed on my local machine, but that weren't all on CPAN yet...


It might also catch possible CPANTS bugs.


Good point. I like it then :)


 - no_open_bugs
If we are going to do this, we have to make sure that we DON'T include 
wishlist bugs in this metric, or it blows the validity all to hell.


I was thinking of something like 'no open bugs with severity  wishlist
(or even unimportant) and more than two weeks old'.

'Taken' bug reports are obviously also not counted.


Something along those lines seems good, the more sophisticated the 
better. The big question is, can you get data exported out of RT with 
enough resolution to do what you want?


Adam K


Re: post-YAPC::Europe CPANTS news

2006-09-08 Thread Adam Kennedy

Salve J Nilsen wrote:

Thomas Klausner wrote:


Oh, and if you want to join the fun and help a bit, here's a (probably
incomplete) list of tasks:

- Metrics:

[snip]

Would the metrics for community support channels that were suggested a 
while ago be welcome? (The discussion about them sort of died out :-\)


I think the main issue with this was that it was really only a valid 
metric for huge modules, and for 90% of the smaller things there wasn't 
much point.


For example, Config::Tiny or Catalyst::Plugin::Some::Random::Small::Plugin.

And frankly, I don't think there's a good way to distinguish between 
should have a community and shouldn't need a community.


On the other hand, what WOULD be interesting, is a check to make sure 
that the URIs of anything mentioned are still valid.


So if the META.yml has a URI with a community page or what have you, 
that the page exists. The same sort of uris_exist could also check URIs 
in the main documentation.


On the other hand, the downside with this is that modules could well 
have URIs that take actions in them, or aren't meant to be valid... maybe...


Adam K


Re: post-YAPC::Europe CPANTS news

2006-09-08 Thread Gabor Szabo

On 9/7/06, Salve J Nilsen [EMAIL PROTECTED] wrote:

Thomas Klausner wrote:

 Oh, and if you want to join the fun and help a bit, here's a (probably
 incomplete) list of tasks:

 - Metrics:
[snip]

Would the metrics for community support channels that were suggested a while
ago be welcome? (The discussion about them sort of died out :-\)


For every uploaded module  automatically forum is created on
http://www.cpanforum.com/

I know not everyone likes this idea and some others have issues with the current
form of CPAN::Forum (yes, I am working on some of these issues) but
this basically
means that every module *has* a community support channel.

The question then might be if that channel is used. E.g. are there
(recent) posts
on the forum? How many posts are there? Have the questions been answered?
Has the module author blessed the channel (or for that mater decided
to point people to another support channel)?

Oh, I would love a metric that is called
has_posted_on_cpan_forum_that_author_is_monitoring_the forum
even if it had a shorter name.

Gabor


Re: post-YAPC::Europe CPANTS news

2006-09-08 Thread Nicholas Clark
On Fri, Sep 08, 2006 at 09:15:47PM +1000, Adam Kennedy wrote:

 One of the linux distro guys pinged me about Test::Object needing the 
 very latest (CPAN-only) version of Test::Builder, because it means they 
 can't package it properly for the distros without upgrading the main 
 Perl package. Some packaging systems can't handle having the same file 
 in more than one distro it seems.

Said maintainers can work round the deficiencies of their packaging systems
by breaking out all the dual life modules from the core Perl package, and
making them into other packages on which the core Perl package depends.

In my opinion.

Clearly this might be a bit tricky if the packager of Test::Object isn't
the same person as the packager of core Perl, because then the former has
to persuade the latter of the need for such a change.

Alternatively said maintainers can work round the deficiencies of their
packaging system by having another directory tree in @INC ahead of the
core library paths, into which they install newer versions of dual life
modules. This way no files need to be overwritten on disk, or dual-owned,
yet Perl will still pick up the correct (newer) version.

Nicholas Clark


Re: post-YAPC::Europe CPANTS news

2006-09-08 Thread demerphq

On 9/8/06, Adam Kennedy [EMAIL PROTECTED] wrote:


On another subject that came up today one one of my modules
(specifically the new Test::Object dependency of PPI) it seems like it
could be a bad idea to have explicit dependencies on the latest version
of a dual-life module.

One of the linux distro guys pinged me about Test::Object needing the
very latest (CPAN-only) version of Test::Builder, because it means they
can't package it properly for the distros without upgrading the main
Perl package. Some packaging systems can't handle having the same file
in more than one distro it seems.


I think that this is a general problem that probably requires some
pushback towards the packaging system maintainers.

The concept that a package can contain numerous parts, some of which
may be superseded by later released stand alone parts shouldnt be a
surprise to anyone. It happens all the time in every aspect of life.

This came up recently for me with regard to EU::MakeMaker and
EU::Install. The package EU::Install is contained by both EUMM and
EUI. In principle the EUMM package shouldnt install its EU::I unless
the existing EU::I is older than the one it contains. OTOH, the EUI
package should always be used if one wants to upgrade it alone.

I personally dont think that this is a bizarre use case. EUMM needs to
have EUI to do its thing, and EUMM needs to have EUI around to do its
thing. But they can be updated independently. Such a chicken and egg
kind of relationship probably isnt that unusual. The only solution
can't be that you have to bundle them together or bundle them all
independently.

On win32 this is an old problem that is mostly dealt with
transparently to the user (except when its done badly in which case
things can go horribly wrong). Its common for a package to bundle
various items, particularly .dll's, but not install them when it finds
that later versions are available from some other source.

BTW, im not saying that this is an easy problem to resolve, or that im
interested in rushing out and solving it myself. But it seems to me to
be one that needs solving. :-)

I mean, we are talking about tools here, can you imagine going into a
hardward store and finding out that you cant replace a tool from a
toolset without replacing the entire toolset? Or conversly that nobody
offers a complete toolbox just because then they would be forbidden
from supplying the individual tools alone?

Anyway, sorry, minor rant. Ill shut up now.

:-)

Cheers,
Yves

--
perl -Mre=debug -e /just|another|perl|hacker/


Re: post-YAPC::Europe CPANTS news

2006-09-07 Thread Thomas Klausner
Hi!

On Wed, Sep 06, 2006 at 04:28:56PM -0400, Michael G Schwern wrote:
 Thanks for the updates, Thomas.  And now on with the complaining!

:-)

 - has_example
   An optional metric that checks if the author included a dir called
   'eg|ex|example(s?)' which in turn includes at least on *.pl
 
 IMO examples in an example directory are a detriment, not a bonus.

The one advantage of dedicated examples for me is that I can take that
example file (mostly downloaded from search.cpan.org), run it, modifiy
it, run it etc.

This hardly works with code embedded in the docs, as this code tends to
be overly verbose (eg no 'use strict' etc).

In fact I was only made aware of 'examples' during the discussion here a
while ago. I used examples several times since, as a first step to get
used to a distribution.

So I think they are valuable.
 
 Examples go in the installed docs or they are lost.

The docs could state that there are some ready-to-run examples in that
dir in the distribution.

 Additionally, if you're going to keep this thing around, restricting the 
 examples to .pl files penalizes HTML (Mason or other templating system), 
 POD and module examples. [1]  It would be best to just say that the 
 directory contains something.

You're right (and several other people that suggested that). I'll change
it in the next run.


-- 
#!/usr/bin/perl   http://domm.zsi.at
for(ref bless{},just'another'perl'hacker){s-:+-$-gprint$_.$/}


Re: post-YAPC::Europe CPANTS news

2006-09-07 Thread Thomas Klausner
Hi!

On Thu, Sep 07, 2006 at 10:23:39AM +1000, Adam Kennedy wrote:
 
 - has_example
 
 I thought we were generally negative on this one, because it would 
 encourage people to spuriously add trivial example directories to their 
 distributions...

Yes, but I've recently introduced the concept of 'optional' metrics.
Optional metrics are not used to calculate an authors rank in the CPANTS
game. Current optional metrics are 'is_prereq' and 'has_examples'.

This also makes it possible to get 110% kwalitee at the moment :-)

 As a secondary point, if we keep it you might also want to include 
 /sample(s)/ and /demo(s)/.

Thanks, added

   - declares_dependencies
 
 It might be an interesting idea to also add a dependencies_exist 
 metric, that makes sure that all the dependencies that are declared 
 actually exist in the CPAN. Dunno, could be of dubiously little value, 
 but I just managed to somehow upload something with bad deps that I had 
 installed on my local machine, but that weren't all on CPAN yet...

It might also catch possible CPANTS bugs.

   - no_open_bugs
 
 If we are going to do this, we have to make sure that we DON'T include 
 wishlist bugs in this metric, or it blows the validity all to hell.

I was thinking of something like 'no open bugs with severity  wishlist
(or even unimportant) and more than two weeks old'.

'Taken' bug reports are obviously also not counted.


   - Signature checking ?
 
 I looked into this a bit more recently, with all the Module::Signature 
 changes. I think this is a bad idea.
 ..

I agree
 
   - has_rating ?
 
 Bad idea I think as well, because it will encourage spurious ratings. 
 This is the same reason that ratings aren't factored into the 
 search.cpan result order. CPAN Ratings currently has most of it's value 
 because it doesn't matter much, and so it encourages high quality reviews.

I also do not really like this metirc, I just wrote it down because it
was suggested some time ago.

 

-- 
#!/usr/bin/perl   http://domm.zsi.at
for(ref bless{},just'another'perl'hacker){s-:+-$-gprint$_.$/}


Re: post-YAPC::Europe CPANTS news

2006-09-07 Thread Gabor Szabo

On 9/7/06, Thomas Klausner [EMAIL PROTECTED] wrote:

 Examples go in the installed docs or they are lost.

The docs could state that there are some ready-to-run examples in that
dir in the distribution.


In one module where we had planty of examples I addeded a script that
would creata a Module::Name::Examples.pm  that is a collection of the example
files in pod format. This modules gets installed so the examples are
right at hand.

I am not sure if this was a good idea but I can think of exapanding it into by
adding some code that will split up the pm file to create the example files.


Gabor


Re: post-YAPC::Europe CPANTS news

2006-09-07 Thread David Cantrell

Jonathan Rockway wrote:


I could be wrong here, but I think the check is to make sure that tar
doesn't set +x on Makefile.PL or Build.PL, thus forcing the user to run
the proper version of perl instead of automagically running the perl
that shebang points to.  (Example: Makefile.PL says #!/usr/bin/perl, but
you really want to run /home/jon/blead/bin/perl.  Forcing you to type
this out is a good thing.)

I personally don't see the value of this, I always run perl Makefile.PL
anyway.


I have two perls on this 'ere machine, one of which I use for general 
scripting and hacking on the machine itself.  That's the first one in 
the path, so is what gets invoked when I say perl Makefile.PL.  The 
other is in /opt/ and is built the same as the perl on our QA and 
production machines (where it also lives in /opt).  It's what I use for 
writing code that will eventually go live to the public.  Obviously, I 
need different modules for those two cases, and just as obviously, when 
installing a module I need to tell Makefile.PL which perl to install it for.


(actually I have three perls, but one is Debian's own version which I 
never touch)


--
David Cantrell


Re: post-YAPC::Europe CPANTS news

2006-09-07 Thread chromatic
On Thursday 07 September 2006 00:51, Gabor Szabo wrote:

 In one module where we had planty of examples I addeded a script that
 would creata a Module::Name::Examples.pm  that is a collection of the
 example files in pod format. This modules gets installed so the examples
 are right at hand.

 I am not sure if this was a good idea but I can think of exapanding it into
 by adding some code that will split up the pm file to create the example
 files.

Pod::ToDemo, for example?

-- c


Re: post-YAPC::Europe CPANTS news

2006-09-07 Thread Gabor Szabo

On 9/7/06, chromatic [EMAIL PROTECTED] wrote:

On Thursday 07 September 2006 00:51, Gabor Szabo wrote:

 In one module where we had planty of examples I addeded a script that
 would creata a Module::Name::Examples.pm that is a collection of the
 example files in pod format. This modules gets installed so the examples
 are right at hand.

 I am not sure if this was a good idea but I can think of exapanding it into
 by adding some code that will split up the pm file to create the example
 files.

Pod::ToDemo, for example?


Sort of but not exactly.

As I can see in the SDL::Tutorial where Pod::ToDemo is in use,
there can be only one example perl .pm file and the real example is not
in the POD which means I have to duplicate the example in the text of the pod.

Gabor









-- c




--
Gabor Szabo
http://www.szabgab.com/
Perl Training in Israel  http://www.pti.co.il
08-975-2897   054-4624648


Re: post-YAPC::Europe CPANTS news

2006-09-07 Thread chromatic
On Thursday 07 September 2006 03:28, Gabor Szabo wrote:

 On 9/7/06, chromatic [EMAIL PROTECTED] wrote:

  Pod::ToDemo, for example?

 Sort of but not exactly.

 As I can see in the SDL::Tutorial where Pod::ToDemo is in use,
 there can be only one example perl .pm file and the real example is not
 in the POD which means I have to duplicate the example in the text of the
 pod.

The first is a genuine limitation, but the second is fixable with a little 
seek on *DATA and flipflop action.

-- c


Re: post-YAPC::Europe CPANTS news

2006-09-07 Thread Gabor Szabo

On 9/7/06, Gabor Szabo [EMAIL PROTECTED] wrote:

On 9/7/06, chromatic [EMAIL PROTECTED] wrote:
 On Thursday 07 September 2006 00:51, Gabor Szabo wrote:

  In one module where we had planty of examples I addeded a script that
  would creata a Module::Name::Examples.pm that is a collection of the
  example files in pod format. This modules gets installed so the examples
  are right at hand.
 
  I am not sure if this was a good idea but I can think of exapanding it into
  by adding some code that will split up the pm file to create the example
  files.

 Pod::ToDemo, for example?

Sort of but not exactly.

As I can see in the SDL::Tutorial where Pod::ToDemo is in use,
there can be only one example perl .pm file and the real example is not
in the POD which means I have to duplicate the example in the text of the pod.


Here is the module where we generate a .pm file from the files in the
eg/ directory:
http://search.cpan.org/~ctrondlp/Win32-GuiTest-1_50.5/Examples.pm

Gabor


Re: post-YAPC::Europe CPANTS news

2006-09-07 Thread Salve J Nilsen

Thomas Klausner wrote:


Oh, and if you want to join the fun and help a bit, here's a (probably
incomplete) list of tasks:

- Metrics:

[snip]

Would the metrics for community support channels that were suggested a while 
ago be welcome? (The discussion about them sort of died out :-\)



- Salve



Re: post-YAPC::Europe CPANTS news

2006-09-07 Thread Michael Peters


Adam Kennedy wrote:

 It might be an interesting idea to also add a dependencies_exist
 metric, that makes sure that all the dependencies that are declared
 actually exist in the CPAN. Dunno, could be of dubiously little value,
 but I just managed to somehow upload something with bad deps that I had
 installed on my local machine, but that weren't all on CPAN yet...

I'm not sure this is such a good idea. There are several examples of modules
that rely on other Perl modules that aren't on CPAN. For instance, svk relies on
SVN::Mirror which is a part of svn. SWISH::HiLiter needs SWISH::API which is a
part of swish-e. There are lots of perl modules tied to various projects that
don't exist independently on CPAN.

-- 
Michael Peters
Developer
Plus Three, LP



Re: post-YAPC::Europe CPANTS news

2006-09-07 Thread A. Pagaltzis
* Salve J Nilsen [EMAIL PROTECTED] [2006-09-07 14:15]:
 Would the metrics for community support channels that were
 suggested a while ago be welcome? (The discussion about them
 sort of died out :-\)

Only if it’s possible for an author to state that this metric is
meaningless. F.ex., I can’t imagine what benefit my Bencode
module would derive from anything beyond the RT queue it already
has.

Regards,
-- 
Aristotle Pagaltzis // http://plasmasturm.org/


Re: post-YAPC::Europe CPANTS news

2006-09-06 Thread chromatic
On Wednesday 06 September 2006 02:53, Thomas Klausner wrote:

 - buildtool_not_executable
   Check if the buildtool (Makefile.PL, Build.PL) are not executable
   (and thus need to be called with 'perl Build.PL' thereby specifying
   which exact version of Perl you want)

I'm not sure of the value of this one; how does an author make the buildtool 
executable on Windows, for example?  I have the impression (not using 
Windows) that users must always call the tool with 'perl Build.PL' on such 
platforms.

Am I mistaken?

-- c


Re: post-YAPC::Europe CPANTS news

2006-09-06 Thread jerry gay

On 9/6/06, chromatic [EMAIL PROTECTED] wrote:

On Wednesday 06 September 2006 02:53, Thomas Klausner wrote:

 - buildtool_not_executable
 Check if the buildtool (Makefile.PL, Build.PL) are not executable
 (and thus need to be called with 'perl Build.PL' thereby specifying
 which exact version of Perl you want)

I'm not sure of the value of this one; how does an author make the buildtool
executable on Windows, for example?  I have the impression (not using
Windows) that users must always call the tool with 'perl Build.PL' on such
platforms.

Am I mistaken?


on windows the command interpreter uses file associations instead of
C#!. files with extension C.pl are usually associated with
Cperl.exe, and invoked without specifying Cperl on the command
line. this is user-modifiable, so it's possible to configure files
with the C.pl extension to be associated with another executable, or
none at all.
~jerry


Re: post-YAPC::Europe CPANTS news

2006-09-06 Thread Jonathan Rockway
I could be wrong here, but I think the check is to make sure that tar
doesn't set +x on Makefile.PL or Build.PL, thus forcing the user to run
the proper version of perl instead of automagically running the perl
that shebang points to.  (Example: Makefile.PL says #!/usr/bin/perl, but
you really want to run /home/jon/blead/bin/perl.  Forcing you to type
this out is a good thing.)

I personally don't see the value of this, I always run perl Makefile.PL
anyway.  Do +x *.PL files cause problems with CPAN installs?  (Or am I
completely wrong in my interpretation of this test? :)

Regards,
Jonathan Rockway

chromatic wrote:
 On Wednesday 06 September 2006 02:53, Thomas Klausner wrote:
 
 - buildtool_not_executable
   Check if the buildtool (Makefile.PL, Build.PL) are not executable
   (and thus need to be called with 'perl Build.PL' thereby specifying
   which exact version of Perl you want)
 
 I'm not sure of the value of this one; how does an author make the buildtool 
 executable on Windows, for example?  I have the impression (not using 
 Windows) that users must always call the tool with 'perl Build.PL' on such 
 platforms.
 
 Am I mistaken?
 
 -- c


Re: post-YAPC::Europe CPANTS news

2006-09-06 Thread chromatic
On Wednesday 06 September 2006 10:27, Jonathan Rockway wrote:

 I could be wrong here, but I think the check is to make sure that tar
 doesn't set +x on Makefile.PL or Build.PL, thus forcing the user to run
 the proper version of perl instead of automagically running the perl
 that shebang points to.  (Example: Makefile.PL says #!/usr/bin/perl, but
 you really want to run /home/jon/blead/bin/perl.  Forcing you to type
 this out is a good thing.)

Oh, right.  Yes, that's obvious now.  I misinterpreted it.

-- c


Re: post-YAPC::Europe CPANTS news

2006-09-06 Thread Michael G Schwern

Thanks for the updates, Thomas.  And now on with the complaining!


Thomas Klausner wrote:

- has_example
  An optional metric that checks if the author included a dir called
  'eg|ex|example(s?)' which in turn includes at least on *.pl


IMO examples in an example directory are a detriment, not a bonus.

Any uninstalled documentation in the source directory will likely never been 
seen by the user (think about a CPAN shell installation) or even if they do see 
it it will be thrown out with the source tree once the module is installed and 
thus lost.

Examples go in the installed docs or they are lost.

Additionally, if you're going to keep this thing around, restricting the 
examples to .pl files penalizes HTML (Mason or other templating system), POD 
and module examples. [1]  It would be best to just say that the directory 
contains something.


[1] Also people like me who don't like to put a .pl extension onto their Perl 
executables.  You don't run ls.c or cpp.sh.  The user does not care and should 
not know what language their executable is in.


Re: post-YAPC::Europe CPANTS news

2006-09-06 Thread Adam Kennedy

Jonathan Rockway wrote:

I could be wrong here, but I think the check is to make sure that tar
doesn't set +x on Makefile.PL or Build.PL, thus forcing the user to run
the proper version of perl instead of automagically running the perl
that shebang points to.  (Example: Makefile.PL says #!/usr/bin/perl, but
you really want to run /home/jon/blead/bin/perl.  Forcing you to type
this out is a good thing.)

I personally don't see the value of this, I always run perl Makefile.PL
anyway.  Do +x *.PL files cause problems with CPAN installs?  (Or am I
completely wrong in my interpretation of this test? :)


There's a previous thread on this that explains the details.

In short, the perl you call Makefile.PL with, is the one that 
automagically gets used later when calling make test, make install etc.


So for cases where there is more than one Perl installed (and there's 
more than you'd think) it ensures that people are installing modules to 
the correct Perl, and prevents accidents.


Adam K


Re: post-YAPC::Europe CPANTS news

2006-09-06 Thread Adam Kennedy

Thomas Klausner wrote:

Hi!

During YAPC::Europe in Birmingham I did a (rather short and un-hackish)
hackathon. Slides are available here:
  http://domm.plix.at/talks/2006_birmingham_cpants/

During YAPC, I added a few new metrics:
- manifest_matches_dist
  Check if the stuff listed in MANIFEST matches what's in the dist
- buildtool_not_executable
  Check if the buildtool (Makefile.PL, Build.PL) are not executable
  (and thus need to be called with 'perl Build.PL' thereby specifying
  which exact version of Perl you want)


Glad to see this included, it caught about 20 modules of mine that had 
executable Makefile.PLs... although working out how the hell I managed 
to do that might take a little while, I've added another step to my 
release automation to stop it.



- has_example
  An optional metric that checks if the author included a dir called
  'eg|ex|example(s?)' which in turn includes at least on *.pl


I thought we were generally negative on this one, because it would 
encourage people to spuriously add trivial example directories to their 
distributions...


As a secondary point, if we keep it you might also want to include 
/sample(s)/ and /demo(s)/.



This resulted in quite some movement in the CPANTS game...

I've also changed the display of the authors page
  http://cpants.perl.org/author/DOMM
optional metrics (is_prereq and has_example) are now visually seperated
from the core metrics.


I like the new style, not being red is a good thing.


The site cpants.perl.org is still not very stable due to a
Catalyst/DBIx::Class-Bug (or more likely a bug in my usage of them)

Oh, and if you want to join the fun and help a bit, here's a (probably
incomplete) list of tasks:

- Metrics:
  - has_license
  - no_boilerplate
  - has_valid_filenames
  - declares_dependencies


It might be an interesting idea to also add a dependencies_exist 
metric, that makes sure that all the dependencies that are declared 
actually exist in the CPAN. Dunno, could be of dubiously little value, 
but I just managed to somehow upload something with bad deps that I had 
installed on my local machine, but that weren't all on CPAN yet...



  - no_open_bugs


If we are going to do this, we have to make sure that we DON'T include 
wishlist bugs in this metric, or it blows the validity all to hell.



  - Signature checking ?


I looked into this a bit more recently, with all the Module::Signature 
changes. I think this is a bad idea.


Signature checking HAS to be done by the CPAN client, and NOT ever by 
the module itself, because it limits the ability of the client to modify 
or tweak files (for example, we might potentially want to have 
Makefile.PL alter the META.yml to localise the deps for the current 
platform).


By the time make test runs, it's WAY too late to be checking signatures.

has_signature is fine, but another test along the lines of the Test::Pod 
and Test::Pod::Coverage ones would be a bad idea.



  - has_rating ?


Bad idea I think as well, because it will encourage spurious ratings. 
This is the same reason that ratings aren't factored into the 
search.cpan result order. CPAN Ratings currently has most of it's value 
because it doesn't matter much, and so it encourages high quality reviews.


Anything that would make the quality of the reviews worse (or malicious) 
isn't a negative thing.



  - relation of subs to lines of code ?


Dubious. Makes a naive and blanket judgement call.

Adam K


Re: post-YAPC::Europe CPANTS news

2006-09-06 Thread Adam Kennedy
Anything that would make the quality of the reviews worse (or malicious) 
isn't a negative thing.



Or rather, it IS a negative thing. :)

Adam K