in reply to
Re: Re: Re: Apocalypse 12
in thread Apocalypse 12
4. The proposal that we have multiple versions of modules loaded at the
same time scares me. I cannot help but think that it is an inherently
fragile thing to attempt, particularly if someone does anything
dynamic. Problems comes in many flavours, and I'm not sure which bothers
me most. Here is a sample.
The current library mess is just as fragile in other ways. The whole
point of this is to reduce that fragility without inducing additional
fragility, and I believe we can.
* How can the feature help if developers have not specified versions
for dependencies?
If nobody ever specifies a version requirement, we're no worse off
than we are now.
* How do you handle versioning of proxied modules?
By making sure the interface can be as specific or generic as needed,
I suspect. Allowing multiple coexisting versions (where possible)
only makes this less fragile in my estimation.
* When will bugs go away?
There are a lot of folks who prefer known bugs to unknown bugs.
You should know--I particularly had the financial market folks in mind
here, having been informed that they like to lock down the versions
of *everything* forever. The Perl 6 approach lets them lock down
two different versions of the same thing where those versions don't
collide dynamically.
* What code am I REALLY running?
Shouldn't be a problem within the debugger, which will know which
version you're in. If you're poking around the Perl library, I would
hope that different versions of the same thing would be stored close
enough together that you can at least see that you have a choice.
* Where's my data?
Yes, this is a known issue. The basic question is how to mark the modules
that can or can't share resources with other versions. And what should
be the default...
* What about C libraries?
Another known issue, or the same one. Oddly, this shouldn't be a
problem with .NET, which is taking the same tack as Perl 6 here,
I believe.
* Feeling bloated?
Again, that's the external "can't share" problem. Part of the
metainfo of a module has to be whether it can coexist with other
versions of itself. A database handle is obviously something that
can't be shared easily.
When I first heard about the idea of trying to support having multiple
versions of software on your system, I thought that it was a fundamentally
broken idea. No, I don't want the added complexity when I think that it
will fail, and complicate my life in the process. That opinion hasn't
improved with time...
I think it will solve a real problem for the people who need it solved,
and stay out of the way of other people. Especially if we don't
botch it.