howdy, as a remaining extended 0.42-5 user, I'm just now realizing how
vanilla works when loading externals with the same name as a vanilla object
or some other preloaded library - I have to say it was a surprise to see
that it's different that how extended works, and that it doesn't seem like
a good idea...
Anyway, you see, I got here zexy 2.2.6 (as a library) and cyclone
(individual binaries but also has the nettles library) on vanilla 0.46-7 -
both external libraries have abs~ (which is also a vanilla object) or an
object like [>~] (part of nettles in cyclone). Both zexy and nettles are
loaded via startup.
So funny stuff can happen... like, vanilla's abs~ is overwritten by zexy's
and renamed to abs~_aliased, but if I call cyclone's abs~ specifying its
folder as [cyclone/abs~], it overwrites zexy's abs~ and it is never
possible to call zexy's abs~ ever again...
Ok, in the case of abs~ I think it should be removed from both cyclone and
zexy, because it's not only that they share the same name between each
other and a vanilla object, but they all do the same thing as the internal
object... so it's completely redundanct - but this is another issue. One
way or another, it helps illustrating my point.
So, moving on to the case of [>~], we see from previous discussions that
they need to be loaded as libraries for sanity's sake. But then I can never
specify which [>~] I want - if both are via startup or declare, I can never
be sure or control which one I'm specifying as either >~ or >~_aliased...
The point is: perhaps there could be a better way to force vanilla to load
an internal object?
Or if not a vanilla object, perhaps that could be a way to specify and
object inside one external library or another?
The way things are, it's all just really out of control and I can think of
many scenarios where patches need to be edited when loaded because of
what's going on in that particular machine, such as what patch had been
opened before, etc... I know this probably has been discussed for ages and
many people had already thought about it... I also know I have NO clue on
the technical details and what has already been done, but I would like to
ask and suggest things.
What would make sense to me is that vanilla objects would always prevail
and be called with priority. This is how things were in Extended (and now
pd-l2ork I guess) - externals with the same name as a vanilla objects could
only be called only if explicitly specified.
In the case of cyclone's [line~] it's easy to specify if you wan cyclone's
version or not by specifying the folder [cyclone/line~]
But the problem is when you're using a library, because you seemingly can't
specify a given loaded external library when instantiating an object...
such as [zexy/<~] or [nettles/<~] - and yes, they are different, by the
way, before anyones asks ;)
So, in short, all could be sorted and taken care if:
1- vanilla objects are never overwritten
2- external objects can be specified by a path even if they are loaded as a
library with declare or via the startup (ex: zexy/<~ or nettles/<~)
cheers