This is an old revision of the document!
Urbiflock is a Facebook-like application framework written in AmbientTalk. The framework takes care of managing a user's buddy lists, called “flocks”. Flocks define “proximate” groups of buddies, where “proximate” can mean physically proximate or abstractly proximate (e.g. in terms of being friends of someone). The framework is currently still under development, which is why this page only lists development information thus far.
A flock is defined as a list of references to 'proximate' Flockrs. The definition of 'proximate' is defined by Proximities, which may define proximity in terms of physical distance or in more abstract terms.
Predefined Flocks:
An ad hoc RETE-network. Events are triggered by:
joined(uid,flockr)
/ left(uid,flockr)
changed(uid,flockr,updatedProfile)
friendAdded(uid,flockr)
/ friendRemoved(uid,flockr)
These events are received by the local flockr user object and propagated to all local proximities. Proximities translate these events into addUser / removeUser events to be processed by flocks. To process these events, flocks register themselves on their dependent proximity.
As a first implementation of the RETE-network, maybe we can start from the oo matching that Tom implemented, so that functions are templates. For example:
def flockrTemplate := template: { def name := *; // wildcard, can be anything def age := constraint: { _ < 25 }; // must be younger than 25 def address := template: { def street := *; // any street, but street name must be filled in def city := "Brussel"; // city must equal this string // address may have arbitrary other data }; def greet(); // person must have a greet method } taggedAs: [ Flockr ]; // object must be tagged as a Flockr