For several years, we have been building a series of research prototypes to explore `life-like' design strategies for networked computations. This ccr project overall has been introduced previously [Ackley, 1996]; here we provide only the briefest overview, then draw a few examples from the current system design, and then use the software itself as a sample object of study.
At its core ccr is a code library for peer-to-peer networking with
research emphases on security, robust operation, object persistence,
and run-time extensibility. Built upon the core libraries are the
graphical user interface world ccrTk, and the text-only world
ccrt. Table provides views of the system along
several dimensions: Its major functions, history, and technology,
along with a breakdown of the current contents of the system software.
Figure 1 visualizes the system in the linear `tar file'
format in which it normally reproduces. The 14Mbytes in the `genome'
are depicted in terms of `coding' regions that are the actual source
code; `promoter' regions contain metadata guiding the migration of
code segments during early development; `garbage' regions are simply
wasted by the tar file format. Successive `zooms' in
Figure 1 across some five orders of magnitude ultimately
resolve individual bytes, illustrating the scale of a modest-sized
system like ccr.
A fundamental design element of ccr, arguably a sine qua non for an independent living system, is its peer-to-peer communications architecture: A ccr `world' can communicate with other ccr worlds, but it doesn't require any other worlds to function; each ccr world is both `client' and `server' in interactions with other worlds.