15.2.3. A synchronisation principle: passing on

Consider the user graph (with a non-user role R) in Figure 2. When the left user modifies R, he can send the change to the middle user, but not to the right user. But the right user has a perspective on R, too, so should receive the deltas. As we do not wish to add a perspective from left to right, we need another principle in synchronisation. This we call passing on. The middle user should pass the deltas concerning R, on to the right user.

Remark: a user graph is defined on the type level. However, in the examples we will occasionally treat the graph as if the nodes were instances rather than types. To avoid the tedious distinction between a user and his PDR, we will take the liberty of writing that a user sends a change, while meaning his PDR does so.

image

Figure 2. The user graph (top three nodes) is not fully connected. The left user is not directly connected to the right user (also, all arrows are unidirectional). Changes made to R by the left user should be passed on by the middle user to the right user.