[racket-dev] Submodules & dependencies

From: Eli Barzilay (eli at barzilay.org)
Date: Sun Mar 11 17:13:24 EDT 2012

Just now, Jay McCarthy wrote:
> I agree with your point #1 heartily.
> I don't follow point #2. Do you mean that currently by having two
> files the tests can depend on things that the code does not (for
> purposes of distribution, etc) and having those tests embedded in
> the files increases the cross-collection dependencies as well as
> increasing compilation time? I suppose that is true, but I don't
> know how severe it is and I value having the tests.

Say that the `foo' collection author sees that and thinks "ooh, a
useful feature", then folds the tests into the main code -- so
"foo/bar.rkt" has some library code as well as a `test' submodule that
uses `tests/eli-tester'.  The collection becomes undistributable
because `tests/*' is not distributed.  Variations: using `rackunit'
makes all of `foo' depend on rackunit, a dependency that is needed
only for tests, putting the scribble docs in the same file leads to a
dependency on scribble, etc.

[I guess that it could be argued that all of these dependencies are
justified, by my own argument is a proxy argument: linux distributions
usually have different sub-packages for docs and for developement
files (= tests), and I think that enough thought has been spent there
on deciding that this is a useful way to divide things.  On one hand,
I choose to shoot for a distro-friendly packaging, which is why I take
this argument as valid without questioning it.  On the other hand, as
someone who appreciates such division when I install other packages, I
*definitely* see the value in having it -- I imagine some random
application that is written in ruby/python/whatever, and I'd hesitate
to install it if it pulls in some IDE package, a documentation system,
and test files.]

          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

Posted on the dev mailing list.