One thing leads to another

CPANadoptionyak shaving Wed 26 March 2014

At the QA Hackathon I was working on something with BOOK, for which we were using my CPAN::ReleaseHistory module. I mentioned I'd been meaning to put better cache control in it. BOOK quickly hacked in a max_age attribute and sent me a pull request. So far that's prompted one new distribution, and I've adopted two other distributions. I still haven't got back to CPAN::ReleaseHistory though.

When I first started working on PAUSE::Packages, I thought about a role for the common caching code between this and PAUSE::Permissions. I initially suggested File::CachedURL on PrePAN, but following comments there, and from DAGOLDEN on github, I hacked up a quick stand-alone version of the module.

I subsequently wrote PAUSE::Users and CPAN::ReleaseHistory, which are based on the same basic pattern (an index file cached locally, and different ways to access it provided), but each had its own quirks.

Following BOOK's pull request, I decided it was time for some refactoring, as I wanted to add a cache expiry feature to all modules. I started working on MooX::Role::CachedURL. I want to be able to specify the expiry time either as a number of seconds, or a natural language'ish notation, so you could say "3 days" or "3d" (which is widely used, for example in Cache). I figured there had to be a module for that, but on searching couldn't find one. I started outlining a module, then decided there probably was a module already on CPAN. This time I found MIYAGAWA's Time::Duration::Parse.

I noticed it hadn't been released for a good while, had some outstanding bugs, had some dependent dists, and wasn't CPANTS-clean. I emailed MIYAGAWA and offered to address those things. I got a quick response saying I now had co-maint.

While working on Time::Duration::Parse I discovered that it was using Exporter::Lite, a module that was new to me. That was in a similar state, so I emailed MSCHWERN and offered to take it on and do some releases. Schwern was similarly quick on the draw, and ended up sending me a git repo he'd generated from his SVN repo.

I've done a couple of releases of those dists now, and am back working on MooX::Role::CachedURL. Hopefully I'll soon get to the dist that started this chain...

comments powered by Disqus