On 10/20/05, Nate Wiger <[EMAIL PROTECTED]> wrote:
> Larry Wall wrote:
> > I think there can be some kind of community metainformation that sets
> > defaults appropriately.  And if not, the site/project can certainly
> > establish defaults.  On the other hand, a lot of projects do simply
> > want to specify the version and author explicitly eveyr time,
> > and they'd rather tweak it by hand (or by script) if they want to
> > change it, since then at least they know when they need to rerun the
> > regression tests.
> I think it's a laudable idea in theory, but not necessarily application.
> I've done quite alot of Perl programming, and I've never run into this
> personally. Who has? (Really, I'm being serious.) Are there really
> multiple modules sharing interchangeable interfaces? Or instances where
> we want to allow the same name to mean different concepts depending on
> the author?

Please see http://www.perlmonks.org/?node_id=501496 for more on the
issue of names. My Tree module and Schwern's Tree distro have almost
zero interface compatibility. They both represent N-ary trees, except
mine exposes the tree interface and Schwern's is just a OO interface
for a hash implemented as a tree. My module is descended from
Tree::Simple, except ::Simple almost never is.

The same thing goes for my version of Tree::Binary and Stevan
Little's. Two completely different interfaces, but here we're solving
the same problem. The major difference between mine and his is that
mine inherits from my Tree whereas his is an independent module. This
means that adding transparent persistence (which is what my rewrite
does) to his module is a bit of a bear.

Hence, you might want to use RKINYON's Tree::Binary over STEVAN's
Tree::Binary. Or, what should I call mine? (This is a real question -
if you have any suggestions, please let me know!)

> There's no logical difference between:
>     use DBI:TIMB
>     use DBI:JEFFSTER
> And:
>     use TIMB::DBI
>     use JEFFSTER::DBI

No, this isn't any good, either. I took over DFERRANCE's PDF::Template
implementation. He has nothing to do with it anymore. So,
DFERRANCE::PDF::Template now becomes RKINYON::PDF::Template? Or, does
RKINYON now maintain something in the DFERRANCE namespace? What on
earth does the name DFERRANCE provide, except for an additional layer
of confusion.

> Anyways, I don't like the idea of people being able to upload
> identically named modules to CPAN. I think that's a very bad idea. See
> Rob Kinyon's message.

I think you misinterpreted my message. My point is that uploading
things with the same name is a good plan, but it has to be thought
through, especially given the points I raised. But, I very much agree
that it should happen.

I'd like to propose a slight shift in emphasis. I think that more
focus needs to be made in project-wide or namespace-wide
disambiguation and module aliasing. If I was able to say in my CP6AN
distro that I depend on DBI:2.05-:cpan-TIMB and that I'm going to call
it DBI, then all the files in my distro should automatically have that
alias built in. This means that anyone wanting to use DBI:cpan-JRANDOM
in their code can alias it as DBI on a project-wide basis, yet still
be able to use my distro and everything be ok.

The important thing here, I think, is that while aliasing package
names is a lexical action, there can be a larger lexical scope. It may
be that we need the concept of a "Project", along with Module,
Package, Class, and Role. This way, the Project states "Whenever you
load a file that matches the criteria below, apply the following
lexical _stuff_."


Reply via email to