ibdknox
11/01/2019, 11:09 PMibdknox
11/01/2019, 11:11 PMibdknox
11/01/2019, 11:12 PMibdknox
11/01/2019, 11:13 PMGarth Goldwater
11/02/2019, 5:07 AMGarth Goldwater
11/02/2019, 5:08 AMGarth Goldwater
11/02/2019, 5:11 AMogadaki
11/02/2019, 8:14 AMDuncan Cragg
11/02/2019, 10:47 AM// actions compute proposals
const proposal = {incrementBy: 1}
// the model accepts, partially accepts or rejects the proposals
model.accept(proposal)
// compute the new state representation
.then(state => representation(state))
// share the state representation
.then(render)
The corollary in the Object Network architecture is what I call "Functional Observer" - the state of an object is a function of its current state and the state of peer objects observed through links.
So peer objects can "propose" changes but it's up to the target whether or not to change state. I call proposals "intentions": when there's an intention of an object on another - simply by virtue of its current state - it puts the system "in tension" (see what I did thar? 😄 ) and this tension only resolves when either the intention state is abandoned or the target does something to its own state to react to it.
That is a robust model as there are no ephemeral "actions" or messages, just a global state where things are settled or waiting to settle, thus giving eventual consistency and emergent behaviour from local rules.