fabric‎ > ‎

what is fabric?

posted 4 Feb 2014, 20:27 by John Brown   [ updated 5 Feb 2014, 14:27 ]
Computational fabric is quite different to traditional computer hardware and software. Fabric is grown into an "organic" structure, rather than built into an engineered structure; it is more like ivy than a building. why?

Software is a computational structure with a very clear distinction between the static program, and the dynamic data. The software must not change at runtime, lest it be unpredictable; only the data may change. Fabric is also a computational structure which accepts, manipulates and produces data. However, the entire structure of the fabric is continuously changing for the entire time that the fabric is "running". There is no real distinction between program and data - they are one and the same thing. If a software program is like a network of pipes under a city to direct the flow of water; then fabric is more like a river gouging it's own path in a flood.

A peek under the hood of most software will reveal a very regular hierarchical structure. This is necessary for the software developers to manage the whole complex arrangement. Growing computational fabric most certainly results in a structure; but not like the regular warp and weft of a cotton sheet. The structure forms over time, depending on the flow of data, into an irregular tangle of pathways, each which prove valuable at a point in time. Think of a map of Venice including every alley, bridge, canal, building, floor, stairwell, tide and tour group. Not like Chicago.

Computational fabric will never perform the same computation twice, not only due to the dynamic structure, but mostly because the computation is randomized at every minor juncture. Despite (and because of) the underlying chaos, fabric can pursue an objective. In fact, computational fabric can pursue multiple goals within the same structure, at the same time. Some regions of the fabric will be more involved in one goal or another, but the regions will be inextricably intertwined. Furthermore, inflicting damage to fabric (i.e. by removing a small swatch) will merely reduce overall performance, while the dynamic structure flexes and reforms to overcome the impediment.

Traditional computers can also undertake multiple concurrent tasks, but by a different mechanism. Typically, this is achieved by switching between multiple tasks extremely rapidly, or by combining multiple independent processors to work concurrently on distinct tasks. Alternatively, some complex tasks can be split-up, progressed concurrently, and the results recombined at some later juncture. Traditional computers rarely behave well when arbitrary, small chunks of software or data are removed.

Traditional computers are also pretty particular about how they accept data. If tax data is required for a computation, then supplying temperature data will rarely have a happy outcome. The "meaning" of the data is critical to the correct operation.
Computational fabric will accept a real-time stream of raw data from the environment, without needing to address the "meaning" of the data. To achieve an objective, the fabric will also need to act on the environment, but without any "knowledge" of the action. Fabric will work with the available data and actions to achieve an objective.

Computational fabric is able to be powered by traditional, readily available, computer processors; the more the merrier. Each processor will be fully loaded up with a continuous stream of small computations to perform, as part of a much larger whole. There is no need to coordinate or synchronize multiple processors.

Computational fabric is a dynamic, irregular, non-deterministic, computational structure;
able to pursue multiple goals concurrently;
on a stream of raw, unstructured environment data;
stimulated by one or more, asynchronous, serial computational resources.

Computational fabric is in the early stages of development; much remains to be done to confirm, refine and extend these concepts.