[Modules] change sets vs. packages/modules (was a summary of joseph's work)

Joerg Beekmann jbeekmann at attglobal.net
Thu Sep 6 02:21:13 UTC 2001


I don't believe the concepts of change-sets and packages should be mapped. I believe the concepts are orthogonal. Change
sets collect the changes which transform a body of Smalltalk code from one state to another. Up to now that body of code
has been the entire image. Packages on the other hand define a body of code. One could imagine associating a change set
with a package. That change set would define the difference between the current state of the package and its original
state.

Joerg



-----Original Message-----
From: squeak-dev-admin at lists.squeakfoundation.org
[mailto:squeak-dev-admin at lists.squeakfoundation.org]On Behalf Of Paul
McDonough
Sent: September 5, 2001 12:14 PM
To: jpelrine at acm.org; Paul McDonough
Cc: danielv at netvision.net.il; squeak-dev at lists.squeakfoundation.org;
modsqueak at bluefish.se
Subject: Re: [Modules] a summary of joseph's work


One quick addendum ...
--- joseph pelrine <jpelrine at balcab.ch> wrote:
[...]
> Paul has all the stuff needed to transfer between
> ChangeSets and
> Packages. Having used both, I must say that the
> Package format is
> easier and cleaner to use - no unwanted surprises.
-- it should be noted that the ChangeSet->Package
mapping isn't 100% sure, and (I believe) can't be.
That's because a ChangeSet will declare things like
Globals and Pools as simple doIts, viz.
  Smalltalk at: #MyNewGlobal put: Dictionary new
or
  Smalltalk at: #MyNewPool put: Dictionary new

Unless someone can point out something I'm missing
about ChangeSets (I do miss things, kind of frequently
it seems ...), there's really no good way to tell the
difference and be sure of it.  So if the mapping thing
sees
  Smalltalk at: #FlibbertyGibbet put: 42
it makes a best guess that FlibbertyGibbet should be
an instance of GlobalVariableDefinition, but if it
sees
  Smalltalk at: #FlibbertyGibbet put: Dictionary new
it will guess PoolDefinition.

As for other doIts, they're handled as if they were
meant to be InitializerDefinitions, unless there's
another reasonable guess to be made, viz.
  FlibbertyGibbet at: #meaningOfLife put: 42
would create a PoolVariableDefinition if a pool called
FlibbertyGibbet already existed.

I'm not totally thrilled with this, but it was the
simplest way I could see to build a mostly-robust
bridge.  It does impose upon the user the
responsibility to have a look at the resulting Package
and verify its contents, if s/he tries this trick.

Paul

__________________________________________________
Do You Yahoo!?
Get email alerts & NEW webcam video instant messaging with Yahoo! Messenger
http://im.yahoo.com






More information about the Squeak-dev mailing list