Hi, Kenichi.

Please don't take anything I said as criticism or a demand for you to
do work.  :-)

If Christian is goign to YAPC::EU, I hope you two can meet up and join forces.

Regards,
David

On Mon, Aug 13, 2012 at 1:24 PM, kenichi ishigaki <kishig...@gmail.com> wrote:
> Hi.
>
> Thank you for your comments and suggestions on CPANTS. I'm going to
> talk about some CPANTS stuff that I'm working on at YAPC::EU. I'm not
> sure if I can implement some of what you mentioned before the YAPC,
> but maybe we can discuss them there.
>
> Regards,
>
> Kenichi Ishigaki, aka charsbar
>
> 2012/8/8 David Golden <xda...@gmail.com>:
>> I understand how frustrating it is to encounter these sorts of issues
>> and I applaud your desire to get more transparency about them.
>> However, I have several reservations about trying to address them with
>> CPAN Testers.
>>
>> My first reservation is philosophical.  CPAN Testers is primarily
>> about *tests* -- whether or not tests passed or failed.  It is not a
>> general distribution quality (Kwalitee) reporting system like CPANTS
>> (http://cpants.charsbar.org/index.html).  (Nor is it a general test
>> for "works with toolchain".)
>>
>> My next reservation is about the relation between "failure" and
>> "blame".  Consider circular dependencies and assume that the
>> circularity spans two or more authors.  Which distribution is to
>> blame?  Should they all start getting "fail" reports?  I don't think
>> so.  That's just likely to piss people off and lead to Barbie getting
>> more hate mail.
>>
>> It also would not be consistent with our policy for dependencies.
>> Because we focus on whether tests pass, we want to provide a fair
>> chance of passage.  IMO, a fair test is one in which all specified
>> prerequisites are satisfied.  We don't send reports when dependencies
>> are missing and we encourage the "exit(0)" trick if external
>> dependencies are not available.
>>
>> Reporting circular dependencies as a failure would be a special case
>> and I don't think it's justified.  There may be reasons why someone
>> has created co-dependencies.  That's an installer-level issue, just
>> like external library dependencies.  From a prerequisites
>> specification standpoint, the distribution is asserting "if you
>> install these modules, my tests will pass".  If we can't meet the
>> preconditions -- for whatever reason -- then we shouldn't be reporting
>> a failure.
>>
>> Even if we were going to change our approach to report on this, I
>> would favor the existing "UNKNOWN" grade we use for build failures.
>> The meaning of this in the testing context is clear: we don't know if
>> your tests would pass because we never got that far.
>>
>> To your specific list of issues, here are my recommendations for how
>> to address them using CPANTS, which I think is the right tool for most
>> of the issues you raise, particularly since most of these can be
>> tested once centrally and don't need to be tested in a distributed
>> manner.
>>
>>> - trying to unpack an archive for which no packer is available on the system
>>
>> There is no specification for what archive forms are acceptable, only
>> historical practice.  Again, I find this the testers responsibility to
>> have a sane toolchain, rather than the author's responsibility. E.g.
>> what about broken tar on Solaris?  I don't think it's the author's
>> fault if tester can't untar on Solaris?   These are real issues.
>> CPAN.pm actually has special code to deal with this:
>> https://github.com/andk/cpanpm/blob/master/lib/CPAN/Tarzip.pm#L278
>>
>> CPANTS already tests "extractable" -- meaning tar/gzip or zip, so I
>> think that's sufficient.
>>
>>> - trying to unpack an archive that contains characters that cannot be used
>>> in paths on the system
>>
>> I don't think there is a CPANTS tests for portable filenames and I
>> would encourage you to write one.
>>
>>> - invalid yml/json files
>>
>> I think CPANTS tests valid yml, but I think it does so poorly.  These
>> days, it should probably be checking if CPAN::Meta->load_file($file)
>> will work for all META.* files found.
>>
>>> - circular dependencies
>>
>> This is, of course, tricky.  I wouldn't mind seeing an 'optional'
>> CPANTS analysis that does static analysis of dependencies to try to
>> detect cycles.  That's not perfect (missing dynamic deps), but it
>> would be a reasonable approximation, since dynamic deps are pretty
>> rare.  By making it 'optional', it also diffuses the "blame" issue, so
>> someone's core Kwalitee score isn't diminished if someone else creates
>> a cycle.
>>
>> I think CPANTS fell out of favor when it stopped working for so long.
>> If you're really looking to address these things, I would encourage
>> you to do several things:
>>
>> - contact the current maintainer and offer to help/enhance it (maybe
>> get it back on cpants.perl.org instead of just a redirect)
>>
>> - patch MetaCPAN to actually show a CPANTS score instead of just
>> having a link to a CPANTS report.  I think for CPAN Testers, the
>> snapshot of pass/fail/etc reports helps raise the visibility and doing
>> something similar for CPANTS could help as well.
>>
>> - build a Kwalitee notification system for CPANTS, so that authors get
>> their Kwalitee score after upload (but consider the opt-in/opt-out
>> issues carefully)
>>
>> - rebuild the visibility of Kwalitee in the perl community so people
>> take it seriously again.  Blog about it monthy?  Talk about who's
>> going up and going down in the stats?  Pick over bad dists as
>> examples?  I don't know what, but more attention to Kwalitee might
>> help (assuming authors care)
>>
>> That said, I think the current CPANTS overall kwalitee metirc is not
>> very helpful because everything clusters so closely.  See
>> http://cpants.charsbar.org/graphs.html -- figuring out a better way to
>> report kwalitee would help make it a more actionable.  Maybe it's a
>> subset of the current 'core' that matters.  Maybe it's reporting
>> Kwalitee deciles instead of raw scores.  Something.
>>
>> So.. if you read this far, I think you're on to problems that we do
>> want to detect, but I think CPANTS is a much better place to spend
>> your round tuits.
>>
>> -- David

Reply via email to