Nt, its data model, and its underlying protocol were all designed to solve one specific task - that of shared text editing. We used general design principles - those of IP multicast, light-weight sessions, and application level framing as starting points. However, the application data model is intended only for text. The data distribution model uses the redundancy achieved through treating a line as an ADU combined with the fact that most successive modifications are to the same line to avoid the need for most retransmissions.
However, the restrictions the data distribution model impose on a data structure consisting of a doubly linked list of application data units can perhaps be generalised somewhat. The imposition of a strict ordering of ADUs, combined with marking deleted ADUs whilst leaving them in position in the ordering, allows the detection of inconsistencies caused by network partitioning in a loose consistency application. It is perhaps not easy to see how this could be applied to other near-synchronous shared applications, so an example is in order.
In nt, the stacking order of blocks of text is a local issue so that overlapping blocks can be simultaneously edited. However, in a shared drawing tool, stacking order must be a global issue, as most drawing tools use overlaying of one object over another to produce a more complicated object. In a shared drawing tool, each drawing object (circle, polygon, rectangle, line, etc) is the drawing equivalent of a line of text. The concept of a block does not exist as such, but instead there is a strict ordering (analogous to line ordering in a block) which is imposed by the stacking order. Thus, the same set of constraints that apply to lines of blocks in nte should also be applied to the stacking order of drawing objects in this hypothetical drawing tool.
The retransmission mechanism used in nte is novel, in that its requirements are perhaps atypical of shared applications because of the wish to exploit redundancy. For many applications, SRM is a more appropriate choice of retransmission mechanism, as, given a stream of packets with sequence numbers, it is likely to be more timely. However, for applications where retransmission is a relatively rare phenomena due to redundancy or other relaxed consistency requirements, and where we desire a sender controlled system, NTE's retransmission scheme has some possible benefits. Its sliding key messages can carry the latest ID and timestamp, which can be used to ensure that partitions are resolved at the earliest opportunity. Although we do not use the property in nt, sliding key schemes can be used to ration retransmission requests - this might be useful where the reverse path from receivers to senders is bandwidth limited.
Next: Distributed Virtual Reality Up: Shared Applications in the Previous: Block Locking Jon CROWCROFT