Presentation is loading. Please wait.

Presentation is loading. Please wait.

Advanced Collaboration SC Generic Change Tracking Proposal.

Similar presentations


Presentation on theme: "Advanced Collaboration SC Generic Change Tracking Proposal."— Presentation transcript:

1 Advanced Collaboration SC Generic Change Tracking Proposal

2 Tristan Mitchell - DeltaXML Ltd2 / Track Changes Proposal ● Focus on change tracking rather than real-time collaboration ● Generic approach for XML ● Document-centric constructs ● Content takes precedence over structure ● Change Transactions define changes ● May include multiple atomic changes ● Validity of change based on pre- and post- change state

3 Tristan Mitchell - DeltaXML Ltd3 / Level 1 Changes ● Minimum requirement for tracking all changes ● Not always an optimal change representation ● Insert with content ● Remove with content ● Attribute insertion/deletion/modification ● Text insertion

4 Tristan Mitchell - DeltaXML Ltd4 / Level 2 Changes ● Enable a more optimal representation for changes ● More suited to certain document editing scenarios ● Insert around content ● Remove leaving content ● Split ● Merge ● Also move, change element

5 Tristan Mitchell - DeltaXML Ltd5 / Change Transactions ● First child of document body content (e.g. office:text, office:spreadsheet) ● Similar to current text:changed- region elements ● Uniquely identified by a change-id ● Document order is significant ● Potential for metadata to be added as part of change info ● Optional change transaction grouping as an unordered set (shown to the right) or as an ordered stack Tristan 2010-06-02T12:36:05 Robin 2010-06-02T15:48:01 Robin 2010-06-02T15:48:01 Robin 2010-06-02T15:48:01 Global edit

6 Tristan Mitchell - DeltaXML Ltd6 / Level 1: Insert With Content ● Insertion of a new element ● Insertion type is “insert-with- content” ● The whole subtree should be considered as inserted ● The subtree may contain changes but they must all be made after the insertion ● An element may only be inserted once <text:p delta:insertion-type="insert-with-content" delta:insertion-change-idref='ct1234'> This paragraph is inserted.

7 Tristan Mitchell - DeltaXML Ltd7 / Level 1: Remove With Content (1) ● Removal of an element ● The whole subtree should be considered as removed ● This construct may need to be moved out of context to comply with the current specification in regard to paragraph content ● An element may only be removed once ● If an element is marked as inserted and removed, the removal must occur after the insertion ● No subsequent changes may be made to a removed element This paragraph is deleted. <text:p delta:insertion-type="insert-with-content" delta:insertion-change-idref='ct1234'> This paragraph is added then later deleted.

8 Tristan Mitchell - DeltaXML Ltd8 / Level 1: Remove With Content (2) ● The same removal construct can be used to mark removed text or mixed content ● All content under the wrapper element should be considered as removed How text is deleted or removed from a paragraph. How text is deleted or removed like this from a paragraph.

9 Tristan Mitchell - DeltaXML Ltd9 / Level 1: Attribute Changes ● Attribute changes are marked by encoded attributes. The attribute value consists of: ● ct-id,change-type,att- name,value ● Value is not included for attribute insertion as it is redundant ● It is technically possible to insert, modify and remove the same attribute multiple times <text:p text:style-name="Standard" text:outline-level="3" ac:change001="ct1,insert,text:outline-level"> How an attribute is added <text:p text:style-name="Standard" ac:change001="ct1,remove,text:outline-level,3"> How an attribute is deleted <text:p text:style-name="Code" ac:change001="ct1,modify,text:style-name,Standard"> The style on the paragraph will be changed.

10 Tristan Mitchell - DeltaXML Ltd10 / Level 1: Text Insertion ● Text insertion is surrounded by start and end markers ● The start and end markers are linked with a unique id and idref ● Although similar to current markup, they are not quite the same ● At the time of creation, start/end markers must be siblings of each other i.e. they must not span across XML hierarchy How text is <delta:inserted-text-start delta:inserted-text-id="it632507360" delta:insertion-change-idref="ct1"/> very easily <delta:inserted-text-end delta:inserted-text-idref="it632507360"/>added.

11 Tristan Mitchell - DeltaXML Ltd11 / Level 2: Insert Around Content ● Document editing often involves creating structure around existing text ● While level 1 constructs could be used, this would lead to the removal and reinsertion of the text ● A more optimal solution is to mark the new structure as “insert- around-content” ● Content within the subtree should not be considered inserted This text will be made <text:span delta:insertion-type="insert-around-content" delta:insertion-change-idref="ct1234" text:style-name="bold-style">bold. This text will be made bold.

12 Tristan Mitchell - DeltaXML Ltd12 / Level 2: Remove Leaving Content ● Used to remove levels of structure without removing its content ● The element being removed and its attributes are wrapped in the start element ● The end element marks where the original element ended ● The remaining content moves up a level in the hierarchy ● The start and end markers are linked with a unique id and idref This text will be made <delta:remove-leaving-content-start delta:removal-change-idref="ct345" delta:end-element-idref="ee888"> unbold <delta:remove-leaving-content-end delta:end-element-id="ee888"/>.

13 Tristan Mitchell - DeltaXML Ltd13 / Level 2: Split ● Most common example of a split is pressing carriage return within a paragraph ● Often no textual changes ● The split source is identified by a unique id ● The split target references the split source and has an insertion type of “split” ● An element can be split multiple times i.e. it is the split source for more than one split. It gets a new split id each time This paragraph will be split into two. This will be in the second paragraph. This paragraph will be split into two. <text:p delta:insertion-type="split" delta:insertion-change-idref="ct1" delta:split-id="sp1"> This will be in the second paragraph.

14 Tristan Mitchell - DeltaXML Ltd14 / Level 2: Merge (1) ● Opposite of a split ● Merged elements must be siblings ● Content may or may not be deleted as part of the merge. Content deletion is shown using the child elements of the merge ● The structure being removed is shown in the trailing-partial-content element even when no content is removed. ● The element in trailing-partial- content need not be the same type as the one that encloses a merge but problems could occur if they have different content models These paragraphs will be merged into one. This was in the second paragraph. These paragraphs will be merged into one. This was in the second paragraph.

15 Tristan Mitchell - DeltaXML Ltd15 / Level 2: Merge (2) Here is a paragraph which was split in two by a table. [this bit of text is deleted] T1 T2 [this is also deleted] It was split before this. Here is a paragraph which was split in two by a table. [this bit of text is deleted]... [this is also deleted] It was split before this.

16 Tristan Mitchell - DeltaXML Ltd16 / Level 2: Move ● Moved items are still removed and inserted ● The move is identified by a move id and idref ● The move information is essentially just metadata on a normal removal and insertion ● All history stays on the removed moved source ● The newly inserted move target has no history associated other than through the move idref This paragraph will be moved. This is the heading for the paragraph <delta:removed-content delta:removal-change-idref="ct123" delta:move-id="mv33"> This paragraph will be moved. This is the heading for the paragraph <text:p delta:insertion-type="insert-with-content" delta:move-idref="mv33" delta:insertion-change-idref="ct123"> This paragraph will be moved.

17 Tristan Mitchell - DeltaXML Ltd17 / Level 2: Change Element Type <delta:remove-leaving-content-start delta:removal-change-idref="ct1234" delta:end-element-idref="ee888"> <text:h delta:insertion-type="insert-around-content" delta:insertion-change-idref="ct1234"> What are the ground rules? <delta:remove-leaving-content-end delta:end-element-id="ee888"/> What are the ground rules? What are the ground rules? ● A common use case for this is to change a paragraph into a heading ● No special construct for this ● The level 2 removal and insertion constructs can be used to ensure that content remains unchanged ● When reverting this change, the insertion and removal should be treated as a single change

18 Tristan Mitchell - DeltaXML Ltd18 / Issues Raised ● Deletions should not be inline ● Simple to fix, deletions can be 'cached' and markers inserted inline similar to current syntax ● Implementation seems difficult ● Two partial implementations so far (plus DeltaXML sandbox) ● Mapping of editing operations onto proposed syntax ● Can be achieved with change transaction metadata ● Syntax rules for each operation could be defined ● Syntax too flexible ● Need to consider best practices

19 Tristan Mitchell - DeltaXML Ltd19 / Benefits ● Generic representation of change ● Concise vocabulary to represent all change types. ● Editing operations can be mapped to change transactions using metadata ● Covers all of ODF, not just ODT ● 'Future-proof' - same vocabulary can be used for new ODF features ● Unambiguous representation of change ● Pre- and post-change versions of a document can be precisely reconstructed ● Structural changes do not force text content changes

20 Tristan Mitchell - DeltaXML Ltd20 / Questions Any questions?


Download ppt "Advanced Collaboration SC Generic Change Tracking Proposal."

Similar presentations


Ads by Google