I've waffled previously about Audiofile::Info and the problems I was having coming up with a good way to allow people to use whatever MP3/Ogg library that they like. See list and use.perl journal passim for a description of the problem.
I had a discussion with Mark last night where a lot of things became clearer to me. Having filtered those thoughts through a fine meal and a night's kip I now think I'm able to solicite further opinions. Here's what we think we'll do. Currently A::I bundles all (well, both) of its subclasses with it. We're going to change that so that A::I becomes a separate (tho' useless on its own) distribution and there are separate distributions for each of the driver modules (a bit like the DBI/DBD distinction). If you install Some::MP3::Module and you want to use it with A::I then you'll also need to install A::I::Plugin::Some::MP3::Module. Installing one of these plugin modules will also maintain a small "database" of installed plugins and their capabilities (where a capability is osmething like "reads oggs" or "writes ID3 tags"). This is a bit like how XML::SAX works. When using A::I you have a number of options. 1/ Leave A::I to figure out the best plugin to use (/me waves hands in the air). Or maybe it just uses a default plugin. Or something. 2/ Ask for a specific plugin. 3/ Ask for certain capabilities. A::I will then find the plugin that best meets your request. I'm keen that in the simplest case (number 1 above) it Just Works as that's how I suspect that most people will use it most of the time. So the problem becomes one of maintaining and querying the capability database. This is (probably) largely a SMOP but there are no doubt many hairy corner cases that complicate matters. Last night we thought of the problems of PAR installation (I know nothing about PAR but apparently it does scary things with @INC) and also of people wanting to keep personal configuration files (or, indeed, personal module libraries with other, better, audiofile handlers). Anyway, that's approximately where we are (Mark, have I forgotten anything?) Any ideas or suggestions that anyone had would be appreciated. Cheers, Dave...