What would it take to make software as robust and flexible as living systems? How can we take engineering out of the business of bits and bytes and into the business of organs and organisms? What's the big deal with life anyway? Is it really anything more than some quality of mechanism? Herr Frankenstein made the whole thing seem very messy, but perhaps there's a better way? ----- Let's start by narrowing the field of inquiry. OrganicSoftware isn't about genetic algorithms or neural nets or protein engineering. It should be more concrete and intrinsic than just grafting on some kind of hocus pocus. Perhaps OrganicEngineering might be a better name. So, for a start, let's say OrganicSoftware has to have at least these properties: * Self-configuration. Install an organ and it adapts to its environment. An organism will actively explore and modify its environment to suit itself. * Interaction with others. An organ can only be hooked up to a specific set of other organs, where an organism can hook up with a wide variety of other organisms. * Growth and Decay. Organs grow or proliferate to ensure the continued survival of their organism. Organisms grow or proliferate to the extent permitted by their interactions with other organisms. These seem like desirable properties for all software, don't they? ''Actually, no. One of the problems with this approach is that because the system changes, it becomes harder to diagnose - a real problem when life-critical systems are in use. There is a sci-fi novel that addresses this - a software system that begins to make connections unthought-of by its builders (_The_Two_Faces_of_Tomorrow_, perhaps)'' --PeteHardie ---- We also need a change in our debugging strategy. * Most debugging is like autopsy * Debugging will become like surgery ''i.e. you will need to construct shunts for data whilst you work on a part, because that part may be being used in all kinds of complex ways by other parts of the system'' ---- I don't think software should be organic because that implies the software is self-interested. Software is a tool; it shouldn't have a self. (Unless you're using Smalltalk) -- SunirShah ---- See also SelfOrganizingSoftware Anything that is organic is one with nature, and hence its will always reman compatiable with nature