<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>RE: [Modules] Unloading and Conflicting Versions</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 5.50.4807.2300" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><SPAN class=501541319-22082001><FONT face=Arial color=#0000ff
size=2>There's very little info on Agora under <A
href="http://www.edugraf.ufsc.br">www.edugraf.ufsc.br</A> somewhere (the link is
probably down, there's a big university strike going on these
days)</FONT></SPAN></DIV>
<DIV><SPAN class=501541319-22082001><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=501541319-22082001><FONT face=Arial color=#0000ff
size=2>There's an article we submitted & presented at a workshop at ECOOP'94
I think (Bologna, Italy). I may be able to find it in some backup I
have.</FONT></SPAN></DIV>
<DIV><SPAN class=501541319-22082001><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=501541319-22082001><FONT face=Arial color=#0000ff size=2>I
remember sending a hardcopy of the Lindatalk and the Agora papers to Alan Kay
back in 95, when I was trying to get him to talk at a conference on Educational
Software in Brazil (unfortunately that didn't work <grin>). So, I must
have the ps file somewhere, I will check.</FONT></SPAN></DIV>
<DIV><SPAN class=501541319-22082001><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=501541319-22082001><FONT face=Arial color=#0000ff
size=2>Considering any object as a tuple works too, you just need to customize
the TupleSpace/#match: I guess, possibly by subclassing. As I said, the
possibilities are many, it all depends on your goals :-) </FONT></SPAN></DIV>
<DIV><SPAN class=501541319-22082001><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=501541319-22082001><FONT face=Arial color=#0000ff size=2>We
implemented our own serialization stuff, called SaveLoad back then. It was
student-quality code, though. Little did I know back then that I'd be working on
serialization stuff again in the future :-( but that's another
story</FONT></SPAN></DIV>
<DIV><SPAN class=501541319-22082001><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=501541319-22082001><FONT face=Arial color=#0000ff
size=2>Networking on Smalltalk/V 286 meant C & packet drivers back then.
Mostly a waste of time. That's when we started small-winsock to have a free
interface to winsock back then (started to move to ST/V Win).
</FONT></SPAN></DIV>
<DIV><SPAN class=501541319-22082001><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=501541319-22082001><FONT face=Arial color=#0000ff size=2>Too
bad we had to do so much plumbing when all we wanted was to play more with the
educational, construtivism stuff <sigh>. </FONT></SPAN></DIV>
<DIV><SPAN class=501541319-22082001><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=501541319-22082001><FONT face=Arial color=#0000ff
size=2>marcio</FONT></SPAN></DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
<DIV class=OutlookMessageHeader><FONT face="Times New Roman"
size=2>-----Original Message-----<BR><B>From:</B>
squeak-dev-admin@lists.squeakfoundation.org
[mailto:squeak-dev-admin@lists.squeakfoundation.org]<B>On Behalf Of</B>
Withers, Robert<BR><B>Sent:</B> August 22, 2001 12:48 PM<BR><B>To:</B>
'squeak-dev@lists.squeakfoundation.org'<BR><B>Subject:</B> RE:
LindaTalk<BR><BR></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN
class=257264016-22082001>Exactly right...I have been enamoured with
researching it's capabilities, to a certain extent (parser, unification,
trellis). However, the primary reason I picked it up was to use as a
distributed communications mechanism, with Store-and-Forward and arbitrary
message structures supporting pattern matching. Do you have a link to
Agora? The ability to match based on content is a powerful enabler for
quickly prototyping communications mechanisms and protocols. I wanted it
to be eventful, so a client could register callbacks. It should also be
asynchronous, to support concurrency. Finally, I am interested in it
being remote, thus requiring object serialization. It supports all but
the last at this time.</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN
class=257264016-22082001></SPAN></FONT> </DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=257264016-22082001>The
new EventTupleSpace is much more KISS, although depending on an async
messaging implementation. it will take this weekend to dig it out and
finish the latest refactoring.</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN
class=257264016-22082001></SPAN></FONT> </DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=257264016-22082001>-
Rob</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN
class=257264016-22082001></SPAN></FONT> </DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN
class=257264016-22082001>PS. the most incredible realization, that John
Sarkala mentioned to me, was that every object in the squeak environment
is a tuple with a particular arity. Would it be possible to
implement an Interpreter and ObjectMemory using a
TupleSpace?</SPAN></FONT></DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
<DIV class=OutlookMessageHeader dir=ltr align=left><FONT face=Tahoma
size=2>-----Original Message-----<BR><B>From:</B> Marcio Marchini
[mailto:mqm@magma.ca]<BR><B>Sent:</B> Wednesday, August 22, 2001 11:47
AM<BR><B>To:</B> squeak-dev@lists.squeakfoundation.org<BR><B>Subject:</B>
RE: LindaTalk<BR><BR></DIV></FONT>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV><SPAN class=720034315-22082001><FONT face=Arial color=#0000ff
size=2>It's possible to add all sorts of crazy stuff, but I think one has to
have a goal first. Research ? Fun ? Use as a lower layer of something else ?
etc</FONT></SPAN></DIV>
<DIV><SPAN class=720034315-22082001><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=720034315-22082001><FONT face=Arial color=#0000ff size=2>In
my case, I wanted to use it as a base to program actors/agents. I wanted a
different form of communication instead of pure message passing. We used it
to build Agora, an educational software where games etc could be prototyped.
All implemented on Smalltalk/V 286 with Acumen Widgets, using a different
metaphor for communication, implemented on top of
Lindatalk.</FONT></SPAN></DIV>
<DIV><SPAN class=720034315-22082001><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=720034315-22082001><FONT face=Arial color=#0000ff
size=2>So, I guess it's necesary to "have a customer" first, to drive the
goals & features. And, as usual, KISS.</FONT></SPAN></DIV>
<DIV><SPAN class=720034315-22082001><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=720034315-22082001><FONT face=Arial color=#0000ff
size=2>marcio</FONT></SPAN></DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
<DIV class=OutlookMessageHeader><FONT face="Times New Roman"
size=2>-----Original Message-----<BR><B>From:</B>
squeak-dev-admin@lists.squeakfoundation.org
[mailto:squeak-dev-admin@lists.squeakfoundation.org]<B>On Behalf Of</B>
Rob Withers<BR><B>Sent:</B> August 22, 2001 3:30 AM<BR><B>To:</B>
squeak-dev@lists.squeakfoundation.org<BR><B>Subject:</B>
LindaTalk<BR><BR></FONT></DIV>
<DIV><FONT face=Arial size=2>Yes, it has been educational for me. I
initially tore it apart pretty badly, then went back and only changed just
a few things. The match: algorithm and added a collection api.
The new EventTupleSpace, which is not in the version on the CD, uses an
async message sending mechanism to generate events during access (read,
take, write, scan).</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>I looked briefly at unification, in Lisp, to
attempt to bring this to LindaTalk, but I quickly ran out of steam.
Another idea was expressed where we can use a TupleSpace as a parser,
adding token rules and grammar productions, then streaming input into the
space. I believe it would just act as a state machine, where matches
for particular productions would transition the parser state, allowing
other productions to be matched. I was to the point where I thought
there might be a context tuple, which contains the current state,
and it would be taken, modified, then written, by the productions (eval
actions). It's complicated!</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Welcome home! ;-)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Rob</FONT></DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
<DIV
style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B>
<A title=mqm@magma.ca href="mailto:mqm@magma.ca">Marcio Marchini</A>
</DIV>
<DIV style="FONT: 10pt arial"><B>To:</B> <A
title=squeak-dev@lists.squeakfoundation.org
href="mailto:squeak-dev@lists.squeakfoundation.org">squeak-dev@lists.squeakfoundation.org</A>
</DIV>
<DIV style="FONT: 10pt arial"><B>Sent:</B> Wednesday, August 22, 2001
1:02 AM</DIV>
<DIV style="FONT: 10pt arial"><B>Subject:</B> RE: [Modules] Unloading
and Conflicting Versions</DIV>
<DIV><BR></DIV>
<DIV><SPAN class=894095704-22082001><FONT face=Arial color=#0000ff
size=2>It's nice to see LindaTalk surviving all these years, in one way
or another... :-)</FONT></SPAN></DIV>
<DIV><SPAN class=894095704-22082001><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=894095704-22082001><FONT face=Arial color=#0000ff
size=2>Hopefully I'll get around to doing more Squeak from now on, we'll
see. I'll then take a look at it ;-)</FONT></SPAN></DIV>
<DIV><SPAN class=894095704-22082001><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=894095704-22082001><FONT face=Arial color=#0000ff
size=2>Keep up the good work !!</FONT></SPAN></DIV>
<DIV><SPAN class=894095704-22082001><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=894095704-22082001><FONT face=Arial color=#0000ff
size=2>marcio</FONT></SPAN></DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
<DIV class=OutlookMessageHeader><FONT face="Times New Roman"
size=2>-----Original Message-----<BR><B>From:</B> <A
href="mailto:squeak-dev-admin@lists.squeakfoundation.org">squeak-dev-admin@lists.squeakfoundation.org</A>
[mailto:squeak-dev-admin@lists.squeakfoundation.org]<B>On Behalf
Of</B> Withers, Robert<BR><B>Sent:</B> August 21, 2001 10:41
PM<BR><B>To:</B>
'squeak-dev@lists.squeakfoundation.org'<BR><B>Subject:</B> RE:
[Modules] Unloading and Conflicting Versions<BR><BR></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN
class=409214302-22082001>That's where I saw it. Thanks,
Marcio. By the way, did you notice that LindaTalk is on the new
Squeak CD? I have many changes to it, mainly the EventTupleSpace
and recursive tuple matching, but it isn't quite ready. I can
send it to you if you would like.</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN
class=409214302-22082001></SPAN></FONT> </DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN
class=409214302-22082001>cheers,</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN
class=409214302-22082001>Rob</SPAN></FONT></DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
<DIV class=OutlookMessageHeader dir=ltr align=left><FONT face=Tahoma
size=2>-----Original Message-----<BR><B>From:</B> Marcio Marchini
[mailto:marcio@bedarra.com]<BR><B>Sent:</B> Tuesday, August 21, 2001
2:55 PM<BR><B>To:</B> Withers, Robert;
squeak-dev@lists.squeakfoundation.org<BR><B>Cc:</B>
modsqueak@bluefish.se<BR><B>Subject:</B> RE: [Modules] Unloading and
Conflicting Versions<BR><BR></DIV></FONT>
<DIV><FONT face=Arial color=#0000ff size=2><A
href="http://swiki.squeakfoundation.org/squeakfoundation/31">http://swiki.squeakfoundation.org/squeakfoundation/31</A></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </DIV>
<DIV><SPAN class=705445418-21082001><FONT face=Arial color=#0000ff
size=2>marcio</FONT></SPAN></DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
<DIV class=OutlookMessageHeader><FONT face="Times New Roman"
size=2>-----Original Message-----<BR><B>From:</B> Withers, Robert
[mailto:rwithers@quallaby.com]<BR><B>Sent:</B> August 21, 2001
2:21 PM<BR><B>To:</B>
'squeak-dev@lists.squeakfoundation.org'<BR><B>Cc:</B>
modsqueak@bluefish.se<BR><B>Subject:</B> RE: [Modules] Unloading
and Conflicting Versions<BR><BR></FONT></DIV>
<P><FONT size=2>Dave, could you please repost these links? I
couldn't find them in the squeak ML archives.</FONT> </P>
<P><FONT size=2>thank you,</FONT> <BR><FONT size=2>Rob</FONT> </P>
<P><FONT size=2>> -----Original Message-----</FONT> <BR><FONT
size=2>> From: Dave [<A
href="mailto:dave@bedarra.com">mailto:dave@bedarra.com</A>]</FONT>
<BR><FONT size=2>> Sent: Monday, August 20, 2001 9:06 PM</FONT>
<BR><FONT size=2>> To: Les Tyrrell</FONT> <BR><FONT size=2>>
Cc: squeak-dev@lists.squeakfoundation.org;
modsqueak@bluefish.se</FONT> <BR><FONT size=2>> Subject: Re:
[Modules] Unloading and Conflicting Versions</FONT> <BR><FONT
size=2>> </FONT><BR><FONT size=2>> </FONT><BR><FONT
size=2>> </FONT><BR><FONT size=2>> </FONT><BR><FONT
size=2>> 1. The mechanism for unloading is indeed a good deal
more complex than</FONT> <BR><FONT size=2>> loading and was one
of the throny problems OTI had to address in</FONT> <BR><FONT
size=2>> building embedded Smalltalk and Java. </FONT><BR><FONT
size=2>> </FONT><BR><FONT size=2>> Perhaps the issue of
unloading is something to be deferred until after</FONT> <BR><FONT
size=2>> the basic module and component mechanisms are defined
and tested? </FONT><BR><FONT size=2>> </FONT><BR><FONT
size=2>> 2. To my knowledge the only existing system that
supports current</FONT> <BR><FONT size=2>> execution of
multiple versions classes/methods is MS.NET with their</FONT>
<BR><FONT size=2>> assemblies. This itself gets problematic
however if you want to run</FONT> <BR><FONT size=2>> shared
assemblies. I posted the references earlier for those
</FONT><BR><FONT size=2>> interested</FONT> <BR><FONT
size=2>> in the problem. </FONT><BR><FONT size=2>>
</FONT><BR><FONT size=2>> Regards,</FONT> <BR><FONT size=2>>
Dave</FONT> <BR><FONT size=2>> </FONT><BR><FONT size=2>>
</FONT><BR><FONT size=2>> Les Tyrrell wrote:</FONT> <BR><FONT
size=2>> > </FONT><BR><FONT size=2>> > ----- Original
Message -----</FONT> <BR><FONT size=2>> > From: Dan Moniz
<dnm@pobox.com></FONT> <BR><FONT size=2>>
> > I'm imagining that when you file in a
ChangeSet (let's </FONT><BR><FONT size=2>> say Foo.cs)</FONT>
<BR><FONT size=2>> > > into your image
(Bar.image), your image is writing out </FONT><BR><FONT
size=2>> information to</FONT> <BR><FONT size=2>>
> > it's Bar.changes file that reflect the
things Foo.cs is </FONT><BR><FONT size=2>> doing to your</FONT>
<BR><FONT size=2>> > > image. Then, to back
out, you could use a currently </FONT><BR><FONT size=2>>
fictional "Undo"</FONT> <BR><FONT size=2>> >
> feature which would allow you to back up steps as recorded
in</FONT> <BR><FONT size=2>> > >
Bar.changes</FONT> <BR><FONT size=2>> > </FONT><BR><FONT
size=2>> > There are a few things that would need to be done
when </FONT><BR><FONT size=2>> unloading a module.
For</FONT> <BR><FONT size=2>> > one, you would like a rapid
way of gc'ing or otherwise </FONT><BR><FONT size=2>> mutating
any instances</FONT> <BR><FONT size=2>> > defined by that
module. Then, you will want a rapid way of </FONT><BR><FONT
size=2>> removing the</FONT> <BR><FONT size=2>> >
definitions found in that module. ChangeSets are no
</FONT><BR><FONT size=2>> better, and no worse, at</FONT>
<BR><FONT size=2>> > doing this than any other scheme.
There is no need to </FONT><BR><FONT size=2>> iterate over a
change</FONT> <BR><FONT size=2>> > log- the ChangeSet
already has an accounting of what it has </FONT><BR><FONT
size=2>> modified. So would</FONT> <BR><FONT size=2>>
> an OasisModule, or a Collage Layer.</FONT> <BR><FONT
size=2>> > </FONT><BR><FONT size=2>> > However, while
associating a ChangeSet with either a </FONT><BR><FONT size=2>>
Collage Layer or an</FONT> <BR><FONT size=2>> > OasisModule
seems reasonable to me, trying to warp </FONT><BR><FONT
size=2>> ChangeSet into becoming more</FONT> <BR><FONT
size=2>> > like these things does not seem
reasonable.</FONT> <BR><FONT size=2>> > </FONT><BR><FONT
size=2>> > > This may necessitate
modifications to userland tools to </FONT><BR><FONT size=2>>
deal with</FONT> <BR><FONT size=2>> > >
.changes file, and perhaps some modification to the
information</FONT> <BR><FONT size=2>> > >
and/or format of information stored in .changes files,
</FONT><BR><FONT size=2>> but I don't</FONT> <BR><FONT
size=2>> > > think it would be too drastic
and I don't think it </FONT><BR><FONT size=2>> would have
much</FONT> <BR><FONT size=2>> > > with the
implementation of ChangeSets themselves.</FONT> <BR><FONT
size=2>> > </FONT><BR><FONT size=2>> > What's wrong
with the idea of implementing the roles of a </FONT><BR><FONT
size=2>> Components and</FONT> <BR><FONT size=2>> >
Modules? In Oasis, a Module is a component that keeps
</FONT><BR><FONT size=2>> track of Shared Globals,</FONT>
<BR><FONT size=2>> > Undeclared variables, Pools, and a few
other things. </FONT><BR><FONT size=2>> ChangeSets don't
do this.</FONT> <BR><FONT size=2>> > </FONT><BR><FONT
size=2>> > The role of a changeset is to keep track of
changes... the </FONT><BR><FONT size=2>> role of an</FONT>
<BR><FONT size=2>> > OasisModule is to act as a place in
which those changes </FONT><BR><FONT size=2>> take
effect. These are</FONT> <BR><FONT size=2>> > separate
roles, so I would not reccomend mixing them.
</FONT><BR><FONT size=2>> ChangeSets are just fine</FONT>
<BR><FONT size=2>> > the way they are, at least in the sense
of the scoping of </FONT><BR><FONT size=2>> their
responsibilities</FONT> <BR><FONT size=2>> > to tracking
changes, and no more.</FONT> <BR><FONT size=2>> >
</FONT><BR><FONT size=2>> > Using ChangeSets as a means of
identifying chunks of code </FONT><BR><FONT size=2>> to turn
into a package</FONT> <BR><FONT size=2>> > is another issue,
as far as I know there is nothing wrong with that.</FONT>
<BR><FONT size=2>> > </FONT><BR><FONT size=2>> > -
les</FONT> <BR><FONT size=2>> </FONT><BR><FONT size=2>>
</FONT></P></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>