[squeak-dev] Seaside, Squeak4.4, SqueakMap and Metacello,
or Why Software Configuration Management is Important (war: Re:
[Seaside] New catalog entry for Seaside 3.0.3)
Tobias Pape
Das.Linux at gmx.de
Wed Mar 6 15:26:11 UTC 2013
Am 06.03.2013 um 13:31 schrieb Frank Shearar <frank.shearar at gmail.com>:
> On 6 March 2013 10:39, Tobias Pape <Das.Linux at gmx.de> wrote:
>> Am 06.03.2013 um 11:09 schrieb Frank Shearar <frank.shearar at gmail.com>:
>>
>>> On 6 March 2013 09:30, Tobias Pape <Das.Linux at gmx.de> wrote:
>>>
>>> There's nothing stopping a package maintainer using Metacello. Perhaps
>>> when Chris & I nag people to make an SM catalog entry we should nag
>>> them to add a ConfigurationOf.
>>
>> Yes, I think this would be great.
>>
>>>
>>> (I used to have a ConfigurationOfControl; I changed it to an Installer
>>> script because the time it took to load Metacello and friends
>>> completely dwarfed the time it took to load Control. Control is tiny
>>> and has no dependencies outside a standard image.)
>>
>> Did you happen to have Metacello installed before loading the Config?
>> Other than that, I would like to see the config :)
>>
>>>
>>> Or do you mean that SM should expose more of what Metacello does, say
>>> by allowing a _user_ (as opposed to my previous
>>> multiple-special-versions) to say "I want Seaside 3.0.3, and I see it
>>> has multiple profiles; I'd like the release one please"?
>>
>> Kind of like that. I could expose the versions and groups.
>> There is even the possibility to collect the #stable, #development and
>> #bleedingEdge markings.
>>
>>>
>>>
>>> You (the package maintainer, not necessarily you, Tobias) could always
>>> have multiple releases - (4.4 development), (4.4 release), etc. - for
>>> a package. Each of these would have a load script calling
>>> ConfigurationOfFoo
>>
>> Yes this would be possible.
>> I have two major problems with such an approach:
>>
>> 1) It is still imperative and you have to manually synchronize the
>> SqueakMap releases with the Metacello configurations. Say,
>> Seaside in 3.0.3 with all its glory is on SqueakMap as about 61 releases.
>> (why so much? see 2) ) When you want to have a 3.0.4 release you have
>> to make 12 new release for 3.0.4. Really?
>
> Well, leaving aside Seaside, which is a very complicated example,
> "imperative" seems a bit of a misnomer. Let's say I reverse my
> decision and use a ConfigurationOf in my Control load script. There's
> no difference between
>
> Installer squeakmap
> update;
> install: 'Control (head)'
>
> and
>
> Installer ss3
> project: 'Control';
> install: 'ConfigurationOfControl'.
>
> (Smalltalk at: #ConfigurationOfControl) loadDevelopment
Well, undoubtedly, the invocation of the installation is an
“imperative” thing whenever code is involved :)
But the script behind 'Control (head)' is imperative
while the specification in ConfigurationOfControl is
declarative.
>
> There is a crucial difference in the general sense, which is that a
> ConfigurationOf allows you to track dependencies, including transitive
> ones. That is a massive win, and swamps the relatively minor issues I
> have with Metacello (like hard-coding where to get one's mcz files).
At a certain point you have to ay where the code is to be found :)
In your install script, it is also hardcoded:
Installer ss3
project: 'Control';
addPackage: 'Control-fbs.19';
addPackage: 'ControlTests-fbs.15';
install.
In Metacello, you could specify multiple (possibly backup) repositories.
But other than that, I agree with you :)
best
-tobias
More information about the Squeak-dev
mailing list
|