Identifying CPAN distributions you could help out with
The other day Andy Lester posed a question Where can someone find Perl modules to contribute to? My first answer was to look at the dists with the most bugs. I continued thinking about it, wondering how you could identify a module that is ripe for help.
This post outlines my next idea, and the top 20 dists based on my first implementation.
If you're going to contribute, it's most motivating to do something that's going to be used. So the idea is to look for dists that are still getting bugs raised against them, but that haven't seen a release for a good while.
- Released is the date of the last release of the dist.
- Bug days is the number of days since the last open bug was raised.
- Gap is the number of days between the last release and the most recent bug.
- Score is Gap / bug days.
Here's the top 20 for a slightly different measure. In the table below, gap is the number of days between the most recently reported still-open bug and the oldest still-open bug. If there's only one bug, then gap will be 1, so the dist won't appear here.
Note: these are really identifying modules that are potentially worthwhile candidates for taking over (getting co-maint), rather than modules where you could contribute without having to take over maintenance. That's a separate list!
Some thoughts for improving this:
- It's skewed towards bugs raised within the last few days — too much so. Maybe instead of bug days as the denominator, I should use log10, to smooth things out.
- A dist may have been bug-free until yesterday, so hasn't needed any releases. I could look at the number of bugs that have been reported since the last release, that are still outstanding.
- Even further, I could look at the elapsed time between the oldest open bug and the most recently reported open bug.
- Factor in the number of dists that are dependent on each dist, and weight the score based on this.
What else should be factored in? I'll play a bit more, then put a longer sortable list online. I love the fact that I could get hold of all the metadata needed to create this. Now I feel like I should find a bug to fix!