[Pharo-project] Cmd-t in OB?

Dale Henrichs dhenrich at vmware.com
Fri Oct 8 13:07:25 EDT 2010


On 10/08/2010 08:25 AM, Lukas Renggli wrote:
> Yeah, I agree, there is definitely a need for Metacello.
>
> I suggest to make it easier to use, faster and more lightweight.
> Currently it is more the opposite.
>
> I propose something along Gofer, but for Metacello (I believe somebody
> already did something like this?):
>
> 1. loading the latest stable version must be dead simple
>
>      Metacello new project: 'OB'; loadStable
>
> 2. loading the latest development version must be dead simple
>
>      Metacello new project: 'OB'; loadDevelopment
>
> 3. specifying what groups to load must be dead simple
>
>      Metacello new project: 'Seaside'; group: 'Tests'; group: 'Javascript'; load
>
> 4. loading should not require to additional infrastructure to be
> loaded into a Pharo image (I imagine a server that has all
> configurations preloaded and that returns Gofer scripts that can be
> executed in the target image)

Lukas,

We are headed in exactly this direction. points 1,2 and 3 are directly 
covered by a combination of the GoferProjectLoader and new features in 
Metacello. So your expressions would be recast as something like:

   Gofer project loadStable: 'OB'.
   Gofer project loadDevelopment: 'OB'.
   Gofer project loadStable: 'OB' group: #( 'Tests' 'Javascript').

In addition to the notion of #stable and #development we have talked of 
the notion of #bleedingEdge. The #bleedingEdge loads the latest version 
of every mcz file...which may be what you were thinking about when you 
said #loadDevelopment ... Doru's discussion of a 'default' version and 
the #bleedingEdge are the same idea. So then we'd add the following 
expression:

   Gofer project loadBleedingEdge: 'OB'.


As for you point 4, I think that that is a future item. I like the idea, 
but I think that it is not that simple...

One of the more subtle things that goes on when loading Metacello 
configurations is that the current state of the image (i.e., loaded mcz 
files) is used to calculate what should be loaded ... if a required 
project is already loaded and especially if it is already at a later 
version, that project isn't loaded. If the project is at an earlier 
version then it is upgraded to conform to required version. On top of 
this, when a project is upgraded, all of the loaded mcz files are 
upgraded not just those that are specifically requested...

With that said, it should be possible to ship a spec of what is loaded 
in the current image to a server where the calculation is made and a 
load directive (basically a Gofer script) could be returned, but there 
are more moving parts in this than I want to tackle at the moment...

Unfortunately, a good bit of my time is being consumed at the moment by 
a GemStone project, but I fully expect to deliver on the above within 
the next month or so with an early release available within a couple of 
weeks as we are still hammering out details ...

Dale




More information about the Pharo-dev mailing list