I'm working on sketches and notes and angry muttering on the next iteration of CPAN::Mini. I want to keep it fairly simple, but add enough sophistication that it's easier to subclass and plug in. Here are a few things that will be happening:
There will be a "Source" class that will represent the remote CPAN mirror. It will provide a list of modules or distributions and the information needed to retrieve them.
There will be a Mirror or Processor class (or both) that will perform the mirroring from the source, possibly doing extra work via plugins.
There will be (either in the core dist or as an extension) a Source multiplexer that will let you mirror multiple sources.
Output will include a new index (02packages etc) built from the actual mirroring that is performed. Modules you skip will not be listed, for example.
There will be more tests.
I will post more details as they become more than squiggles on my whiteboard.