Continuing the "gray goo in an artificial reality" discussion.
So what are the scarce resources in a computational substrate? These will be the points of competition. Plan ahead, since competition will be fierce!
Computational cycles will be an obvious one. Thinking back on Stross' Accelerando and the constant mentions of computronium, I realize there's a lot of implied protocols in place. Rogue code isn't sucking up the cycles to the point where the protagonists starve, so something is enforcing a degree of timesharing, or authentication. Presumably there are layers upon layers of negotiating protocols. I can imagine squirting you an expert negotiator that is given a fixed number of computations to convince your expert negotiator that you should lend me some CPU cycles.
Rogue consumers of computational cycles might be termed "cyclovores" or some other catchy name. What else is scarce? What entities might make use of these ecological niches?
- Cycles - definitely bounded
- Prioritized cycles - e.g. being guaranteed a few cycles per second (vs. more cycles but with less reliability) might be a valuable niche
- Storage, at various latencies, bandwidths, and capacities - today there are various types of storage with a spectrum of latencies- registers, cache, memory, flash memory, disk, network, tape, dead tree, etc. Each is a different niche to exploit; for example squatting on the crux point of high latency/high bandwidth means you get a bursty behavior; you can out-compete some entities by sacrificing latency.
- Synchronization points - for example, piggybacking your cycles on an external event. If you're shipping googolbits of information between Earth and Mars, only doing active processing on the bits when Mars is in opposition is an advantage.
- Sizes - small is often better. Small is easier to grow, move and replicate. It's also more fragile. Compare with biology; bacteria are wildly successful, but we prefer having a little more mental ability as big bulky humans.
- Namespaces - any shared systems have to agree on certain conventions. Usually there is some value to particular names, whether for emotional reasons ("fun.com") or because the names are used by particular systems (e.g. "System.Text"). By grabbing slots in a namespace you can disrupt other systems since you impede their communication.