I just retired one of my modules. I want to make a note here of the preservational ritual I followed, to invite others to consider doing the same:

The module itself is not relevant, but for completeness’ sake, it was Plack::Middleware::UseChromeFrame. I doubt that anyone besides me ever used it, and Google Chrome Frame is certainly irrelevant now.

In any case, it’s scheduled for deletion from CPAN; as you do.

I have also deleted the public repository for it on GitHub. FWIW, no issues were ever filed against it – if there had been, I would’ve had to think about that.

But as a final step, I also went into its repository and did this:

git remote rm origin # and any other remotes git bundle create ../Plack-Middleware-UseChromeFrame.git --all

This creates a Git bundle – a file which contains Git history, bundled up in a sort of archive that’s easy to copy around. A Git bundle can contain as little or as much of history as you want. In this case, the --all switch results in every tag and branch being included into the bundle, with their full history.

I then logged into PAUSE and uploaded this file. Finally, as soon as it showed up, I scheduled it for deletion along with the other files belonging to to the distribution. The point of this exercise is to make sure this file will go to BackPAN.

The upshot is that the development history of the module is archived for all time… or at least as long as BackPAN continues to exist. The module is deleted from my systems, but a full-fidelity copy of its development history will continue to exist probably until long after I or my own machines are gone.

Of course, the module in question is obscure and little-used so this exercise was more to satisfy my inner archivist than of any true importance. But not every module is so inconsequential – and even if it is, it may at some point matter to someone more than it matters to the universe in general.

So if you have occasion to retire a module of yours, please consider doing the same, or something equivalent.