Differences

This shows you the differences between the selected revision and the current version of the page.

uf:guanotes 2008/09/29 13:41 uf:guanotes 2009/11/18 15:12 current
Line 5: Line 5:
Guanotes application allows flockrs to post notes, called guanotes, to the ambient ( i.e any device available in the surroundings ranging from other flockr device to devices installed on public places such as KK). This is a concept similar to Stickies application in Mac but guanotes can hop from one device to another.  Guanotes application allows flockrs to post notes, called guanotes, to the ambient ( i.e any device available in the surroundings ranging from other flockr device to devices installed on public places such as KK). This is a concept similar to Stickies application in Mac but guanotes can hop from one device to another. 
-Flockrs can thus discover other flockrs guanotes, store them and exchange them later with other flockrs such that guanotes can be percolated through the entire Urbiflock. +Flockrs can thus discover other flockrs guanotes, store them and exchange them later with other flockrs such that guanotes can be 'percolated' through the entire Urbiflock. Percolation of guanotes allows flockrs to receive guanotes offline without relying on infrastructure. In other words, sender and receiver of guanotes do not have to be necessary online to receive a guanote.
-Flockrs can also subscribe to a particular type of guanotes such that they are automatically notified whenever they meet a flockr carrying guanotes of that particular type.+Flockrs can also subscribe to a particular type of guanotes such that they are automatically notified whenever they meet a flockr carrying guanotes of that particular type. Currently, flockrs can subscribe to receive guanotes sent to a particular flock. This functionality is reminiscent to the subscription to a mailing list.
Another idea is that flockrs can stop the percolation of guanotes. For example, if a flockr detects that a spam guanote or a guanote with unapropiate content, it could stop its propagation. Another idea is that flockrs can stop the percolation of guanotes. For example, if a flockr detects that a spam guanote or a guanote with unapropiate content, it could stop its propagation.
-==== Design ====+==== What is a guanote?  ====
-To implement Guanotes, we are going to reuse the concepts developed by [[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.19.9742|TOTA]]. This could be combined with the RETE engine we built for the proximities, in the future to reason about multiple tuples. +A guanote consists of a message and a receiver list (a flock or individual flockrs). Guanotes keeps track of the connected flockrs which are running the application. Guanotes applications communicate with each other (by means of the [[:uf:totam|TOTAM]] middleware) to interchange the guanotes they carry. A guanote is propagated to another device only if a flockr belongs to the receiver list. A guanote is thus propagated through the network hopping from device to device in order to ensure that it gets received by all the targeted flockrs. 
 +In order to avoid flooding the network, [[:uf:totam|TOTAM]] ensures that only flockrs belonging to the receiver list are used as //routers// (so that only potential targeted flockrs carry guanotes).
-The idea is to build a framework similar to TOTA, called AmbientTOTA, to be able to exchange and percolate guanotes. So, we will instantiate our AmbientTota with Guanotes objects. A guanote actually extends tuple objects with some flockr-dependent behaviour.+A guanote can be sent to a flock or an explicit collection of flockrs. In the later case end users can enumerate the targeted flockrs in the receiver list or take a snapshot of a flock. It is important to note that if the receiver is a flock, the guanote dynamically recomputes the flock definition at every device to which it gets propagated to determine the targeted flockrs. If the receiver is the snapshot of a flock, the guanote directly contains the list of targeted flockrs.
-Here comes the primitive operations to interact with the AmbientTota framework:+==== Usage Scenario ====
-<code> +{{:uf:guanotes_scenario.png?475x300|:uf:guanotes_scenario.png}}
-//publishes a tuple into the ambient ( ~ inject in TOTA) +
-def inject(tuple) { +
-  export: tuple as: Tuple +
-};+
-// places a listener on to the local TS ( ~ subscribe in TOTA) +The above figure illustrates the propagation of a guanote in a campus-based scenario. It shows six flockrs connected in Urbiflock and running the Guanotes application. The communication range of their devices is depicted with a dotted line while the colored dot on their devices denotes the gender of the flockr (pink for girls, blue for males, and grey if the gender is not set in the flockr's profile). In particular, the figure shows how a "hallo" guanote is sent by Elisa to the //nearbyMaleFlock// (defined as all nearby male flockrs). This guanote is transitively propagated until all connected flockrs belonging to the nearbyMaleFlock are reached. The guanote is not propagated to flockrs that do not adhere to the definition of nearbyMaleFlock. The guanote is first propagated to Stijn and then to Wolf. Elisa's device is in communication range of two devices (corresponding to a female flockr and Stijn), but since the guanote is only meant for male nearby flockrs, it is only propagated to Stijn. Similarly, Stijn's device is nearby to Elisa, Wolf and a female flockr, but it only propagates the guanote to Wolf. It is important to note that Wolf receives the "hallo" guanote without being in direct communication range of Elisa's device.
-// it returns a publication object to be able to unsusbscribe  +
-when: template matches:{ | tuple | +
-   +
-+
- +
-//Templates are currently boolean expressions on tuples.  +
-Example of template applied to guanotes: +
-{ |guanote|  guanote.flock == "KK" +
-</code> +
- +
-A tuple in our system is just the object contained in a local TS offering the following API to propagate itself:  +
- +
-<code> +
-// called in every tuple at pass()  +
-def decidePropagation() -> boolean +
-// specifies operations on the local TS +
-def doAction ()+
-// specifies operations on the tuple itself  +
-def changeTupleContent() -> tuple +
-// if true -> note gets added to local TS +
-def decideStore () -> boolean +
-// if true -> tuple gets unexported and deleted from local TS. +
-//new operation not in TOTA +
-def decideDie() -> boolean  +
-</code> +
- +
-decideDie() is there for discontinuous decidePropagation functions. for example, tuples that should be only propagated every Tuesday could not implemented with TOTA because the propagation protocol only gets called once. We change this by providing decideDie() that gets called when you decide not to propagate. Like this a tuple can still be propagate at a later point in time, despite the fact that the decidePropagation function has evaluated to false at a certain moment.+
 
 
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki