Mark your modules as adoptable if you don't want them

Signal that you'd like to pass on your modules by giving the virtual PAUSE user ADOPTME permissions. I've always been amazed at one of the least appreciated features of CPAN: people will step up to maintain or shepherd modules that aren't scratching their itch. It's a different sort of activity than the long-term or drive-by participation that most open source projects rely on. There are a group of people who maintain CPAN projects that they don't even use. There are a few that I handle that I've never used in a program.

I think we can improve on this wonderful but underrated social feature. I created the ADOPTME user awhile ago to house the distributions from PAUSE authors who had passed away. I would modify the build file to give a warning, bump the version, and upload as ADOPTME. That's too much work, though.

Around the same time, Andreas started to provide the PAUSE permissions data as 06perms.txt. This example shows that I have "first-come" permissions (a quirk of PAUSE and me being an admin), Sinan has "module-list" permissions, and there are three comaintainers:


If you give permissions to ADOPTME, those permissions will show up in
the permissions list too:


(New maintainers should kick out ADOPTME as a co-maintainer, though. I'm pretty sure Math::Cephes has a full time maintainer now).

There are several ways you can add ADOPTME as a maintainer:

  • If you've registered the namespace, you can edit "CPAN User-ID" field. You lose all control of the module this way.
  • For all modules, you can pass primary maintainership to someone else.
  • You can give a user co-maintainership

Having done that, when someone comes to the PAUSE admins asking to take over a module, we can short circuit our normally conservative "announce publicly and wait" process to transfer it immediately. Even active PAUSE contributors can use this to avoid having to respond to takeover requests for modules they no longer use. We might even be able to make this a no-human-contact process. You log into your PAUSE account, use a form to ask for permission for the adoptable namespace, and get permissions immediately. Of course, that depends on me actually building that into PAUSE myself, most likely. All the PAUSE code is in Github, though, if someone wants to do it themselves.

Even better than that, though, is the list of adoptable modules that we can advertise to people who'd like to work on a project that they didn't start themselves; there are a surprising number of requests for that sort of thing. PAUSE also has module status flags that can indicate this. The support level "a" flag denotes "abandoned; volunteers welcome to take over maintainance". However, you have to register the namespace to use that, and someone (probably me) has to manually approve the registration. That's a bit of extra work you don't want if you're actually abandoning the module.

I'd really like to see someone hack MetaCPAN to show an "Adopt this module!" thingy in the search results and the various module pages. It's probably a long shot of anyone hacking RT to show people reporting or examining module bugs that the module is adoptable.


That's closely related to my maintainer flag in the METAs ( The support is already merged in with MetaCPAN. There is indubitably an occasion here to merge the two efforts together.

The current list of modules up for adoption can be found at

I clicked on the above link -- first I got nothing but a form asking me what I wanted to search for -- thought maybe I had to be logged in -- then I got in:

The user you specified, ADOPTME., could not be found.

Maybe they have passed on and need to be adopted? ;^)

Here's a link so you can view the modules up for adoption without signing in:

"Sometimes that happens with URLs in sentences": it does. If I'm embedding a link near punctuation, I try to make sure to put a space or such after the URL and then test it. If I'm going through the time to leave a link for users, I _try_ to make sure they can use it.

Better is increased smarts in the link-in-sentence parsing of the platform you are writing on. It will be hard to get it perfect, but noting that very few URL's end with a period might lend a content parser to break before a period by default, resorting to methods like quoting (by the author) as a last resort.

It is certainly better to implement this in the machine instead of expecting a reader to notice it, as 1) this reader didn't notice the period until it was brought to her attention, and 2) the first thing many readers will try upon wanting to follow a link is to click on it. Hopefully that will work, otherwise they might never get to the URL intended (yes, I am distractible, and I never did make it to that URL).

Postscript: When I first tried to submit the above, I got:

Comment Submission Error
Your comment submission failed for the following reaons:
Your session has expired. Please sign in again to comment.
Return to the _original entry_.

I thought, huh? Tried to hit BACK and got:
This document is no longer available (OK)

Then I tried the link "_original entry_".

Gave me the same error.

Fortunately my browser has an added extension
"TextArea Cache", which allows me to recover almost any text on any window that's been timed out or prematurely closed. Maybe the timeout on the submission is a bit tight?

Update -- did it again, problem is, it doesn't seem to like one previewing it (*sigh*)

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).