From: Tomas Frydrych (tomas@frydrych.uklinux.net)
Date: Fri May 17 2002 - 08:52:08 EDT
Hi Paul,
> 2. More importantly, how would you handle the "deletion" screw case?
> Say we have two successive modifications to a given draft:
What about adding two separate attributes (not properties;
properties are not suitable for this) revision-add and revision-
remove. Any text marked with revision-add would be displayed in a
revision-assigned colour, and revision-remove would also be
displayed using strike-through, as Word does.
To handle multiple revisions, the revision attributes would not be
the name of the author per se, but rather a numerical ID that would
capture the sequence of the revisions, and somewhere in the
header we would store an id->author mapping, so that a single
author could create multiple revisions (I am sure that you, Paul,
would not want to be limited to a single revision of any AbiWord
press releases, right?). We would then display the person as well
as the revision number in the UI, so that the viewer could see not
only who changed the document, but who felt it necessary to do it
serveral times :-).
The way you avoid conflicts of the type "I mark it as deleted and
you put it back in", is that, while in the revisions mode, you do not
allow a text marked as to be deleted to be un-marked, instead the
person who wants it back would have to retype it. A change of
property, say from italics to bold, would be represented as
{<revision-remove>the italics stuff</><revision-add>the bold
stuff</>}.
In the situation where I add something and you want the addition
out, the text would carry both revision-add and revision-remove
attributes with different id's, the latter higher than the former (the
strike through line would than be in different colour that the colour
of the addition). Since once the text has been marked with revision-
remove, it could not be remarked with another revision-add, this
does not pose any problems. If I do not like your removal of my
addition, I will have to type it in again, and we start all over.
The cool thing about this would be that the viewer could then select
the state of the document in a particular revision, say selecting
revision 3, by Paul Rohr; this would hide all stuff marked with
revision-* > 3, whether added or deleted, and everying marked with
revision-remove for IDs <= 3.
the bottom line: you have four possible types of text in a revised
document (1) unmodified; (2) added; (3) removed; (4) addition
subsequently removed. Consequently you need a system that can
represent 4 separate values, using two attributes is ideal for this
(#1 both absent, #2 & #3 1 present, #4 both present).
Tomas
This archive was generated by hypermail 2.1.4 : Fri May 17 2002 - 09:00:54 EDT