[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
Fri Mar 22 07:21:26 UTC 2013


Am 21.03.2013 um 17:33 schrieb Chris Muller <asqueaker at gmail.com>:

> Hi Tobias!
> 
>>> 
>>> "Declarative" is not a requirement.  The requirement is simply for
>>> fixed-configurations to _work_ in legacy releases of Squeak (and for
>>> head-configurations to support collaboration).  The SM entry does load
>>> explicit versions of required packages and projects, so I see no
>>> difference here in terms of a fixed-config consumption.
>> 
>> Right. I am afraid I have to agree with this point. I, however, think
>> in terms of maintainability, a declarative way of specifying
>> Software Configurations (what we are essentially talking about, no?)
>> clearly wins.
> 
> By declarative, I assume you mean a list of specific versions of
> specific packages to run in a specific release of Squeak (a.k.a., a
> "fixed-configuration").  I don't know how to be anymore declarative
> than that.

Pretty much, yes.

> 
> My main requirement is for any newbie, or an archaeologist from the
> future, to be able to figure out how to install a working piece of
> software without having to ask questions on the mailing list.
> 

My main requirement is to allow for the complexity of 
Software Configuration Management and to not make it and its maintenance
more complex than necessary. Let's go for the overlapping part :)

> Do Metacello configurations declare which specific release of Squeak
> that configuration is for?  […answered by Dale, I hope]
 
> 
>>> 
>>> Sure, the SM script could easily be changed to also fail, but that
>>> does not allow two independent projects that both require Grease to be
>>> easily consumed.
>> 
>> What do you mean by Consumed?
> 
> Installing and using a piece of software.
Ok. But you won't detect the case of the two projects requiring 
conflicting versions of Grease, either. :/


> 
>>> Incidentally, one problem I have with Metacello is its opaqueness -- I
>>> can't easily look at a config and know what I'm going to get -- the
>>> word "Development" is not meaningful to me, I want to know what
>>> packages will be loaded.
>> 
>> It depends on perspective. I find a "description" of what will be loaded
>> more transparent than a code snippet that can do about just anything.
> 
> So, requirement #13 at:
> 
>  http://wiki.squeak.org/squeak/6183
> 
[footnote]
> is:
> 
>   "13.  Must be able to browse code before installing it, as a
> security measure."
> 
> So it is not just about "knowing what I'm going to get" but also being
> able to *easily* review and even debug the installation process.  I
> suppose this would be possible with Metacello configs too, just not as
> easy as a straight script which spells out the exact versions of every
> package you'll get.

The metacello versions do just that; please see, for example,
version 3.0-rc.2 of SqueakSource which I put at the end of that mail.
Every version is spelled out.

> 
> 
>> Right. Dale intended the development model for Metacello Versions
>> quite open. The MetacelloRepository's out there (I think there are
>> 3–4) are all world-writable. Not every developer is paying attention
>> to the quasi-rule that a released version of a Configuration
>> should not be touched. This had me bothering quite a few times, and this
>> is also the case why Seaside 3.0.7 isn't currently installing in Squeak 4.4
>> via the Configuration.
> 
> Ok, Seaside is classic, signature Squeak software so I hope we'll have
> 3.0.7 working again.

I am on that path. :)

> 
>>> This is unacceptable because it is too high a barrier for newbies.
>>> The "Consume" requirement demands it should just-work(tm) with
>>> one-click.
>> 
>> Sorry, I cannot follow. What is unacceptable to you here?
> 
> That requirement 3 is not met.
> 
>  "3. Installation must occur with one-click, including all
> prerequisite packages."
> 
> Because there were two pre-req packages that needed to be manually
> downloaded first.  As you said here:
> 
> http://forum.world.st/Making-seaside-load-in-Squeak-again-td4672155.html#a4672205
> 
> No newbie coming into the community to check out Seaside is going to
> know this, it'll just be "broken" for him.

Yes, but that email was not intended for newbies or even as an announcement
that software would be released.
  That email just said that I got an _unreleased_ version of Seaside
to work on Squeak and that the Interested Reader can try that out.

In the default—release—case, Metacello is one-click in the sense of 
requirement 3. That is one of the cornerstones of Metacello, actually.

What I presented was development work, just a progress report.

>> Since the last Squeak/Seaside one-click (that I built in
>> frustration, and wasn't fully functional, either, due
>> to a buggy OmniBrowser) both Seaside and Squeak evolved.
>> How can we expect it to just work if nobody has a look at it?
>> Am I missing something fundamental here?
> 
> Nope.  The only things we can expect to work are fixed-configurations
> that someone had put attention to in the past.  Whenever new version
> of Seaside or Squeak comes out, same attention must be paid to create
> another fixed-config for that version that will have longevity.

I like that we aregee. 

> 
>>> (I wrote:)
>> 
>> We need a person that constantly monitors the development of both?
> 
> If there is sufficient interest in Seaside going forward, someone will
> do it.  If not, they won't, but at least we will still always have
> fixed-configurations working in older Squeak's.  If sufficient
> interest materializes in teh future, those fixed-configs are a good
> place to start to make a newer working version.

Exactly.
And following up http://forum.world.st/Seaside-on-Squeak-td4677482.html
I will go on and make a 3.0.7.2 (which will be fixed forever when released)
of seaside that works with Squeak 4.4.

Best
	-Tobias

[footnote]
> http://wiki.squeak.org/squeak/6183
can we have easy-to-read urls for the swiki, please?

[Appendix]
version30rc2: spec
	<version: '3.0-rc.2' imports: #( '3.0-rc.1.1-baseline')>

	spec for: #'common' do: [
		spec blessing: #'development'.
		spec description: 'open 3.0-rc.2 for development
3.0-rc.2 (dkh.77):
- pick up latest from tobias
- edits to allow image save before creating an installation'.
		spec author: 'dkh'.
		spec timestamp: '12/23/2011 16:13'.
		spec 
			project: 'Seaside-REST' with: '0.22';
			project: 'Seaside Extras' with: '3.0.6.2';
			project: 'Magritte2 Seaside' with: '2.0.6.2';
			project: 'Gravatar' with: '1.0'.
		spec 
			package: 'SqueakSource-Core' with: 'SqueakSource-Core-dkh.78';
			package: 'SqueakSource-Monticello-Core' with: 'SqueakSource-Monticello-Core-topa.5';
			package: 'SqueakSource-Issues' with: 'SqueakSource-Issues-topa.10';
			package: 'SqueakSource-Statistics' with: 'SqueakSource-Statistics-dkh.11';
			package: 'SqueakSource-Storage-Core' with: 'SqueakSource-Storage-Core-topa.6';
			package: 'SqueakSource-Storage-Dictionary' with: 'SqueakSource-Storage-Dictionary-topa.10';
			package: 'SqueakSource-Storage-FileSystem' with: 'SqueakSource-Storage-FileSystem-topa.10';
			package: 'SqueakSource-Subscription-Core' with: 'SqueakSource-Subscription-Core-topa.9';
			package: 'SqueakSource-Subscription-Email' with: 'SqueakSource-Subscription-Email-topa.11';
			package: 'SqueakSource-Tests' with: 'SqueakSource-Tests-topa.14';
			package: 'SqueakSource-Gravatar' with: 'SqueakSource-Gravatar-topa.4';
			package: 'TinyWiki' with: 'TinyWiki-lr.18'. ].

	spec for: #'squeakCommon' do: [
		spec project: 'SmaCC' with: '0.1'.
		spec 
			package: 'SqueakSource-SqueakPharo-Core' with: 'SqueakSource-SqueakPharo-Core-topa.5';
			package: 'SqueakSource-SqueakPharo-Monticello' with: 'SqueakSource-SqueakPharo-Monticello-topa.3';
			package: 'SqueakSource-SqueakPharo-Statistics' with: 'SqueakSource-SqueakPharo-Statistics-dkh.3';
			package: 'SqueakSource-SqueakPharo-Storage-Core' with: 'SqueakSource-SqueakPharo-Storage-Core-topa.4';
			package: 'SqueakSource-SqueakPharo-Subscription-Core' with: 'SqueakSource-SqueakPharo-Subscription-Core-dkh.6'. ].

	spec for: #'gemstone' do: [
		spec 
			project: 'Seaside Service Task' with: '3.0.6.2';
			project: 'GsCore' with: '0.245';
			project: 'Monticello' with: '0.241';
			project: 'SmaCC' with: '0.239.1'.
		spec 
			package: 'SqueakSource-GemStone-Core' with: 'SqueakSource-GemStone-Core-topa.10';
			package: 'SqueakSource-GemStone-Monticello' with: 'SqueakSource-GemStone-Monticello-topa.1';
			package: 'SqueakSource-GemStone-Storage-Core' with: 'SqueakSource-GemStone-Storage-Core-topa.6';
			package: 'SqueakSource-GemStone-Statistics' with: 'SqueakSource-GemStone-Statistics-dkh.6';
			package: 'SqueakSource-GemStone-Subscription-Core' with: 'SqueakSource-GemStone-Subscription-Core-topa.2';
			package: 'MonticelloConfigurations' with: 'MonticelloConfigurations.g-dkh.48'. ].





More information about the Squeak-dev mailing list