Squeak Starter

Stephane Ducasse ducasse at iam.unibe.ch
Wed Oct 16 20:49:43 UTC 2002


Hi goran

Do not be mad (I know you can have some reason to be apparently I'm a 
trooooollllllll).
I just do not have the time to reply. I have to finish a complete 
lecture on OOP for Monday
and a kid at hospital (great birthday). What I just want to say is that 
if modules are
similar to changeset (i.e., contains method removal, addition, class 
changes),  I do not
see the point to have deltamodule and modules, we could only have 
modules = changeset + namespaces.
Having a clean module with no class extensions is cool but why this is 
different than a module with?

 >>>The whole point of the DeltaModule is that it contains all changes 
you
 >>> would like to do to *another* Module that is not yours in order to 
make
 >>>*your* Module happy. So think of it as a ChangeSet with the 
restriction
 >>> that it can only change *one* Module.
 >>> And then add the very important
 >>> aspect of reversability. A DeltaModule is activated and deactivated 
-
 >>> when it is activated its changes are applied and when it is 
deactivated
 >>> the changes are removed.

But the reversability is not based on the difference between 
deltaModules
and modules. You could have the same with modules (merging deltaModules 
and modules).
Reservibility is just there because of namespaces.


 >>> So again, what are the nice properties of this scheme?

 >>> 1. A Module is thus tremendously simple. It is just a bunch of 
classes.
 >>> No history, no additions/removals or anything - it is very much 
like a
 >>> category .st-fileout. It can't get simpler than that, and 
simplicity is
 >>> our friend.

 >>> 2. A Module can't possibly conflict with another Module since it is 
in
 >>> it's own namespace. This is a very important aspect. You can load 
all
 >>> and any Modules into the image without any worry whatsoever, after 
all
 >>> it's only classes and simply filing in classes never hurt anybody
 >>>(unless the class initialization does dumb things, but that is 
another
 >>> story).

This is important but just linked to the fact that you have namespaces.


 >>> 3. As we all know somewhere the "dirty business" must be taken care 
of,
 >>> otherwise all these Modules turn into isolated islands of no 
connection
 >>> at all and just sits there like dumb ducks. :-) And this is the job 
of
 >>> the DeltaModule. Think of it as a ChangeSet which can be reverted
 >>>(activated/deactivated) and that can only affect ONE Module. Since
 >>> DeltaModules carry all your changes in Modules that are not your own
 >>> they by definition contain the areas of your code that CAN conflict 
with
 >>> others.

 >>> So - the separation is very clear to me. When I write code 
everything I
 >>> write can be separated into two groups:
 >>> 1. My own classes.
 >>> 2. Changes in other peoples classes.

 >>> Voila! Modules and DeltaModules. Since I control my own classes I 
can
 >>> represent that code as a snapshot of the classes. But I don't 
control
 >>> other peoples code so those changes are best represented as 
*recorded
 >>> changes* to those classes.

What I want to say is that this is a code organization matter. You 
could do the same
with one kind of module. Put your code into your modules and change to 
the system
in other modules.

 >>>Ok, now if you do not like DeltaModules - what do you propose 
instead?

 >>> You can't just say - just put it in the Modules, because then you 
are
 >>> simply moving the problem into the currently nice, clean and simple
 >>> Modules. And you can't just say "use ChangeSets" because they are 
not
 >>> reversible and if I am not mistaken have other weird problems... The
 >>> DeltaModules are meant to BE the ChangeSets of the future.

But changeset are not reversible because we do not add them a namespace.
Imagine a changeset with a namespace, we could load it and unload it.
Now we could also add variable initialization because we will need that.
Then you can have class definition (including changes format), then you 
can have
your own clean modules and deltaModules but without the need to have 
this separation.



Anyway continue your work on SqueakMap I thikn that this is important.
I discussed with daniel at ESUG and he is right big bang changes do not 
work. So small
increments are the way to go. I like the things he did for the dynamic 
menus and RB.
He should also continue because this is important. If you can succeed 
to build a core of three or four
people working together and trusting each other this would be great.

Just for your information. We were really working hard to produce the 
simplest modules system we could,
since the modules discussion I have been reading everything that exist 
on modules, packages...

But for now I have the impression that we failed, Alex implemented 
several versions but our model has
intrinsic problems and we could not find what we were looking for:  
asystem that let me play in my
corner without impacting other but still been able to change other 
modules.  I wrote a paper that I throw away.
We asked advices to some guys and were looking at SmallScript, old alen 
Wirfs-Brocks papers, other papers
around. One of my dream would be to have a simple module system for 
language with extensions.
but this is hard. You can discuss with Roel at OOPSLA (I will not 
attend because I have too much stuff
to do).

So Henrik can say what he wants on me I do not care. We will see what 
we can do.
I will not reply to other emails because I'm a trooooooolllllllllll

Stef





regards, Gˆran



On mercredi, octobre 16, 2002, at 09:35  pm, Göran Hultgren wrote:

> Hi all!
>
> Quoting Stephane Ducasse <ducasse at iam.unibe.ch>:
>>> Have you seen Andreas browser?
>>> It has a notion of "current Module" and whenever you change another
>>> Module it automatically creates DeltaModules for you in the correct
>>> way.
>>> You can go by your daily coding business just like before.
>>
>> Clearly the way to go but still I do not understand why we need two
>> concepts.
>> henrik was fuzzy explaining that to us when he visited us too.
>
>> There is no comceptual different between a clean class def and a class
>> def plus a bunch of methods
>> sorry.
>
> But your statement is simply "wrong". A DeltaModule is NOT, and I 
> repeat - NOT -
> just a bunch of methods! A DeltaModule is LIKE A CHANGESET.
>
> It contains OPERATIONS like for example a method addition, a method 
> removal, an
> instvar addition, an instvar removal etc. etc. In short it contains 
> "changes"
> that can be applied (activated) and also reversed (deactivated). This 
> is very
> different from a SNAPSHOT of a class.
>
> Your statement can roughly be compared to the statement that "there is 
> no
> conceptual difference between an .st fileout of a class and 
> ChangeSet". And
> hopefully you agree with me that there is a difference there?!
>
> So in short - a Module contains a bunch of classes. Nothing more. A 
> DeltaModule
> contains your changes to classes in other Modules that you do not 
> control.
>
> Is there anyone else out there reading this thread that still do not 
> understand
> this? If there is, speak up because this is important. We are a 
> community and we
> decide where we want to go together.
>
> regards, Göran
>
> Göran Hultgren, goran.hultgren at bluefish.se
> GSM: +46 70 3933950, http://www.bluefish.se
> \"Department of Redundancy department.\" -- ThinkGeek
>
>
Dr. Stéphane DUCASSE (ducasse at iam.unibe.ch) 
http://www.iam.unibe.ch/~ducasse/
  "if you knew today was your last day on earth, what would you do
  different? ... especially if, by doing something different, today
  might not be your last day on earth" Calvin&Hobbes





More information about the Squeak-dev mailing list