FOREST: An Interacting Object Network

Duncan Cragg


Set an object's state as a Function of its current state plus the state of other objects it Observes through links.


FOREST is a declarative, concurrent and distributed object architecture. FOREST is an acronym for Functional Observer REST: objects set their state as a Function of their current state plus the state of other objects Observed through links. This observation occurs through either pull or push of linked object state. Such a programming model is declarative in nature, and thus very expressive, as well as being naturally concurrent. It also maps directly to RESTful distribution over HTTP, using GET for pull and POST for push of object state, in both directions between interacting servers. Objects are published into a global interacting Object Network.

Note that this work is earlier than the Object Network, and refers to it as the 'Object Web', as well as being more advanced than the current, simplified, presentation of the Object Network. Even earlier work called it the 'Micro Web'.

FOREST is introduced in this slide deck [ppt] or [pdf]. Then elaborated in more technical detail in this slide deck [ppt] or [pdf].

FOREST is also described a little more formally in a chapter in this book.

FOREST will be programmed in a simple declarative language called Fjord.

FOREST is being coded up in Java as a reference implementation: NetMash. Early days, but there's a couple of examples of objects talking between hosts, which should bring the slides to life. A reference implementation of Fjord will be coded into NetMash, based on the work already done in the Node.js implementation.

NetMash is primarily an Android "Mobile-to-Cloud" platform, where a mobile client is driven by dynamic, server-sourced JSON objects describing apps as GUIs or as other higher-level, "semantic" object types. These types are defined in JSON as Object Network types - having a similar role to HTML5, but with a much greater emphasis and focus on interactive applications and data for mobile. Object Network objects interlink, can be cross-domain, and can be displayed several-at-a-time, nested together. Another major difference is that, being FOREST-backed, Object Network applications are programmed declaratively, and distributed RESTfully.

Contact me and/or subscribe to my blog and/or follow me on Twitter.

Duncan Cragg, 2011
[B112]