Monticello dependency handling

Lex Spoon lex at cc.gatech.edu
Sun Feb 15 16:19:06 UTC 2004


I would like to toss out that, even though Linux guys often *can*
reference particular versions of a Linux package, they rarely do.  In
normal development, including all of three phases I will describe below,
developers universally grab the newest version of a package that is
available.

That does not mean that sometimes you want to use an older stable
version, and sometimes you want a new one.  But they accomplish this
with a different mechanism.  Instead of recording the last package they
were satisfied with, they specify what sequence of packages they want to
pull from.  They can pull from unstable streams, from stable streams, or
occasionally from "freeze" streams.  Then, within the chosen stream(s),
they always grab the newest version.

This idea that packages come as part of distributions is widely
overlooked in the Linux crowd, and I am seeing a tinge of that mistake
in the discussions on Squeak-L.  We only have one real "distribution",
after all, which is SqueakMap, and that makes it easy for us to overlook
the fact that packages only make sense in the context of another group
of packages.  In the Linux world, RedHat's "apache" package and Debian's
"apache" package are not necessarily compatible; the might name some
programs differently or use some different directories.  In the Squeak
world, StableSqueak's "Comanche" package may have subtle but
incompatible differences from WildAndWoolySqueak's "Comanche" package. 
You can't prevent this; if you try, you will create a mountain of
specification work and then someone will start releasing versions from
an ftp site -- de facto creating a new distribution.

Once you make this mental leap that packages come in distributions, you
then see that linking to particular versions of packages is not
necessary nor obviously useful.  If you are working in a development
distribution stream, then there are lots of bugs and you expect that
upgrading will fix more of them than it causes.  If you are in a release
stream, then there is only one version of each package and thus talking
about specific versions at all is a waste of time.  If you are in a
"freeze" stream, which is a stream that is working towards a release,
then you always grab the newest versions because you want to help the
cause and squash some bugs.

In summary, remember that packages come in groups, and remember that, in
the end, we are likely to want unversioned dependencies.  I don't know
whether Monticello is the place to put them, but somewhere there should
be a way to say "Scamper depends-on URL" and leave it at that.


-Lex



More information about the Squeak-dev mailing list