114
taining to that document. A VTML server registers and assigns final version numbers, main-
tains the shared state (consisting of a representation of allversions), and integrates the
changes submitted by collaborators.
There are three important varieties of external change, external insertions,external dele-
tionsandusrops. External insertions indicate a version in which the change takes effect, a
location (in the form of a base version and an offset), and a string of bytes to be inserted at
that location. External deletions consist of two addresses delimited a range to be deleted in
the deletion’s version.
The usrop declarations in a VTML file provide VTML’s change orientation, by specifying
additional changes to be explicitly included in, or removed from, any version in which they
apply. Usrop tags provide the ability to construct arbitrary versions from individual changes.
VTML imposes a constraint similar to Palimpsest’s notion of causal consistency. An insertion
that is added to a base version only takes effect if the context in which that insertion was
inserted is also part of the result version.
The second portion of a Palimpsest file consists of internal changes, stored in sequence
just like the address space of a change set containing only insert and delete operations. Each
insertion operation is represented by two tags that open and close its region of effect. All
data inserted by that change appears anywhere between its tags. Insertions may nest arbi-
trarily. Deletions are also represented by start- and end-tags, but they are not constrained
by any nesting requirement as insertions are. The tags of deletions are co-indexed by the
value of their change ID attributes.
A very short example VTML file is shown in Figure 6.1. It represents a file with 4 ver-
sions. Version 0.0 is a null version created by my prototype VTML editor when the file itself
was created. Version 1.0 contains the text “This is a simple example.” There are two succes-
sor versions to version 1.0. Version 2.0 was created first and numerically succeeds version
1.0. Change 2 of version 2.0 is a deletion that removes the word “simple” from the text.
taining to that document. A VTML server registers and assigns final version numbers, main-
tains the shared state (consisting of a representation of allversions), and integrates the
changes submitted by collaborators.
There are three important varieties of external change, external insertions,external dele-
tionsandusrops. External insertions indicate a version in which the change takes effect, a
location (in the form of a base version and an offset), and a string of bytes to be inserted at
that location. External deletions consist of two addresses delimited a range to be deleted in
the deletion’s version.
The usrop declarations in a VTML file provide VTML’s change orientation, by specifying
additional changes to be explicitly included in, or removed from, any version in which they
apply. Usrop tags provide the ability to construct arbitrary versions from individual changes.
VTML imposes a constraint similar to Palimpsest’s notion of causal consistency. An insertion
that is added to a base version only takes effect if the context in which that insertion was
inserted is also part of the result version.
The second portion of a Palimpsest file consists of internal changes, stored in sequence
just like the address space of a change set containing only insert and delete operations. Each
insertion operation is represented by two tags that open and close its region of effect. All
data inserted by that change appears anywhere between its tags. Insertions may nest arbi-
trarily. Deletions are also represented by start- and end-tags, but they are not constrained
by any nesting requirement as insertions are. The tags of deletions are co-indexed by the
value of their change ID attributes.
A very short example VTML file is shown in Figure 6.1. It represents a file with 4 ver-
sions. Version 0.0 is a null version created by my prototype VTML editor when the file itself
was created. Version 1.0 contains the text “This is a simple example.” There are two succes-
sor versions to version 1.0. Version 2.0 was created first and numerically succeeds version
1.0. Change 2 of version 2.0 is a deletion that removes the word “simple” from the text.