Clear questions and runnable code
get the best and fastest answer
Re^4: Losing faith in CPAN - unresponsive module authors (ownership--)by tye (Sage)
|on Jun 28, 2008 at 08:07 UTC||Need Help??|
Let me roll up replies to several items in this one reply...
Some people may say that this is too much harassment,
I say that it is excellent evidence that the system is broken. If anybody has had to resort to such drastic measures as often as you appear to have, then the system is requiring way too much from people who have to fight it just to get a patch applied. And the fact is that quite a few of us know darn well that without such drastic efforts, there is a reasonable chance that some patch that we produce to a CPAN module will never get applied.
I don't think hosting more CPAN modules in revision control would matter to most people or most modules. Although a small group of people will actually make a patch against the repository, most people don't.
Under the current system, most times when I have a patch for a module, I don't bother to submit it. And I've heard a ton of similar stories. So the fact that you see few patches being written has more do with most CPAN modules not offering easy and reliable ways to get a patch applied. Why bother to produce a patch when history shows that most of them will get ignored unless you start a personal vendetta?
Even if a few people do patch against the repo, I've only ever had one person also update the tests. It might be hard for some hard-core contributors to realize that, but most people either don't have the time or inclination, and even more people don't have the skills to do it.
I'm not a hard-core contributor. I'm a lazy bastard. I don't have the time to try to track down and then to nag some guy who submitted some implementation of a cool idea to CPAN months / years ago. When I run into a problem with a module, I do have a bit of time to fix the problem. If there is a system in place that makes submitting that fix easy and also likely to be useful, then I'm likely to use that system. And the easier it is and more importantly, the more likely it is to actually be applied, the more likely I am to patch documentation or tests as well.
You don't need anyone's permission to upload a new version of an abandoned module. PAUSE just doesn't index it if you don't have privileges.
Oh, no, it is much more than that. It also means that your module will be tagged with "Unofficial Release" in big red letters (at http://search.cpan.org/). There are probably even more important consequences with regard to using standard tools for downloading modules, but I haven't tried using any of those for quite a long time so I wouldn't know much about that.
A restive period is not helpful because some modules don't need updates in that time frame.
If a module needs no update, then why is somebody trying to upload a new version of it?! Your logic makes no sense. The time period isn't about "Oh, module X needs to be released every 3 months". The time period is about how long it is reasonable to wait for a module author to apply a patch and release a new version of the module.
It would still be a big improvement if the clock started ticking as soon as an RT was opened against the latest release of a module. But that would still squash the spirit that motivated the creation of the first patch.
The point is encouraging contribution. The point is trusting people to contribute good stuff while providing for ways to deal with the rare bad contribution.
If I haven't released a version of my module in months and PAUSE / CPAN has been changed then somebody uploads a new version of "my" module that sucks, then I can upload an even newer version and fix the problem. Then the "bad" contributor is locked out again. If they are a serial bad contributor, then they you have a situation where administrative oversight is worth doing and take their upload rights away.
I'd even be fine with the new version of the module being "unofficial" and unindexed for a period of time in order to give the official maintainer(s) time to respond to the upload. But it would be much more encouraging if the timeouts were automatic such that I could upload something useful and know that some person would have to make an effort to counter it in order to prevent it becoming official.
When I find a problem, there is usually a pretty short window of time over which I'll remain motivated enough to work on fixing the problem. About 90% of the time when I find a problem with a CPAN module, it is a module that hasn't been released in quite a few months. And if I'm interested in patching it (which happens surprisingly often), then that means that the module is of reasonable enough quality that I think it can at least be made genuinely useful.
So, if it were easy to create a patch, apply it, and release a new version based on it (rather quickly), then I'd just do it right then while I've recently worked out what needs to be fixed and whether the fix can fit in with the existing module or whether I just need to fork it or find a different solution, etc. Part of that process is evaluating whether the module is currently under active maintenance. If so, then I just submit to the maintainer. If not, then I should just release a new version right then.
If there is a repository, then I can see what maintenance has recently been done, even though no new release has been produced in quite a while. And I can even see that some other bug fixes have been applied and deal with / release those.
The point is to allow whoever comes along with the motivation to work on a module for an hour or few to find tools to help them to contribute usefully. They shouldn't find a system that values module ownership over all other considerations along with a system of red tape and long delays and appealing to the privileged cabal to deign to permanently annoint them with the burdensome tag of "I now maintain this module".
What a perfect system for crushing contribution.
CPAN is great for getting people to contribute new modules. It is also very good at getting people to not contribute to existing modules.
And, making the patch public starts the history of an author not responding to you and makes it easier for the PAUSE admins to see what happened so they can transfer the module when necessary.
Don't you love beaurocratic red tape? I guess if it is your own empire that you have built, then maybe you do. CPAN has become a little empire that allows people to stake out their own little empires within it.
Don't refrain from patches because you think the author won't help. Make the patch public, such as in RT, and other people can get it even if the author doesn't apply it. Don't hide from the rest of the world what you know because one person doesn't respond to you.
Like I said, I'm a lazy bastard. I have never grabbed a module, rooted around in RT looking for useful patches, downloaded the patches and tried to apply them, etc. That is way too much work. Heck, for many modules, I can implement my own replacement for it easier than that. So I'm quite unlikely to find appealing the idea of putting together a patch with the hope that it would be used as you describe.
You are correct that CPAN makes this about the best that can be done. And I encourage people to follow your advice. But I'd much rather that people have much better options.
The few times I've been successful at getting changes made to a module were the times I just wrote the author and said "make me a maintainer and I'll update it".
And even when they do that, I'm still not allowed to give co-maintainer access to anybody else. PAUSE/CPAN doesn't even support their being more than one person who can dish out permissions to upload "authorized" releases of modules. It is just sad (and frustrating).
The PAUSE system (because we're really not talking about CPAN) does not have a single point of failure as you describe. Some modules have only one maintainer, but the system allows for multiple maintainers. The system can handle multiple maintainers just fine. This isn't a problem with the system.
Heh. Yes, keep telling yourself that. The system it perfect.
There's no official channel for bug reports. I'm not sure what you submitted or where you submitted it to. Some authors use RT, some don't. It's not a single system.
Note that I'll be encouraging people to use RT for reporting bugs even though my git repository has tools for bug tracking. RT is integrated with search.cpan.org (and PerlMonks itself recognizes it via the rt:// linking short-cut). If a module maintainer doesn't want bugs submitted to RT, then they should document how they want bugs submitted, of course.
If you don't get a response, try another way.
Yes, e-mail and then wait a week. If you don't get a response, then pretend you are stalking the person and try to find alternate contact methods. Oh, except that when that week is up you've probably lost most of your enthusiasm about getting the patch applied anyway. So make a new version of the module with a slightly different name and upload it to CPAN. CPAN likes it when you do that; they make that very easy.
You don't want just anyone to upload any module. We'd quickly make CPAN useless as no one would know which version of a module to use. Do we use your version, or Joe's version, or Bob's version?
Yes, just look at Wikipedia. This whole wiki "anybody can contribute" idea is an abject failure. It is much better that we encourage everybody to upload new modules that solve the same problem but with a slightly different name. That makes picking between them so much easier. If we had just one module with several versions written by several different authors arranged as a linear progression, each based on the previous one, that would be terribly confusing and all would be lost.
You can always make local patches as the PAUSE admins figure things out.
And as your interest in fixing things drifts away and your enthusiasm for contributing to CPAN gets converted to disdain with each successive long wait for the unraveling of the red tape...