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

As i develop relatively big and complex projects, i find myself more and more in an awkward position: Often, the "perfekt" CPAN module for a job has a critical (but easy to fix) bug. Otherwise it would work just as required.

If the modules author can be contacted and is willing to fix the problem, everything is fine. But often, these are older modules the original author is not interested in them anymore. Sometimes, the required bugfixes are documented in years-old open bugtracker ticket.

So, how to proceed? Of course, i could always try and contact the original author and ask him/her if i could take over that module. That could take - in some cases - months. And at the end, i would be stuck with the maintenance of the module. That's not ideal in every case.

I could upload a patched, renamed version of the module. I've done this today. While it has the effect of bringing a fixed version nearly instantly to other users, it clutters the namespace and confuses other users. And i'm stuck with maintaining the module... again.

I've also done the third option once, writing a module that patches other modules (in my case, it also added some functionality). But in this case i'm not only stuck with maintaining the module, i also have to constantly track if the other modules get updated and patch my autopatcher to keep everything working.

The last option, "hostile takeover", e.g. asking the admins to transfer that namespace to me after a prolonged silence from the original author: Not worth trying except in very extrem cases. It takes forever, the original author won't like it if (s)he ever finds out.

So, what do you think? What are the best options? How do you deal with such a situation?

"You have reached the Monastery. All our helpdesk monks are busy at the moment. Please press "1" to instantly donate 10 currency units for a good cause or press "2" to hang up. Or you can dial "12" to get connected directly to second level support."

Upload a fixed instance of the module under the same name and with an incremented version number. It will be glaringly labeled "*UNAUTHORIZED*" and not fully indexed. But it is still available for download and adds to the demonstration of how CPAN currently stressing ownership far above collaboration interferes constantly with getting CPAN modules improved. Maybe those with the power to make even minor changes to how the CPAN infrastructure works will eventually respond to tons of "unauthorized" improvements being uploaded. So far, they seem pronouncedly uninterested in even acknowledging the problem.

I've asked this question here before. If you've taken the normal approaches, send an email to modules@perl.org. State the name of the module in your subject, along with a brief snip about how you have a fix for it.

In the body, clearly state what you've done to try to contact the author and how it failed (bounce etc) and how long you've been trying to get the software fix. The PAUSE people will give you 'maintainer' rights on the software after they verify your claims. Then you can upload the software with the same name into your PAUSE space and new users will automagically download your version.

You can feel good about this, as you've covered all of your bases... publicly in this case. If the original author returns, you know you were professional about the situation, and hopefully they'll either give you ownership, or incorporate your work into the project.

Update: email once, wait a couple days. If you hear nothing by then, email again. Those monitoring modules@ have lives too. They will get back to you though. Promise.

I'm sorry but I really don't understand why people are suggesting an unauthorised upload. If you supply a patch in an RT queue then your fix is available to anyone who wants it regardless of whether the maintainer applies it. It's not uncommon for example for Perl modules in Debian to be built from the official release with selected patches added.

If the maintainer has abandoned the distribution you either care enough to adopt it and continue maintenance or you don't. Uploading an unauthorised and unmaintained module really doesn't help anyone.

I could upload a patched, renamed version of the module. I've done this today. While it has the effect of bringing a fixed version nearly instantly to other users, it clutters the namespace and confuses other users.

I don't buy the "it clutters the namespace" argument. If everyone would use that, noone will upload a new module -- they all "clutter the namespace" in the same way.

As for confusing other users, why? Do you use confusing names? Do you write gibberish in your README? What is it what you do to confuse people? Really, CPAN is full of modules X that use module Y, Z and W. That doesn't seem to confuse people, so I'm curious, what do you do to make it confusing?

There's little difference between a module Foo::Bar::Baz that uses the functionality of Foo::Bar, extends the functionality of Foo::Bar, is a wrapper with a different API around Foo::Bar, does some aspects of Foo::Bar differently, or works around a bug in Foo::Bar.