[racket-dev] Package compatibility
It seems to me our new package system runs into trouble if two people write
packages that use the same connection name. Let's say we have two
packages, alice-tree and bob-tree, both of which provide the collection
data/red-black-tree, but both provide different interfaces (perhaps similar
functionality with different naming conventions). It seems to me this is
not that unlikely to happen, but once it does, those two packages are
completely incompatible. They can never meaningfully be installed on the
same system, and if they are, the behavior of any code depending on either
becomes undefined.
Have I got this right, or have I missed some detail? If this is right, how
concerned are we about this feature? The fact that packages are all
spliced into a single flat collection namespace of course leads to the
possibility of clashes like this, which can cause not just incompatibility
between alice-tree and bob-tree, but a complete schism wherein all code
depending on alice-tree at any level of indirection becomes completely
disjoint from all code depending on bob-tree at any level of indirection.
I've seen this kind of library incompatibility before, in the ACL2 "books",
and I wrote a dissertation to try to solve it. I hope we're not repeating
their mistake, but it seems like we have yet another flat namespace with no
resolution mechanism.
Carl Eastlund
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/dev/archive/attachments/20130707/2517de00/attachment.html>