Summary: Naiad (Spoon's module system)
Last updated at 11:14 pm UTC on 27 January 2011
by Craig Latta, 1 March 2005
What problem is being addressed
Naiad ("Name And Identity Are Distinct") addresses the problem of demarcating components in a dynamic object system, and accurately synchronizing multiple systems.
How it solves the problem
Naiad solves the problem by maintaining object identity and using message-passing as much as possible (in particular, between machines), instead of using files as an intermediary. Being able to speak normally to all objects in the module model (even when they're remote) greatly simplifies the design. Objects can communicate in situ; they can react to human interaction immediately, without having to reconstitute themselves from "dead bytes" residing outside object memory.
Naiad also takes advantage of the very small object memories (currently ~90k) afforded by the Spoon project.
Useful links
http://netjam.org/spoon
http://netjam.org/spoon/naiad
http://www.youtube.com/watch?v=xCwidGFkn4Q
http://thiscontext.wordpress.com/2011/01/27/14/
The author wrote the sections above the line.
People can add what they want to these later sections, and can suggest that the author change the rest.
What's cool about it
We can write programs that reference objects outside the image. In today's networked computing environments, we can see that the traditional Smalltalk image being restricted to local memory is a historical accident, not something we want to preserve. Modules of code outside the image are an excellent example of objects we would like to reference and interact with: in particular, we would like to instantiate objects with behavior defined in such modules. An image need only contain the code to launch an application, communicate with remote objects, and load code to instantiate new classes of local objects.
What's not
Description of Naiad (Spoon) is confusing. Need to better define "the problem of demarcating components in a dynamic object system". Demarcating implies that the problem is about locating boundaries between components. Is that right? "Dynamic object system" could describe a traditional Smalltalk image, where new objects are instantiated dynamically. Isn't the problem about communication with objects outside the image, including persistent objects and remote objects? Finally, what is the problem with "synchronizing multiple systems"? Is it ensuring that two systems that should use the same instance or version of an object, do in fact bind to the same instance? Is it the general configuration management problem of ensuring that a correct selection of code versions is made for a given application?
How does Naiad "maintain object identity"? What do you mean by "message-passing" as an alternative to "using files as an intermediary"?
Commentary
Back to New Modules