There are some distributions on CPAN that were last released 20 years or so ago. Understandably many of them don't follow many of the conventions that we expect today, and some of them fail all their tests, and have for a while. I think we should do something about these dists: either update them to be well-behaved modern distributions, or remove them from CPAN. They'll continue to be available on BackPAN. Here I'll go through a batch of the oldest.

Distributions that don't have metadata, and don't follow other conventions, are hard to process automatically, and often "fall between the cracks". As a result different tools report different numbers of dists on CPAN, depending on whether they're choosing to ignore the flakey old dists that they don't know what to do with. That bothers me, so I want to tidy them up.

I first blogged about this over a year ago, so hopefully you can see that I'm not rushing at this. But I still think it's a useful activity, if done carefully and transparently.

Curation process

I think the general rule should be "nothing should be removed from CPAN without the author's express permission", and others have expressed that, including Jim Keenan. There is at least one exception to the rule: if the author has died, then I think that the removal should be proposed to the PAUSE admins on the modules at perl dot org mailing list. Full disclosure: I'm a PAUSE admin.

Here's my current proposed curation process:

Having identifed a candidate, look for alternative dists on CPAN etc.

Email the author, explain why I'm getting in touch, and offer to send them a patch, or adopt the module, and see what they think about removing it from CPAN.

If that email bounces, I'll go through the usual measures to try and find them. I've done that plenty when adopting dists.

If I can't find them, then I'd either go through the usual process of adopting the dist so I can release an update, or just leave it (most likely if the dist is XS and I can't build it).

If the author wants to remove the dist, they can either remove it themself, or make it a PAUSE admins request. Some of the authors likely won't have touched PAUSE for nearly 2 decades, so I'm happy to help them out.

Let me be clear: I'm not trying force their removal. I think many of them should be removed, but if the authors don't want to, or can't be contacted, then I'm happy to work to update them, where I can.

Distributions last released in 1995

For each dist below I'll give a brief summary, then my proposal for what to do. If I propose removal but the author doesn't want to remove it from CPAN, then I'll offer to update the dist for them, so it can become a co-operating distribution. Either by submitting a patch, or doing a release for them.

Remedy::Ar is in the badly named Ar distribution. The most recent release was "0.2 alpha", in November 1995. All tests are reported as failing by CPAN Testers. Proposal: remove.

Devel::CallerItem is in the CallerItem distribution. It gives an OO interface to information from the call stack. OVID has Perl6::Caller, which is labelled experimental, but is the same sort of idea. It could probably be removed, but I actually think: update.

CGI::Response is a module for for constructing responses to CGI requests. The last release was 0.03, marked as an alpha. The author has agreed that it should be removed from CPAN. Proposal: remove.

DBD::QBase is an incomplete DBI driver for QuickBase. It was an incomplete alpha release in November 1995, and hasn't been touched since then. Only failures reported by CPAN Testers. Proposal: remove.

Des is an XS module providing an interface to the DES library, last released in 1995. It appears to not even compile any more. Proposal: remove.

Devel::DumpStack provides functions for printing out the current call stack and related things. It doesn't have any tests and apparently can't be installed. DROLSKY's Devel::StackTrace is a modern equivalent that's maintained. Proposal: remove.

KGlob was meant to be File::KGlob , but the dist is malformed in various ways. It provides various glob functions, but there is no documentation and no tests. Proposal: remove.

HTML::Base is a "pre alpha 1" module for um, doing something with HTML. Given no documentation, no downstream dependencies, no tests, and it not installing properly, I can't see a good reason to keep it. Proposal: remove.

Server::Initialize::Daemon is in the InitializeServer dist, last released in August 1995. The dist contains four modules, none of which has any pod documentation, but there are a few comments. The dist only contains the .pm files, nothing else. And as a result there's only 1 CPAN Testers result, which is a fail. Proposal: remove.

The IPC_SysV distribution contains some modules which seem to have largely been superseded by IPC-SysV. Some of the module names have changed, and CPAN see them as different because one has a dash in the name and one has an underscore. Proposal: remove.

Math::Brent was released by JARW in December 1995. It provides an implementation of Brent's method. There's a more recent implementation of the technique, but the dist seems fine. I've emailed the author offering to (help) update it. Proposal: update.

Math::Derivative provides "functions for performing numerical first (Derivative1) and second Derivative2) order differentiation on vectors of data". I don't know whether there are better modules to use, but this seems like it would be ok with an update. I've emailed the author offering to (help) update it. Proposal: update.

Math::Fortran just provides two functions, sign() and log10() , which are "built-ins in Fortran, but not in Perl". I've emailed the author offering to (help) update it. Proposal: update.

Net::NIS is the lead module in the misnamed NIS-a2 distribution. It's an XS module that provides an interface to Sun's Network Information Service (previously known as yellow pages). It has downstream distributions, so can't be removed. It doesn't have META.{yml,json} , so could do with an update. Is there someone out there familiar with NIS who's happy to adopt it and put out an update? Proposal: update.

The perl_archie dist provided an interface for making Archie queries via Prospero. It's a broken dist for out-of-date technology. Proposal: remove.

The Prolog-alpha distribution contains an alpha release of an implementation of the Prolog programming language in Perl. The dist doesn't work, as can be seen because MetaCPAN doesn't know what to do with it. Proposal: remove.

Ptty was a module from the late Nick Ing-Simmons. It's not a working dist, so I think it can be safely removed, though I can't really say for sure. This would need agreement with other PAUSE admins. It feels vaguely wrong to be suggesting we remove one of Nick's dists from CPAN, but I think we should. Proposal: remove.

Religion provides a mechanism for installing die and warn handlers. It was last released in October 1995, and only has failures reported by CPAN Testers. Proposal: remove.

SetDualVar is an XS module that provides a function SetDualVar for setting both the integer and string parts of a scalar variable at the same time. It was last released in September 1995. If you want this functionality, you should use the dualvar function in Scalar::Util. Proposal: remove.

The SGI::FM module in the SGI-FM distribution provides an XS module that is an interface to the Iris Font Manager library from SGI for Irix. It only has fails and unknowns from CPAN Testers and no downstream dists. Does anyone use Irix any more? Proposal: remove.

SGI::GL is similarly an interface to SGI's GL library. These days you'd probably use OpenGL. Again, no passing tests and no downstream dists. Proposal: remove.

SGI::SysCalls similarly provides an interface to Irix system calls, I think. There's not even a README, and almost no code in the XS file. Proposal: remove.

SGMLS is a module for processing the output from sgmls and nsgmls parsers. Given it hasn't been touched for almost 20 years, and there are various other modules for processing SGML, including SGML::Parser::OpenSP, I suspect this could quite safely be removed, but don't feel as sure as with some of the modules here. Proposal: remove?

Tk::SelFile is a Tk widget for choosing a file to read or write. The README says it "runs under Perl version 5.001-l (dash el) and Perl Tk version b7". I don't know whether this works with any of the modern Tk dists for Perl, maybe someone familiar with one of them can check and let me know? And if so, should this be retained? Proposal: don't know

Please enable JavaScript to view the comments powered by Disqus.

Disqus