Things seem to be working pretty well so far with the collaborative SVN setup.
I've got about 15-20 CPAN authors that have accounts now, although about 5-10 are there because they know they will add things in the future, rather than needing it immediately. 3 or 4 actual bug fixes have been done, and the process has worked pretty smoothly.
My use of Insurrection seems to have become a bit more controversial than I had expected.
So far I've had two authors of different web-based svn tools query me over the choice and why I didn't use theirs (one accidentally in public) and I've had two other CPAN authors trying to set their own installs up get $annoyed at me for recommending something they can't get to install.
So I probably should clear up the situation with Insurrection.
Insurrection is not a web-based svn viewer in the style of SVN::Web. While it does have a fairly minimal amount of viewing functionality, that isn't the point.
What Insurrection does do is make it easier to run the repository.
A few people have been bemused, "is it that hard to use an editor and add two lines to two config files?"
The effect I'm aiming for here is "Wetware Optimisation".
In order to let someone else fix a bug in one of my modules, there are three critical tasks I have to take, and can't avoid. These are 1) Access Approval 2) Review Changes 3) Release to CPAN.
My goal is to remove any and all other tasks, and make those three as small (both in terms of time and intensity of thought) as possible while retaining the same quality of oversight.
My target for my total involvement in a bug fix, including all three of the above, is 1 minute. That is, I'd like to be able to add an account, let them fix a bug, review the changes, and upload the new version, with the total for my involvement being less than 60 seconds (obviously more if it's a big change that needs more review).
If I can keep the involvement down to that level, it means that I can keep the evolution of the CPAN modules going without having to be distracted from my normal perl consulting work, and so I don't have to put aside entire days to deal with the RT backlog. This is the win-win situation I'm looking for.
And by using Insurrection, with it's email-based accounts, and managing the generation of passwords and so on, it cuts down the "Access Approval" step to a minute or so. It's still not quite as fast as I'd like, but it's the best there is for now.
I will note however, that as great as it is, Insurrection is _incredibly_ difficult to install. For anyone who wanted to try, I posted a (large) installation guide back to the author after I finally got mine working.
You can find it in the Insurrection mailing list archives.
Yesterday I also managed to chop some more time out of the 3) Release to CPAN.
One of the nice things about the release script I use is that it commits a copy of the tarball back into SVN. Because of anonymous read access being enabled, this means every release has an master canonical URL.
PAUSE accepts a URL as one option for uploading modules. :)
So I've been cut and pasting the URL from the release script output, pasting it into the PAUSE upload form, and PAUSE will suck the release directly out of my SVN.
I could potentially make the release script upload as well, but that would mean giving the script my passwords, and I'd also strongly like to keep at least one human step in there to protect myself against script bugs which uploaded bad things.
Yesterday I realised that I can go one step further and abuse the "Quick Search" feature in Firefox.
This makes bookmarks linked to a keyword you can type into the URL bar.
For example "cpan Foo::Bar" is set up to do a search.cpan search for "Foo::Bar".
With a little bit of PAUSE hackery, I found I can abuse this same feature to automated the "upload" of a repository release URL.
So now, instead of going to pause, and uploading a file, I just copy the URL from the release script output, and just type/paste the following into the Firefox URL bar.
"release http://svn.phase-n.com/svn/cpan/releases/PPI-1.113.tar.gz"
And in one step that goes to PAUSE and executes a URL upload.
So now step 3) is down to about 20-30 seconds, and I don't have to read anything or fill out any forms. :)