[V3dot10] loading Monticello packages via Package Universes

Lex Spoon lex at lexspoon.org
Fri Jul 27 09:55:28 UTC 2007

Keith Hodges <keith_hodges at yahoo.co.uk> writes:
> This also provides a work-around so that Universes can load monticello
> packages with dependencies.

No workaround is needed.  Monticello is not only supported by package
universes, but IMHO is the preeminant package format in the Squeak
world.  This means there must be a solution for Monticello
dependencies, and there is one.  My own "Chuck" package is divided
into 31 Monticello packages.  I posted it to the 3.7 stable universe
without problem.

The posting approach I used was to divide Chuck into two PU packages:
"Chuck" and "Chuck Repository".  "Chuck Repository" was a tiny file
out that registered the Chuck's SqueakSource repository.  "Chuck"
would be loaded after "Chuck Repository", thanks to dependencies, and
thus it could hold a URL to the top-level mcz file.  The dependencies
in that mcz file could then be resolved by Monticello, because now
Monticello knows about the Chuck repository.

If we were to work on making this go more smoothly, here is an idea
that works better with how Package Universes is already arranged.
There is a UInstaller hierarcy used to install packages, and currently
when you install a package you specify just the filename of the
downloaded file.  It would also be possible to supply the UInstaller
with the URL where the file came from.  Then, the Monticello loader
could do something smarter about dependencies.

All this said, I do not actually like Monticello dependencies any
longer.  When I was developing Chuck, I frequently found myself saving
packages just to update the dependency version numbers.  When I
occasionally messed it up, I would load old versions of things by
accident and not realize it.  I now believe we should use
larger-granularity Monticello packages, thus simplifying the
dependencies, and we should resolve the remaining dependencies using a
separate tool such as Package Universes.

If I ever pick up maintenance of Chuck again, one of the first things
I will do is merge those 31 packages into one.


More information about the V3dot10 mailing list