Composeable software

From Pelennor

Jump to: navigation, search

The concept of "composeable software" is probably one of the wildest ideas we've imagined thus far. Let us define it as: "automatic wiring together of single-purpose software components to create complex systems." The idea is that little or no "glue code" is required to make these hypothetical components work together. Alternatively, we might say that the glue code actually exists, but it is automatically generated behind the scenes, in response to certain user interactions.

This whole idea may or may not even be possible in the near future, due to raw limitations in current CS research. It seems to go against the modernist view that hierarchy is the unavoidable natural structure of all life, knowledge, and physical processes. (See "Mythical Man-Month," etc.) However, perhaps this "hierarchy barrier" may be overcome once software reaches a high enough level of abstraction. It should be noted that this concept is most definitely not applicable to the variety of software written today or the vast majority of the underlying framework behind ubiquitous computing. "Composeable software" is something which may be pursued after the core architecture is re-invented.

Inspirations:

  • self-organizing nature of the human brain
  • theory that biological evolution may contain complex genetic permutations which cannot be cleanly taxonomized
  • Lego(tm) bricks! :)

Applicable to:

  • Dynamic user interfaces
  • High-level software systems (ie. far above concerns of systems architecture, reliability, scalability, etc.)

Possible interfaces for composition:

  • Logic flow-charts
  • "Patch-bay" wiring concept
  • Physical proximity of simple devices
  • AI processes / self-organization

Examples

  1. Graphical widgets which may be assigned to arbitrary data sources. (clock, gauge, lights, image viewer, 3D hologram, etc.)
  2. Software widgets which may become arbitrary data sources. (GUI controls, voice recognition, etc.)
  3. Hardware widgets which may become arbitrary data sources. (toggle switch, thermometer, camera, etc.)
  4. Dynamic creation of data views and simple data processing (replacement for modern spreadsheets)
  5. Dynamic formatting of textual or multimedia data to arbitrary output methods
Personal tools