Spoon progress 30 January 2006: the initial Naiad user interface design
Just a few notes about the current user interface for Naiad, Spoon's
module system. Comments welcome (keep in mind that Matt Hamrick is
working on security aspects, and I don't address them here).
At the moment I'm about to perform the first HTTP-instigated
synchronization of two object memories. The idea is...
- The user starts a minimal Spoon system on localhost via a web browser
(e.g., the 2003 "relief" demo, if you remember that).
- That local Spoon system starts a webserver.
- The user's web browser is redirected to the local Spoon's webserver;
the user is greeted with a message saying that Spoon is running locally.
- The user visits some other external website that lists available
modules. Such a website has a bunch of URLs of the form
"http://localhost:<port>/<command>", where <port> is some agreed-upon
port on which each local Spoon web server listens, and <command> is a
text-encoded bitstream that the local Spoon webserver understands.
One of the commands is "load a module"; included in bits of such a
command are the module ID (a UUID) and provider hostname/port for an
available module. The local Spoon system, having received the command,
makes a remote-message-sending connection to the providing machine, and
synchronizes itself with a providing object memory. Initially the local
Spoon system reports on the success of the command via its web server's
responses; later, after the appropriate UI modules are loaded, it can
just provide feedback with a normal GUI in its own separate host window.
(There are other URL-delivered commands for quitting, making a
snapshot, viewing currently-installed modules, etc.)