\begindata{text,538422168}
\textdsversion{12}
\template{default}
\define{footnote

attr:[Flags OverBar Int Set]
attr:[FontSize PreviousFontSize Point -2]}
\formatnote{.ds CT

.ds CB - VII-\\\\n(PN -}

\majorheading{

Design of an ATK Joint Editing Dataobject

}

Michael Kedem                                 

University of Ottawa              

Electrical Engineering, MCRlab

770 King Edward Ave.

Ottawa, ONT K1N 6N5

michael@shamin.genie.uottawa.ca


(613)-564-9911


\majorheading{Abstract


}The ATK -supplied ez editor provides the capability to simultaneously edit a 
text object from multiple windows. This has the disadvantage of no software 
protocol to prevent "wars".


In this paper I suggest an architecture consisting of a modified \italic{text 
}object, which allows joint editing with user-initiated locking and commiting 
of text portions.

Reserving/Commiting a text portion is achieved by deleting the text, then 
reinserting it as a modified\italic{ note} object. Only the user reserving the 
text will be able to modify it. The textview will be set to READONLY.


\begindata{bp,537422272}
\enddata{bp,537422272}
\view{bpv,537422272,26,0,0}
\majorheading{Paper Outline


}\majorheading{Prologue - An Analysis of an ez editing session as a 
conferencing facility}\majorheading{

}\section{
}In the following section, I will give an analysis of an ez session, as an 
introduction to the facilities I propose to supply with the \italic{Joint 
Editing }dataobject.


(For those of you who haven't tried it yet - hitting ^U^X2 opens an additional 
window, with the contents of the curent buffer, allowing real-time joint 
editing  by multiple users)


\heading{The text  dataobject as an Active Value}\subsection{


}The contents of the text buffer are an active value - whenever it is modified 
by any of the parties,  an action is initiated, which updates the other 
parties' windows.


\heading{WYSIWIS}\subsection{


}Whenever a user modifies the text,  other users see the same thing on their 
screens.


\heading{Telepointing and remote cursors}\subsection{


}There is \bold{no }telepointing involved.


\heading{Coupling of views and objects}\subsection{


}value coupling -There is strict coupling with a grain size of one character.

There is no mechanism for declaring a  partial modification to the object. 


view coupling- there is no coupling between different views (i.e. scrolling or 
sizing is not coupled)


menu and command coupling - there is no coupling between different windows


\begindata{bp,537422336}
\enddata{bp,537422336}
\view{bpv,537422336,27,0,0}
\chapter{The Joint Editing dataobject - Functionality}\chapter{


}The \italic{jtext }object will allow each participant to reserve a portion of 
the text,  modify it, and finally, commit the changes.  The text document 
itself will be protected from modification by declaring it as READONLY.  An 
\italic{unreserve }action will dispose of the modified text and resinsert the 
original contents. Occasionally, the person editing the portion of text will 
display \italic{uncommitted modifications }to the document, by choosing 
the\italic{ post uncommited changes} menu option.


Once a portion of text has been reserved, it is deleted from the document and 
reinserted as a modified \italic{note} 
dataobject.\footnote{\
\begindata{fnote,538501640}
\textdsversion{12}
the note dataobject was submitted by the turnin development group.\
\enddata{fnote,538501640}
\view{fnotev,538501640,28,0,0}}


The \italic{note }dataobject will be subclassed, so that only the person 
reserving the text it will be able to modify it. Other participants will see 
either an icon, which indicates the existence of a reserved portion, or the 
last uncommited changes, with the title "uncommited".


\section{Editing  Multimedia documents}\subsection{


}Any inset which is within the scope of a reserved portion of the document 
will be treated as a single unit - that is, once a new inset is created, it 
can only be edited by one participant. 

\begindata{bp,537422400}
\enddata{bp,537422400}
\view{bpv,537422400,29,0,0}
\chapter{Architecture of the Joint Editing Session}\chapter{


}The editing session is \bold{centralized} - i.e., there is no distributed 
computing involved. This can cause  real-time response to deteriorate as 
propagation time increases.\chapter{

}

\begindata{zip,538501896}
%ViewWidth 512
%ViewHeight 512
*D;-1000,1400
N8.5X11
>-1000,1400
*G;-600,900
>800,100
*G;-1200,-200
>-800,-600
*G;-500,-200
>-100,-600
*G;200,-200
>600,-600
*G;800,-200
>1200,-600
*O;200,100
>1000,-200
*O;100,100
>400,-200
*O;-200,100
>-300,-200
*O;-400,100
>-1000,-200
*A;200,600
Fandy22
TEZ Session
MCM
*A;-1000,-400
TUser
MCM
*A;-300,-400
TUser
MCM
*A;400,-400
TUser
MCM
*A;1000,-400
TUser
MCM

\enddata{zip,538501896}
\view{zipview,538501896,30,0,0}
\begindata{bp,537423232}
\enddata{bp,537423232}
\view{bpv,537423232,31,0,0}\chapter{
Object Hierarchy of the Objects Involved}


\begindata{zip,538502152}
%ViewWidth 782
%ViewHeight 467
*D;-1000,1400
N8.5X11
>-1000,1400
*G;-1100,1000
>-500,600
*G;-1100,400
>-500,0
*A;-800,200
Fandy14
Tjtext
MCM
*A;-800,800
Fandy14
Ttext
MCM
*C;-800,600
>-800,400
*G;200,1000
>800,600
*A;500,800
Fandy14
Tnote
MCM
*G;200,400
>800,0
*A;500,200
Fandy14
Tjnote
MCM
*C;500,600
>500,400
*A;-143,-528
TAlong with the corresponding views...
MCM

\enddata{zip,538502152}
\view{zipview,538502152,32,784,469}
\begindata{bp,538730504}
\enddata{bp,538730504}
\view{bpv,538730504,33,0,0}\subsection{\chapter{
}}\chapter{Implementation Details }\subsection{

 }


design issues...


\section{ textview}

\paragraph{
}\subsection{Overridden or New Methods:

}
InitializeObject

ReserveSelection


\subsection{Additional Data:

}

\section{ note/noteview}


\subsection{Overridden or New Methods:}\paragraph{

}
InitializeObject  - define new icon

DrawOpen -  will draw current or uncommited text, depending on the user


Commit - will self-anihilate (?)

Unreserve -  will self-anihilate (?) 

SubmitUncommited


Read

Write



\subsection{Additional Data:


}OriginalText

UncommitedText

ReservedBy\subsection{

}
\begindata{bp,538730568}
\enddata{bp,538730568}
\view{bpv,538730568,34,0,0}\subsection{\chapter{
}}\chapter{Enhancements for a Closer coupling}\subsection{\chapter{


}}\section{View Coupling}\subsection{


}Scroll Coupling - Scrolling one participant's window would cause other views 
to scroll as well. 


Implementation issues.\subsection{


}\section{Menu Coupling}\subsection{


}Selecting a menu option in one participant's window would cause same menu 
option to be selected in other participants' windows.\subsection{


}\section{Cursor Coupling}\subsection{


}Cursors in different participants' views would be synchronized. 


Implementation issues.

\begindata{bp,538730632}
\enddata{bp,538730632}
\view{bpv,538730632,35,0,0}
\chapter{A Distributed Joint Editing Architecture

}
\section{Advantages of a Distributed Architecture


}Real-time response in a centralized system is dependent on the propagation 
time between the user and the host. In a distributed system, the lock database 
would be distributed, and text editing would be local.


Distributing the lock database would result in a shorter response time for 
reserving a portion of a document. Local text editing of the reserved portion 
would only require communication with the central host when commiting or 
submitting a reserved paragraph.

\begindata{bp,538730696}
\enddata{bp,538730696}
\view{bpv,538730696,36,0,0}
\section{The Architecture}

\chapter{\section{\section{	
\begindata{zip,538502408}
%ViewWidth 512
%ViewHeight 512
*D;-1000,1400
N8.5X11
>-1000,1400
*G;-1100,-300
>-600,-600
*G;-400,-300
>100,-600
*G;300,-300
>800,-600
*G;-500,900
>300,600
*A;-900,-400
Fandy10
TEZ Session
MCM
*A;-200,-400
Fandy10
TEZ Session
MCM
*A;500,-400
Fandy10
TEZ Session
MCM
*G;-1100,400
>-600,0
*G;-400,400
>100,0
*G;300,400
>800,0
*A;-900,300
Fandy10
TConference \nAgent
MCM
*A;-200,300
Fandy10
TConference \nAgent
MCM
*A;500,300
Fandy10
TConference \nAgent
MCM
*A;-100,800
Fandy10
TConference\nManager
MCM
*O;-100,600
>500,400
*O;-100,600
>-200,400
*O;-200,600
>-900,400
*O;-900,0
>-900,-300
*O;500,0
>500,-300
*O;-200,0
>-200,-300

\enddata{zip,538502408}
\view{zipview,538502408,52,0,0}

}}}
\section{The Environment


}The Conference Agent supplies the editor with the following services:


Reserve a text range

Unreserve 

Commit Change

Post Uncommited Change

Read File

\begindata{bp,538731720}
\enddata{bp,538731720}
\view{bpv,538731720,38,0,0}
\section{Implementation Details



}Reserving text:


Locally: READ/WRITE note inserted.


Globally:  Text is deleted. READONLY note inserted. Contents of text inserted 
into note.


Commiting/Submitting/Unreserving text


Locally:  textview sends the Current/Original text to the Conferencing Agent.

Globally: Note contents are updated. Delete note when Commiting/Unreserving.


\bold{Other details not yet worked out...}\section{



}\
\begindata{bp,538731784}
\enddata{bp,538731784}
\view{bpv,538731784,39,0,0}
\section{ textview}

\paragraph{
}\subsection{Overridden or New Methods:

}
InitializeObject

ReserveSelection


\subsection{Additional Data:

}

\section{ note/noteview}


\subsection{Overridden or New Methods:}\paragraph{

}
InitializeObject  - define new icon

DrawOpen 


Commit 

Unreserve 

SubmitUncommited


Read

Write



\subsection{Additional Data:


}OriginalText

UncommitedText

ReservedBy\
\enddata{text,538422168}
