Radical Object-Orientation #0A: Objects are Compositions
Building a Whole from Complementary Parts
We began with an intuitive understanding of objects as entities engaged in activities, akin to biological cells, where "activity" refers to the processing of messages and potential changes in state, either internally or externally. We presumed these objects were inherently present and interconnected in a meaningful manner, despite not being directly aware of each other. This concept is known as "mutual oblivion" in Radical Object-Orientation.
However, it became clear that linking these objects could not be left to random processes, such as evolution, but required deliberate design. This responsibility is recognized as integration within Radical Object-Orientation.
Further exploration revealed that integrations themselves resemble objects: they, too, transform messages. This suggests that objects can be embedded within other objects, creating a nested structure. This notion is intriguing and practical, yet somewhat strange. Biological cells cannot be nested within each other, can they. Alan Kay’s idea has to be expanded.
Therefore, I propose the introduction of a new term: composition. While I have previously used this term, it was not in a systematic manner. Nevertheless, I believe it aptly describes the concept of integrations and operations within this context.
What is a composition?
A composition amalgamates complementary functional units to forge a new, higher-level functionality.
In Alan Kay's original vision, where objects were likened to biological cells, composition occurred in two forms:
Objects exist as distinct entities, such as a nerve cell or a muscle cell, each being a composition of unseen elements that together form a functional unit for message processing.
Objects are combined into a larger entity, for example a neuromuscular synapse consisting of a nerve cell and a muscle cell; the neuromuscular synapse is a more complex functional unit; it’s on a higher level of abstraction than its constituents.
Regrettably, the focus of Alan Kay was solely on individual objects, with the collective whole being overlooked and unnamed. This oversight was addressed by the IOSP, which recognized the assembly of objects into a data flow as an integration.
However, integrations can be deeply nested. At the foundational level, they incorporate objects, but at higher levels, they combine not just objects but other integrations. From an external viewpoint, these integrations are indistinguishable from the initial objects, leading to the suggestion of a unifying term: composition.
And this leads to the concept of "compositions all the way down," with compositions forming from other compositions. The terminal elements of this compositional hierarchy are termed operations, while the connecting nodes are integrations.
For integrations, it's clear they consist of other integrations and operations.
But what constitutes operations or the original objects?
They are composed of "stuff" responsible for state changes and transformations, possessing an atomic nature unlike the structured biological cells. This "stuff" lacks a relevant structure for our purposes. While we cannot alter this fundamental "stuff," we can design and construct objects aka operations from it.
The specifics of this "stuff" within a composition tree's operations will be discussed later. It's quite straightforward in programming terms.
For now, it suffices to say:
Radical Object-Oriented programming forms a deep, compositional hierarchy.
Intermediate nodes, termed integrations, assemble either other integrations or operations into a data flow.
Terminal nodes, known as operations, combine "stuff" into a control flow.
To reiterate: The elements combined, whether into data or control flows, are complementary and distinct, like puzzle pieces. This is what elevates the whole above the sum of its parts, creating something novel not inherent in the individual components but emerging from creative problem-solving and design. You play the role of the intelligent designer.


