next up previous
Next: Self-reliance Up: Living computation: Examples Previous: Living computation: Examples

Living computation by design

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.

Table: Views of the ccr research prototype: Purpose, history, technology, and `genetic' content. `%new' refers to code developed within the project rather than acquired from the environment.

For Primary purpose
End users Peer-to-peer security-aware chat system / graphical MUD
`Agents' and artificial life Scalable distributed environment with human interactions
Real artificial life Investigate life-like computation and communications strategies
Select version dates v0.4+ algorithms
v0.4.0= 3/30/00 Authentication: El Gamal
v0.2.6= 8/4/98 Encryption: Twofish
v0.1.91= 9/15/97 PKI: included
v0.1.80= 4/11/95 Transport: TCP/UDP
v0.1.24= 10/26/92 Addressing: IPv4+PKI
File counts and code size (by wc)
Content Files KLines %tot %new
C code 721 187.3 49.1 57.0
history 19 50.4 13.2 92.9
documentation 80 34.4 9.0 60.7
Perl code 73 33.0 8.6 100
development 153 24.0 6.3 41.5
Tcl/Tk code 37 18.1 4.7 100
assembly code 145 15.2 4.0 0.0
C++ code 43 10.4 2.7 93.4
uncategorized 24 6.7 1.7 1.2
ccrl code 19 2.3 0.6 100
empty 1 - 0.0 -
Total 1315 381.7 100.0 64.9

Figure: Views of the ccr v0.4.0= genome

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.

next up previous
Next: Self-reliance Up: Living computation: Examples Previous: Living computation: Examples Mon Dec 31 13:57:25 MST 2001