[plt-scheme] package management thoughts

From: Jacob Matthews (jacobm at cs.uchicago.edu)
Date: Mon Mar 10 22:31:03 EST 2003

On Sun, 9 Mar 2003, Eli Barzilay wrote:

> (Side question -- why is the "p" there?  It just sounds too much
> similar to cpan.  (I generally dislike the cXan names, they all sound
> too similar and one differentiating character is just too little...))

CSPAN was my first idea for a name. If anyone has a better name, let me

> ...can there be a general solution to that that will work in a way
> that doesn't discourage people from making more modules?  I don't
> think that there's a sensible way for that -- even if you take an idea
> world where people specify full contracts, you'll have to do some
> analysis for the actual functionality used to know when a new version
> is incompatible.  It's pretty common to find some higher level stable
> interface, and then some lower-level stuff that was exposed for some
> reason which is much less stable, or new functionality which you're
> not sure about.

I hadn't thought about this problem before. Thanks for bringing it up.

It seems there are a few different ways the system could handle this.
First, we could take it as evidence that contracts aren't a good match for
the compatiblity problem. Second, we could agree that some contracts are
useful and others are not, and allow library authors to specify some
portion of their interfaces and ignore those portions when we perform
checks (possibly along with warning users when they're upgrading a package
whose unstable interface is being used by another package or something
along those lines). Third, we could decide that your use of interfaces is
incompatible with an automatic-upgrade system and require that library
authors not have unstable interfaces if they want to make use of the
compatibility features of CSPAN.

Of those, the third option appeals to me the least and the second appeals
to me the most, but I'm worried that I'm just falling into trap of
throwing new features at every problem. It'd be better to make a system in
which some reasonable design pattern gave you this capacity for free.

Does anyone see a better solution?


Posted on the users mailing list.