Project Ouroborus

We are renovating this website, if you see a broken link or notice information missing which used to be here, please let us know. To go to our old webpage, click here.

Ouroborus is an artificial life framework for mobile agents on a background of cellular automata. It can be used to teach and research topics such as population genetics, ecology and evolution. The demo includes a curses view and live Csound audio. We are currently developing a demo that takes data in from a photosensor built with an arduino.

To go directly to more specific information, follow one of the links below. Otherwise, read on for an introductory text on the project.

About Ouroborus

What is life? A sexually transmitted terminal disease.

If one defines the terms loosely, by extending the notion of sexuality in it to cover asexual reproduction, as well as considering death both in its programmed as well as its accidental varieties, then this joke aproximates some 'serious' definitions. Its slightly circular, like an inductive definition lacking the initial case, it tells us that life is bounded by these two processes. It doesn't tell us how it started, but once its there, it branches off through reproduction, and then this individual branches end at death. This joke, as it implicitly acknowledges our lack of understanding, is in some ways better than some of the candidate 'serious' definitions.

Sure, we could mention entropy, metabolism, birth, growth, reproduction, death. We could discuss boundary cases, and acknowledge that it is not a binary state, on or off. The fact stands that there is no good working definition. One that allows us to test cases or create new ones. Why is that? Because our understanding of the phenomenon is shallow at best. That is where artificial life comes in. In trying to create a new form of life in a different material substrate, we are also trying to gain a basic understanding of the dynamics of life. If we can help in this endeavour however slightly, project Ouroborus will have been successful.

In pursuing that basic goal, we are trying to achieve some easier secondary ones as well. Our roadmap leads to a peer to peer networked framework for artificial life. It is meant to be a research tool, a toy, an objet d'art, a generator of interesting visual and aural patterns, an educational resource, a platform for mobile agents, and whatever else our users can think of.

The inspiration for this project came to one of us, Jergas, many years ago, while reading a science fiction book. In it, the protagonist hacked a simulation much like the one we strive to create, but more powerful, as befits a fantasy with no real world computational constraints. That simulation was a centralised commercial massively multi-player environment with a detailed artificial chemistry upon which people would build artificial lifeforms which they paid to run. The hero uploaded a version of himself to this simulation, where he survived after his original self was murdered. If anyone knows the title or author of this book, I would be much indebted if they send me this information, as I have lost track of it, but would like to give proper credit and references.

Our aims are more modest and less greedy. Our simulation engine is to be free software, and peer to peer in order to avoid the commercial aspect of centralisation, while keeping the advantages of the massive scale. The fact that it would run in ordinary users' desktop computers prevents us from attempting to build, bottom to top, a full artificial chemistry with which to construct artificial lifeforms. (Though I'm not implying that it would be possible at present with more computing power.) So we've adopted a very simple cellular automaton environment with evolving mobile agents on top of it as our goal. We hope that providing a semi-stable but massive environment (where the creatures can evolve for countless generations without depending on the individual machines being on or running the simulation at any given time), as well as allowing our users to create new creatures, will supply a healthy dose of complexity.


Lines of Development

Open Lines of Development

  1. Ouroborus Proper. This line follows the original concept as described above. A release is expected shortly.
  2. Birdcage. This is a reimplementation of the cellular automata engine cage in the Python extension language Pyrex. (To learn more about Pyrex visit our Resources area). This optimisation of our engine currently ran approximately 100 times faster than the original version in Python when the first optimisation was completed. It has probably become slower since then as new features and abstraction layers have been added. Look for the latest release in our Downloads section. Birdcage is currently a part of the Ouroborus Proper line of development, however it is a standalone project in its own right. Some documents, straight from the developers keyboard, can be found here.
  3. Cage Cpp. Vian has created a Cage-like library in C++ in an effort to further optimise our model. He is currently porting the newest version of this library to Linux.

Closed Lines of Development

  1. Yogiserver. An XML-RPC server written in Python, providing a library of functions for storing strings on line. It may be used as a repository of randomly chasing sutras or whatever. This is basically a toy which was built by Sat Tara in order to start experimenting with network programming. We are still in need of a team member well versed in this subject in order to programm the network module foreseen on our roadmap.
  2. Yogiclient. A python client for Yogiserver. Clients in other languages are more than welcome.
  3. CAML Parser.. The idea behind this line of development was to hand over control of the model to the XML parser, as well as to facilitate the creation and exchange of full models, or at least CA backgrounds. It could have eventually superseded birdcage as the cellular automata engine for the overall project.The release of the CAML Parser was indefinitely postponed when David left the project. As we further refine Birdcage, it seems more and more unlikely. Still, if a strong XML coder wanted to take it on, it could still make sense as a data exchange format, or even as an automated Birdcage model code generator. The original CAML project is clearly abandoned as well.