[Pharo-project] [Metacello] Best strategy for ConfigurationOfPharo using #stable

Mariano Martinez Peck marianopeck at gmail.com
Mon May 2 00:27:00 CEST 2011

> Mariano,
> My rule of thumb for a literal version spec is that you should use the
> #stable symbolic version if the project is loosely coupled to your project
> and a specific version otherwise. OmniBrowser tends to be loosely coupled as
> you are interested in getting any old version of OmniBrowser as long as it
> functions on the platform.
> The rule of thumb for a baseline version spec is to use #stable for all
> projects (as long as the #stable version is defined), even "tightly coupled"
> projects. When the baseline version is loaded, you normally don't want to
> load the "latest code" or all of the projects that you depend upon.
> The #bleedingEdge symbolic version should be used only when the referenced
> project is part of your project family.
> When I load the baseline version for Seaside30, I want to load the
> #bleedingEdge versions of Grease, Kom, and Swazoo, because they are part of
> the project family. I absolutely don't want to load the latest OmniBrowser
> code, because who knows what you'd get...
> So for the ConfigurationOfPharo, if you followed my rule of thumb, you
> would create a baseline version and use the #stable version for all of the
> projects in the baseline. In the literal version you would use the explicit
> version, so that you'd have an explicit repeatable specification for a set
> of projects that were known to work together.

Thanks Dale for the answer....Now, putting #stable in the versionString of a
baseline make sense ONLY because the default is not #stable, isn't it ?  I
mean, if ConfigurationOfPharo >> baseline13:
I am doing:

project: 'OB Dev'
                        [ spec
                                className: 'ConfigurationOfOmniBrowser';
                                loads: #('Dev');
                                file: 'ConfigurationOfOmniBrowser';
                                repository: '
http://www.squeaksource.com/MetacelloRepository' ];

as you can see, in any baseline of ConfigurationOfPharo I set a version.
Hence, if someone does ConfigurationOfPharo project version: '1.3-baseline',
then Metacello will load the DEFAULT for 'ConfigurationOfOmniBrowser' which
I guess it is not #stable becuase otherwise what you told me doesn't have
sense. So, I guess it is #bleedingEdge?  I think I have already asked
this...sorry I couldn't find it in my gmail...

> Developers interested in getting the "latest released version for all
> projects" in ConfigurationOfPharo would load the baseline version and then
> get the #stable version of all the projects for their platform ... each of
> the projects was know to work by itself in an image (that's what the #stable
> designation means), but the unknown is whether all of the projects work
> together in image ... When you know that, you create a literal version of
> ConfigurationOfPharo to commemorate that set of versions....
> Without looking at the list of projects, it might still make sense to use
> #stable in the literal version, but it would be the exception to the rule
> ...
> Does this make sense to you?

Totally :)

> Dale

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gforge.inria.fr/pipermail/pharo-project/attachments/20110502/5a6f005f/attachment.htm>

More information about the Pharo-project mailing list