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.