[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
* 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