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

David T. Lewis lewis at mail.msen.com
Sat Dec 12 20:54:26 UTC 2009

On Fri, Dec 11, 2009 at 11:43:21PM -0800, Andreas Raab wrote:
> Miguel Cob? wrote:
> >Maybe more attention to the real uses of the technology
> >outside the "core" squeak is needed here.
> >Since some months ago, Dale Henrichs has made available Metacello
> >that doesn't tries to "fix" monticello, but to build on top of the
> >limitations of it by treating monticello as what does better:
> >to load a single version of a given package in the image.
> >Then it adds the apropriate "package" dependencies in
> >a higher level. No need to feature creep monticello but use
> >it as a sound base for solving the issues you mentioned.
> I do not understand which problem domain Metacello is addressing and 
> how. If you have more information, this would be very welcome.

Project home with good summary description:
Another good reference:
Much discussion here:

I have not personally used it, but Metacello seems to be well
thought out, with documented project objectives and a competent and
considerate developer. It is MIT licensed, and support for Squeak
is an explicit design objective. I think this is worth serious

>From the project page:

Metacello is a package management system for Monticello that is
consistent with the important features of Monticello:

 * Declarative modeling. A Metacello project has named versions
   consisting of lists of explicit Monticello package versions.
   Dependencies are explicitly expressed in terms of named versions
   of required projects. A required project is a reference to
   another Metacello project.
 * Distributed repositories. Metacello project metadata is represented
   as instance methods in a class therefore the Metacello project
   metadata is stored in a Monticello package. As a result, it is
   easy for distributed groups of developers to collaborate on ad hoc
 * Optimistic development. With Monticello-based packages, concurrent
   updates to the project metadata can be easily managed. Parallel
   versions of the metadata can be merged just like parallel versions
   of the code base itself. 

Additionally, the following three points are important considerations
for Metacello:

 * Cross platform operation. Metacello must run on all platforms that
   support Monticello: currently Squeak, Pharo and GLASS.
 * Conditional Monticello package loading. For projects that are
   expected to run on multiple platforms, it is essential that
   platform-specific Monticello packages can be conditionally loaded. 

More information about the Squeak-dev mailing list