Network protocol for netDribble:

Definitions:
	<name>		[^ \t\n/]+
	<item>		<name> # Denotes an item
	<action>	<name> # Denotes an action
	<type>		One of "normal", "split", "join" or "destructor"

	CA	Current Action

Notations:

Anything enclosed in {} are optional.
Anything followed by ... are optionally repeatable.
Anything enclosed in <> are as above.
Anything else is literals

Network protocol:

The network protocol is a synchronous exchange of SExprs, with three
notable datatypes (Items, Actions and Containers). The following
requests exists:

(item <item>)		# Return data for Item <item>
(action <action>)	# Return data for Action <action>
(setaction <action>)	# Return data for Action <action> and set
			# "Current Action" to it.
(move <item> <name>)	# Move <item> along arc <name> in CA
(refresh-item <item>)	# return new data for <item>
(refresh-action <action>) # return new data for <action>
(follow <name>)		# Return data for action corresponding to the
			# transit along arc <name> and set that action
			# as CA
(CA)			# Return data for current action
(all-items)		# Return all items residing in at least one node
(all-actions)		# Return all actions
(start <item> <action>)
(make <item-name> <action> (data <data>))
(itemdata <item>)	# Returns data for item
/* wflib.a cloning */
(libfollow <action> <exit>)
(libmove <item> <action> <exit>)
(writeitem <item> (data <data>)) # update data in item

Responses:

(OK)					# Generic result
(error <error message>)			# Error indication
(item <item> {(actions <action>...)})	# <itemspec>
(action <action> {<type>}
  {(items <item>...)}
  {(exits <name>...)}) # <actionspec>
(itemdata <item> (data <data>))		# itemdata
(collection {<itemspec>...}{<actionspec>...})
	# Note that one *can* actually mix itemspecs and actionspecs,
	# since we can simply see the difference between them

More about the protocol:

The protocol is built up from '(', ')', symbol-constituents and
whitespace. Whitespace are space, \t, \n and \r. Characters are quoted
with a preceeding '\'. All quoting means is that the next character is
literal. Note that that means that "\n" denotes an "n", not a linefeed.