This entry is will be quite different from the others and consist mainly of theoretical discussion. Proposing something as ludicrously ambitious as creating an entire tree of life is beyond the scope of a month's coding -- even if I could code for 31 days straight -- but I hope to at least make a start and tackle some of the problems involved in creating such a system. This project requires a lot of research and I'm certain I will learn a lot about evolutionary biology, so it wont be a waste of time regardless of the results I achieve. I have been very vague about the details of this proposed system because I honestly have no idea how detailed and authentic I will be able to make it, which isn't a great starting point for a project, but consider this a research project.
To get a general idea of the task that lies ahead, I have decided to look at one group of organisms in isolation in order to experiment with ways of reproducing the kind of inter-species variations observed in nature. I have chosen mushrooms as my first subject, they are fairly simple organisms but have a great deal of variation, which should serve my experimentation well.
I have recently taken up the hobby of mushroom picking, so I know a little about them already, but I couldn't name all of the varieties in this drawing. There is quite an astonishing variety but most of these differences are subtle mutations of size, shape, texture and colour. I could imagine how these variations could be produced by the same algorithm, but the first detail that struck me as an obstacle was on the undersides of the caps. You see, some mushrooms have gills while others have pores. How on Earth am I going to create that kind of a distinction?
This type of "this or that" distinction is of course far more pronounced when looking at a wider range of species, compare a mushroom to a bat and there are a lot of "this or that" distinctions. I cannot specify all of these differences manually, there are far too many, so I must find a way for them to emerge from the same algorithm. Is this possible? How can I produce an algorithm that can switch early on between such distinct paths? Surely it would need to be immensely complicated to the point where I may as well be specifying each difference manually. I think what I require is a set of rules that in turn, when provided with input, produce one of a new set of secondary rulesets that can produce wildly different outcomes from each other. Emergent rulesets? Sounds complicated and messy...