[Catalyst] [RFC] Catalyst::ConfigLoader -- load a config from various formats

Brandon Black blblack at gmail.com
Thu Jan 26 20:13:58 CET 2006


On 1/26/06, Perrin Harkins <perrin at elem.com> wrote:
> On Thu, 2006-01-26 at 18:12 +0000, Matt S Trout wrote:
> > I don't always have the luxury of being the only person running code on
> > a given server.
>
> There are many ways to do it.  The odds that any two large perl apps
> will require conflicting versions of a certain module are pretty high,
> so most people find a way to deal with this if they have multiple apps
> developed with different frameworks.  Many corporate environments (e.g.
> Morgan Stanley) develop configuration management systems for handling
> this.
>

Until such a framework ships for the rest of us, as something that all
perl installations and modules know about, it's not feasible in the
general case for a large framework being published to the world for
use on random hosts that don't have such a configuration management
system.

It could be fixed by p5p with a rather invasive change to allow
multiple versions of a module to be installed simultaneously in
versioned subdirectories, with "use", "require", etc picking up the
latest available normally, but also allowing "I want exactly version
X" to work.  And from there it's trivial to use module-building tools
that use exact dependencies where neccesary instead of "at least X"
dependencies.  lib/ would get a bit polluted with unneccesary old
versions over time, but there's not a lot of clean ways to clean those
up (user scripts in someone's home directory might be the only ones
left still using old version X of some module).

Certainly the lib directory layout would have to change.  How do you
resolve the current lib/Foo.pm and lib/Foo/Bar.pm into versioned
directories?  lib/Foo/01/Foo.pm and lib/Foo/01/Foo/Bar.pm?

I'm not saying it can't be done, but it is a really big thing.  Some
people would probably argue that it's too late in the game for p5 to
do such a thing, and punt to p6 (which may or may not have similar
issues and may or may not already have solutions for this, I haven't
looked).

Even if it isn't [too late for p5], I'm certainly not about to
champion such a revolution, when I could instead freeze a module for a
while until things get sorted out (where "sorted out" means YAML drops
Spiffy, or YAML::Lite appears and works fine for me, or some similar
outcome).

-- Brandon



More information about the Catalyst mailing list