[racket-dev] Planet 2 Beta Release
On Thu, Nov 8, 2012 at 1:01 PM, Sam Tobin-Hochstadt <samth at ccs.neu.edu> wrote:
> I have one larger design issue, which I want to write up in a separate mail.
The larger issue is that we should allow packages to have their own
versions of other packages/collections/etc, specified in their
metadata file. This would be less ambitious than what Planet1 does,
where a single running Racket program can have two copies of the same
planet package, but would let the programmer handle situations where
conflicts exist.
Here's an example: package A depends on package B. I want to use
package A in my program P, but I need it to use a fixed version of
package B. However, I don't want to make a global change to the state
of my planet cache. So in my `package.rktd` file for P, I specify
that B should be obtained from my fork of B on GitHub. This change is
self-contained, and doesn't require changes to any of the rest of the
system.
This is how the node.js package manager NPM works. It implies that
most node.js programs have a full copy of their dependencies in their
installation directory -- they in general avoid global installation.
I'm not sure we should go that far, but I think making it possible is
very useful. I know people who've had exactly the situation in my
example, which they worked around using this capability of NPM.
I'm not sure this can be done purely by Planet2, it may require more
capabilities from Racket, probably in changing how the links data is
specified.
--
sam th
samth at ccs.neu.edu