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