Let's delete 10,000 files from CPAN

This week, let's delete 10,000 (decimal) files from CPAN. Thanks to Ricardo, we're almost a tenth of the way there.


We're a month into spring and some of the world just celebrated Earth Day, so it's time for the thousands of PAUSE authors to each delete one old distribution (which is three files in your CPAN author directory). Visit your delete files PAUSE page to "increase the Schwartz". You can even clean up your directory with WWW:::PAUSE::CleanUpHomeDir or with App::PAUSE::cleanup.

It's not quite enough for you as the PAUSE author to delete your files. We want to get the word out, so I'd like you to get one other PAUSE author to do the same. Use your social media networks, peer pressure, begging, or whatever your favorite method is, not because there's any danger of running out of space, but because it's fun to delete things and see them disappear.

This is also a good time to pass off modules you don't think you'll maintain anymore. You can use the virtual co-maintainers ADOPTME, HANDOFF, or NEEDHELP.

If you are feeling left out, you can take over or help with a module. Neil Bowers lists other virtual comaintainers that signal owner intent in Marking modules as 'available for adoption' and maintains the CPAN adoption list to help you find a project.

Author Removed Running total
Neil Bowers 90 90
Toby Inkster 600 690
Karen Etheridge 102 792
Gabor Szabo 15 807
Sawyer X 470 1277
Shlomi Fish 584 1861
BooK 94 1955
Brian Cassidy 41 1996
David Golden 2112 4108
Dana Jacobsen 107 4215
brian d foy 80 4295
Ricardo Signes 635 4930
MATSUNO★Tokuhiro 963 5893
Joel Berger 38 5931
Steffen Müller 74 6005
Sinan Ünür 20 6025
Renée Bäcker 449 6474
John SJ Anderson 300* 6774


90 files scheduled for deletion

Here's the program I use to clean up my PAUSE stuff: https://github.com/rjbs/misc/blob/master/perl/tl

It deletes the oldest versions of dists that have more than three versions already uploaded, excluding perl itself.

600 files scheduled for deletion!

Here's my variant of RJBS's script. Rather than simply keeping the last three releases, it keeps the last two stable releases, plus all trial releases which are newer than the latest stable release.

Also it's more verbose about reporting what is being kept.

105 files scheduled for deletion *, using rjbs's script. This was lower than I expected, but I do visit the deletion page once a month or so and do regular pruning.

I also got: Argument "" isn't numeric in sort at delete-old line 98. -- that's this line:

my @versions = sort { $b $a } keys %$dist;

* actually 102 - I went to the deletion page afterward to review what was scheduled, and undeleted Moose-2.1005 - the last release in the 2.10x series.

My version is at https://github.com/karenetheridge/misc/blob/master/install/generic/bin/pause-cleanup - it changes the default keep to 2 rather than 3, and doesn't count dev releases in that count (just like tobyink's), but also respects -TRIAL (which tobyink's doesn't), and also fixes a few bugs in rjbs's version, left as an exercise for the reader.

I have a small contribution with 15 deleted files (5 modules) leaving no more than 2 revision of each module on CPAN.

470 files marked for deletion.

Paging TOKUHIROM, paging TOKHIROM! Please come to the deletion desk, and bring your friends BINGOS, MIYAGAWA, and SHARYANTO with you.

Hi Neil :) No worries, I clean up every month or two or three using WWW::PAUSE::CleanUpHomeDir, so I only leave the newest rev of each dist.

My script: https://github.com/sharyanto/scripts/blob/master/cleanup-pause-homedir

(BTW someone should create an App:: for this so we can all use the same script, it's kind of sad that everyone needs to write his/her own script for this.)

Steven: rather than an app, someone could implement the proposed changes to PAUSE to automate cleanup.

It would be nice if there were user selectable policies on PAUSE, such as

  • Only keep latest releases (latest stable and latest developer), purge others once older than 3 months.
  • Keep last 2 versions in each major release group, purge any developer releases that have been superseded (either by another dev release, or a stable release)
  • etc

Thanks for the heads’ up and the links to the applications that facilitate that. I scheduled 584 files for deletion.

I also regularly delete files to increase my Schwartz. 94 files scheduled for deletion this time around.

38 for me, but I do this fairly regularly. Still every little bit right?

41 files scheduled.

2112 scheduled for deletion, thanks to rjbs' tool

A lot of these heuristics assume that only one author is making releases. When many authors share maintainer duties, the current heuristics in our script result in many older versions of dists being left behind that otherwise could have been deleted.

107 scheduled. I fell behind in trimming them, thanks for the reminder.

Thanks for the reminder. Happy Northern Hemispheric Spring!

I hassled emailed TOKUHIROM, and he emailed me back saying he's scheduled 963 for deletion. You should add RJBS's 635 to your running total as well.

I'm also a regular deleter. Added 74 files to the count nonetheless.

I delete occasionally but just bumped off 118 more.

Leave a comment

About brian d foy

user-pic I'm the author of Mastering Perl, and the co-author of Learning Perl (6th Edition), Intermediate Perl, Programming Perl (4th Edition) and Effective Perl Programming (2nd Edition).