Friday, January 06, 2006

Terminology upgrade: “Recursively non-rival”

Matrioshka
I defined the term “doubly non-rival” in Knowledge as a factor of production: software has this curious property that it not only has non-rival knowledge as its input (the know-how of its programmers), but the product itself is non-rival, too.

This is important because one can easily create a chain of software products, one nested inside the other. In contrast, rivalrous physical “if I have it, you can’t have it” products cannot be infinitely composed, one within the other. Software is built by indefinite accretion, as demonstrated in the constant “wrapping” of old code components in new interfaces. A physical product can contain thousands of ideas, but its size is limited. If one can’t use one of its components (let’s say because of a patent infringement claim), it relatively easy to substitute another. The dependencies in software products are much more complex; see eg Software project management: an Innately Hard Problem.

I’m grateful to Peter Rinearson for suggesting a better term: “recursively non-rival”. This more accurately captures the combinatoric accretion of knowledge in software.