gwillen has asked for the wisdom of the Perl Monks concerning the following question:

Hello, dearest perlmonks. Today, I googled how to get the longest common substring of two strings in Perl, and your own monestary suggested to me this module:

http://search.cpan.org/~dyacob/String-LCSS-0.12/lib/String/LCSS.pm

And lo, and behold, it is a module for the purpose of computing the longest common substring. Except: IT DOESN'T WORK. For example,

perl -MString::LCSS -e 'print String::LCSS::lcss("asdfasdfasdf", "as") . "\n";'

yields the empty string.

The module has at least three bugs filed against it, the first open more than four years and none ever answered, for the critical flaw that it fails to compute what it says. The use of this module in any actual code is a ticking time bomb, to say the least.

So: Given that this module claims to perform an obvious and important function, is dangerously broken, and has a non-responsive maintainer: How do we put it out of its misery, so no future user will have to discover the issue the hard way, as I did?

Replies are listed 'Best First'.
Re: How to get a module off CPAN
by tobyink (Canon) on Dec 11, 2011 at 09:00 UTC
    1. Write a patch that fixes the open bugs, and the bugs you've found.
    2. Submit that patch to the listed author, copying the modules mailing list in your e-mail.
    3. If the author accepts that patch...
      1. Your work here is complete!
    4. Elsif the author says he is no longer interested in maintaining the distribution:
      1. Ask if you can take over as maintainer, and if he agrees ask him to inform the Perl modules mailing list.
      2. Someone on the mailing list should be able to give you the permissions on CPAN to take over the module.
      3. Release a new fixed version.
    5. Elsif you get no reply after a couple of months:
      1. Explain the situation on the Perl modules mailing list, including what you have done to contact the author. Ask tobe made the maintainer of the module.
      2. Someone on the mailing list should be able to give you the permissions on CPAN to take over the module.
      3. Release a new fixed version.
    6. Else: die("unexpected situation")
      Point 6 ought to be: fork (which, assuming a reasonable "open" or "free" license is possible), or write your own implementation from scratch. Name it differently, and you don't need to ask anyone for permission. You don't have to wait for months. You can upload something that works now.

        Technically, I think that you can upload something that works now under the same name. It just gets flagged with big, red warnings about "Unofficial Release!" and isn't indexed as well. I can see situations where that would be preferred to picking a new name, at least to some people. I certainly find it preferable to "make a patch available 'somewhere'" that I've seen advocated.

        My preference would be to have such unofficial releases become official automatically simply based on the lack of response of the so-called "module owner". Certainly, we should not require presenting evidence of six months of stalking just to contribute a bug fix.

        - tye        

Re: How to get a module off CPAN
by Khen1950fx (Canon) on Dec 11, 2011 at 07:56 UTC

    In general, once a module is on CPAN, it's there until the module's author backpans it. If it really bugs you, write a patch and submit it to the author. The author is under no obligation to acccept, use, or endorce the use of that patch. In the meantime, let's move on.

    String::LCSS_XS works better. Try this:
    #!/usr/bin/perl -slw use strict; use String::LCSS_XS qw(lcss); my $longest = lcss ( "as", "asdfasdfasdf" ); print $longest;
Re: How to get a module off CPAN (Fixed)
by toolic (Bishop) on Jan 01, 2016 at 20:59 UTC
    I was granted co-maintainer permissions for String::LCSS, and I uploaded version 1.00 with these bugs fixed.
Re: How to get a module off CPAN
by Anonymous Monk on Dec 11, 2011 at 09:01 UTC