[Vm-dev] re: deployment components

Craig Latta craig at netjam.org
Wed Sep 24 19:40:03 UTC 2014


Hi Eliot--

     I write:

> Right, there's no need for anyone to use UUIDs when referring to
> classes in Smalltalk expressions.

     Torsten responds:

> Yes, exactly this. We still use regular names for the classes - but
> for the tools they have a distinguishable ID. Best is to use a UUID
> for the ID as it is unique from the beginning. So if you create a
> class "Foo" and I create one both are unique by ID - even when using
> the same name.

     You respond:

> But this doesn't cope with the fact that I can take a copy of your
> class, modify my copy by adding or changing a method, etc, and hence
> derive two different versions of the class with the same UUID.

     A newly-created class copy would give a new ID to itself, as part
of its post-copy behavior. The UUID of a class corresponds to its object
identity. Sure, you could manually overwrite the ID field of any class
with something mischievous, just as, traditionally, you can manually
overwrite any field of any object you like. We have the means to deal
with that broader issue, if we want (e.g., we can implement object
immutability).

> If a class is defined by what it is (its methods, instance variables,
> superclass, etc) then it doesn't need a UUID.  Its own form uniquely
> (and reliably) identifies it.  If you use UUIDs then is the UUID
> modified every time some modification is made to it?

     No, the UUID is never modified, and no, a class is not defined by
its state (I suggest). For our purposes here, a class is defined only by
its object identity, and we only find it interesting to keep track of
that identity because that class object prescribes behavior. (Typically,
that corresponds to the class object being a subinstance of Behavior,
but this need not be so.)

     By establishing distributed identity, we are free to give whatever
name we want to each class object. Every class name is thus
unconstrained; every class effectively has its own namespace. This is
the concept of "Name And Identity Are Distinct" (NAIAD). To implement
it, we express object identity in terms that are usable in a distributed
system, using a commonly-known algorithm (UUIDs).


-C

--
Craig Latta
netjam.org
+31   6 2757 7177 (SMS ok)
+ 1 415  287 3547 (no SMS)



More information about the Vm-dev mailing list