[squeak-dev] Re: Packages, Packages, Packages

Colin Putney cputney at wiresong.ca
Sun Dec 13 05:44:27 UTC 2009

On 2009-12-12, at 9:03 PM, Andreas Raab wrote:

> Colin Putney wrote:
>> On 2009-12-12, at 3:29 PM, Andreas Raab wrote:
>>> The biggest issue with Metacello I'm seeing so far is that it muddles the installation script with dependency management and metadata. Very troublesome because it means you can't even *look* at a Metacello configuration from Squeak 3.8 or earlier. Extremely disturbing considering that in order to do dependency analysis one must run untrusted code to obtain the dependencies (so forget about server-side dependency analysis). And unfortunate because it means that Metacello has hardwired assumptions about its interactions with the rest of the environment (Gofer, OB etc) making it implausible to replace its underpinnings with something much simpler like Installer. To be honest, Metacello has been somewhat of a disappointment so far.
>> This was my reaction to Metacello as well. Nevertheless, I've played with using Metacello to specify configurations of OmniBrowser 2.0 and Monticello 2.1. I find that the model Metacello uses is quite nice - I was able to capture all the details of the relationships between the dozens of packages involved, and use that data to do some fairly nifty things with Mason. It was incredibly frustrating to get Mason to do the dependency analysis and give me back the results - essentially I had to get it to do a fake load and then examine what would have been loaded. 
> Would you mind pointing me to the configurations of OB 2.0 and MC 2.1? It would be interesting to look at an example in context.

The OmniBrowser configuration is here: 


It's a little out of date with respect to Metacello; it hasn't been updated to use the latest version of the specification API. 

The Monticello 2.1 configuration is here:


This one is up-to-date. I use it with Mason to run the test suites in isolation. I have a Mason product that finds all the test packages, and loads each one into a virgin trunk image along with all its dependencies. Then it runs the tests and writes the results out to a file. If there are hidden or unspecified dependencies, the tests will fail horribly. :-)


More information about the Squeak-dev mailing list