Uroborus
Welcome to Ouroborus!
_Important_, you can contribute this wiki in two ways:
- Commenting -> just edit the page.
- Editing -> just "register"
We are creating a free, open source tool for teaching biology using artificial life simulations
which we hope will be sufficiently complex to exhibit Interesting Behaviour.
It will be written in "Python":http://www.python.org/ with "Pygame":http://www.pygame.org/].
We will create windows executables with
"py2exe":http://starship.python.net/crew/theller/py2exe/index.html .
Python might be a controversial choice, but it can always be extended, and we feel that it is ideal for the ObjectArchitecture we are working on, besides, there is "Moore's Law.":http://www.webopedia.com/TERM/M/Moores_Law.html
This page is for important issues concerning Ouroborus Project. Feel free to edit this page or comment it in order to mention your ideas. Feel even freer to reorder or format this page as a HomePage.
Contact Information.
We will hold regular meetings Monday from 18:00-19:30 at "irc://linux.ajusco.upn.mx/mundito/":irc://linux.ajusco.upn.mx/mundito/. port 7000
This is the "plan for the next meeting":http://talleres.ajusco.upn.mx/portal/projects/mundito/meetingTopics.
Download the code.
You can make a svn(subversion) anonymous checkout: 'svn checkout svn://linux.ajusco.upn.mx/mundito'
Theoretical Basis.
The theoretical foundations of Ouroborus arise from complex systems theory; complex systems are those which contain a relatively large number of elements, not so many as to be able to perform mechanical statistics on the entire system, and not so few that we could analyse them with differential equations. These systems cannot be broken up into their constituent parts in order to be analysed, because the dynamics of the entire system depend on the complete interaction of the parts.
As an example of a complex system you can think of the human brain: if you try to understand the behaviour of the entire system by studying the neurons only, you won't go very far at all since you will need one differential equation for each neuron and the mammalian brain has hundreds of thousands of them, making it impossible to model. On the other hand if you focus on the statistics of the system you won't find too much of interest either. So we must conclude that somewhere in between order (the mechanisistic view) and disorder (statistics) lie some interesting phenomena known as complex systems.
The Ouroborus simulation is based on Stephen Wolfram's ideas concerning "cellular automata":http://www.ifs.tuwien.ac.at/~aschatt/info/ca/ca.html, but with a higher level of abstraction.
The gameboard will be a grid-like array of celluar automata, and the gamepieces will be mobile objects with a sensitive aura or neighbourhood around them. These mobile automata (MA) will be able to interact with the CA, i.e. the gameboard, which will record the MA's properties; in other words the gamepieces will secrete substances which will diffuse over the board. The MA will also sense amd react to other MA. In technical terms the board and the MA will have universal computation properties (they will be Turing machines).
Since Ouroborus is an artificial life simulation created with the purpose of teaching biology, the MA will have genotype and phenotype attributes. The phenotype will determine the way in which the MA's reproduce, and will also control mobility and sensitivity.
The genotype is only a symbolic representation of the MA's genetic code; using this, it will be easy to teach and model the process of evolution complete with Mendel's laws. Once we have evolution plus the MA-CA interaction, we will end up with a practical tool for teaching ecology.
Architecture.
I recently came accross this interesting concept: "Symbiosis Ware":http://c2.com/cgi/wiki?SymbiosisWare. Question: are we writing SymbiosisWare? I say we are!
Ouroborus implements the "model-view-controller":http://ootips.org/mvc-pattern.html pattern with the "observer":http://ootips.org/observer-pattern.html pattern to communicate the three parts. "This":http://java.sun.com/blueprints/patterns/MVC-detailed.html MVC page is worthy of a visit just to check out the "diagram":http://java.sun.com/blueprints/patterns/images/mvc-structure-generic.gif detailing the pattern.
As we intend to allow the model to be distributed among any number of peers, we must create an ApplicationProtocol for it.
"Cage":http://www.alcyone.com/software/cage/index.html is a generic and fairly complete cellular automata simulation engine, as described by its homepage, we need to evaluate it to see if it will fit our needs.
"CAML":http://caml.sourceforge.net/ is an XML language application for describing CAs.
Now we have a ToDoList, please populate it with things to do. there are two problems that ouroborus team want to solve:
- the first is about the speed for cage libraries, (the cellular automata librery is to slow),the solution is make speed profiling and rewrite the slow functions in pyrex, pyrex is a mix of python and C (http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/)
- the second is construct the user interface (graphical user interface), this interface will be a mix of xml and wxpython You can see the "developers manual":http://linux.ajusco.upn.mx/~mundito/mundito/Development_manual.html in construction.
">Here you find the code. You can download it as ">zip archive or as a gzipped ">tarball.
Currently available creatures to populate Ouroborus may be viewed ">here.
We need to decide on a VersionControl system - Subversion! Our Subversion is currently down, meanwhile panx will edit the [http://www.spacemonkey.info/neighborhoods.py"> neighborhood.py] file. Someone please commit it as soon as our version control is back online.
Our progress will be tracked using ">ZenTrack, at ">our site. You can find some Zentrack manuals ">here.
We will use RegressionTests for the testing of the source code.
Documentation.
Here you can place links to all kinds of relevant documentation, which includes python tutorials, articles about artificial life, pygame tutorials, manuals for mundito users and developers, etc...
A "pygame tutorial":http://sjbrown.ezide.com/writing-games.html for the model-view-controller and observer patterns in games. Also there is a "tutorial":http://www.pygame.org/docs/tut/Executable.html for packaging pygame applications with "py2exe":http://starship.python.net/crew/theller/py2exe/index.html.
An excellent "python tutorial":http://www.python.org/doc/current/tut/tut.html written by Guido van Rossum, the creator of python and its Benevolent Dictator for Life.
"A paper":http://www.auml.org/auml/supplements/Cranefield1-OAS2001.pdf on UML and agent modelling.
A very rough and unmantained "translation of Guido's tutorial":http://talleres.ajusco.upn.mx/library/Manuales/python/index.html to Spanish. I am not at all proud of this translation, the formatting needs to be completely redone (the markup should be structural, format should be applied by a CSS stylesheet), and the translation itself needs some serious work (both technical and in terms of style); still, we provide it with the hope that someone might find it useful, maybe even fix it (if you do, don't forget to send it to us).
CourseSyllabus for a 10 hour Python Workshop with Ouroborus.
Ismael Olea and I (Jergas) are organizing a technical documentation WorkShop for mundito developers, but, of course, everyone else is invited to join in.
CAGE.
The "Cage homepage":http://www.alcyone.com/software/cage/index.html is the only documentation I can find for it. (This of course means that we will need to write some tutorials or HowTos for it.)
Networking.
Docs about the "standard implementation of socket networking":http://docs.python.org/lib/module-socket.html. A "Socket Programming HOWTO":http://www.amk.ca/python/howto/sockets/ by "Gordon McMillan":http://www.hrdag.org/about/gordon_macmillan.shtml, (gmcm@hypernet.com), can be found in "A.M. Kuchling's page":http://www.amk.ca/.
Below are the standard help files for those of you who do not know them
or need to see them again.
Servers and services available
- Linux
- Mailing lists (talleres, mundito)
- Mediawiki wiki/ contents from our old site on Plone are now in this wiki
- svn (available at /var/svn) but with no new commits since 2005, when the repository was moved to Sourceforge, major contributors of the 72 revisions on this repository (mundito) where David and Vian.
- Sobby
- Janus
- Private ftp for ouroborus developers (filtered by the FW actually)
- Sagan
- Squishdot news site, mainly used to report work http://sagan.ajusco.upn.mx:8080/linux
Wiki's Sandbox
If you just want to play with the wiki, visit the SandBox, this content will be mantained, but we ask you not to alter another contributions.
Comments?
Below is a space for comments. You can also use it to experiment with this wiki, to create pages not related to mundito, etc...
WritingSample de Palmis.
From unknown Mon Dec 8 21:32:04 -0600 2003
From:
Date: Mon, 08 Dec 2003 21:32:04 -0600
Subject:
Message-ID: <20031208213204-0600@talleres.ajusco.upn.mx>
Estoy nadamas probando
From unknown Mon Dec 15 16:25:46 -0600 2003 From: Date: Mon, 15 Dec 2003 16:25:46 -0600 Subject: Message-ID: <20031215162546-0600@talleres.ajusco.upn.mx> In-reply-to: <20031208213204-0600@talleres.ajusco.upn.mx>
hola, quien esta nomas probando? saludos, jergas
From unknown Thu Jan 8 13:05:49 -0600 2004 From: Date: Thu, 08 Jan 2004 13:05:49 -0600 Subject: YoProbando Message-ID: <20040108130549-0600@talleres.ajusco.upn.mx>
Yo. Yo sigo probando. Yo.
parece que los estuviera oyendo... --2004/03/24 00:32 CST
I love deadlines. I love the whooshing noise they make as they go by --Douglas Adams (http://www.edge.org/documents/adams_index.html"Lament For Douglas])
leeanse esto --2004/03/24 08:11 CST
Check out this article by Jaron Lanier for an interesting argument about the use of dimensions in computation:
http://www.edge.org/3rd_culture/lanier03/lanier_index.html