Four minutes ago, Robby Findler wrote: > I think Eli is saying that it would create a "bad" dependency where
Yes, the "redundant" was a bad translation of something like "a dependency we don't really need". > "badness" isn't something that is easy to say precisely what it is, > but the rough idea is that there is a hierarchy of modules (ie a > grouping of modules into levels of a tree) and dependencies should > go one direction. Making drracket require rackunit would cross this > hierarchy with a link in the wrong direction (I think). Well, I think that rackunit doesn't depend on drr[*] -- if that was the case then the dependency that John wanted to add would have made rackunit and drr interdependent, essentially making them part of a single package -- and that would be bad since they're conceptually not related. So it's really best to avoid any inter-package dependencies unless they make sense. [*] As an example, rackunit might become dependent on drr in the future, if it becomes a drr plugin. The cost of that is obvious: you need drr to use rackunit. A possible solution to that, if it becomes necessary, is to have another package for the plugin, one that depends on rackunit and drr. The fact that this is not easy to describe precisely is not new -- they're the same issues you face when you decide how to split your code into modules, except lifted up a level. And BTW, one thing that we agreed on is to forbid packages from having dependency cycles -- which will likely help package organization in a similar way it helps with modules. > In general, we're not careful enough with the way we've organized > the tree so things are a bit of a rat's nest. Part of the problem is > that we don't have good tools to help us clean things up, but the > larger problem is that we've just been growing for N years without > spending much time cleaning up this particular aspect of things. ... and the fact that there is no organized package system to enforce tidiness. There's the distribution script, but that enforces very few boundaries, and they're at a very coarse level. -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life! _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev