SlideShare a Scribd company logo
1 of 11
Download to read offline
Malte Timmermann – Head of Development OX Documents 
ODF Plugfest 2014 
Operations based ODF editing 
with OX Documents
Bio 
ODF since it’s very beginning 
2 Operations based ODF editing with OX Documents 
• 1991-2011: StarOffice and OpenOffice.org 
❯ From junior developer to senior developer and technical architect 
❯ Focus on text editing, security and accessibility 
❯ Author of Sun’s ODF Plugin for Microsoft Office 
❯ Member OASIS ODF TC, Accessibility SC 
• 2012 – today: OX Documents 
❯ Document editing again – now in the browser 
❯ In the team: 14 former colleagues from the Hamburg OpenOffice.org team 
❯ http://techblog.open-xchange.com/
OX Documents 
Customer Requirements 
3 Operations based ODF editing with OX Documents 
Documents 
Round-trip 
Edit Open Office and Microsoft Office documents (ODF and OOXML). 
View and convert documents in many different formats, including PDF. 
Interoperability with other office products. 
Preserve content and layout of complex documents. 
Work together on shared documents. 
See other‘s people edits – in real-time. 
Edit your documents anywhere. On any device, including mobile. 
In the browser. 
Collaboration 
Availability
OX Documents 
4 
Operations 
• Describe document changes and entire document 
 Examples: insertParagraph, insertText, setAttributes 
• Abstraction of file formats 
• Building block for “Operational Transformation“ (OT) 
• Allow collaborative editing 
• Used in Client-Server communication, could also be 
used for macro recording, scripting, ... 
Key Concept: Operations 
Operations based ODF editing with OX Documents 
Document 
OP 
OP 
OP
Architecture Overview 
5 
OX Text 
App 
OX Text 
Editor 
Lorem ipsum dolor sit 
amet, consectetuer 
adipiscing elit. Aenean 
commodo ligula eget dolor. 
Aenean massa. Cum sociis 
natoque penatibus et magnis dis 
parturient montes, nascetur 
ridiculus mus. Donec quam felis, 
ultricies nec, 
Operations 
DOM 
Manipulations 
Browser 
OX Text 
OSGi 
Document 
Converter 
OpenOffice 
ODF <=> 
Operations 
ODFDOM 
OOXML <=> 
Operations 
DOCX4J 
OX Drive 
> ODF 
< Operations 
ODF / OOXML / Operations / other 
> Non-ODF/OOXML 
< ODF 
Operations 
(JSON) 
Client Server 
> OOXML 
< Operations 
Operations based ODF editing with OX Documents
Operations Processing 
Step 1 – Decomposing the document (on server) 
6 
Lorem ipsum dolor 
sit... 
Duis autem vel eum 
iriure dolor in 
hendrerit… 
Unknown object – will be ignored 
OOXML to Operations 
insertParagraph start:[0] 
insertDrawing start:[1,0] imageUrl:“pic.jpg“, 
width=100, height=100, … 
insertText start:[2,0], text=„Duis autem…“ 
setAttributes start:[2,5] end:[2,10] 
attrs:{fontweight=bold} 
insertText start:[0,0], text:“Lorem ipsum…“ 
insertParagraph start:[1] 
Operations describe how to manipulate the document – including how to build it up from scratch 
insertParagraph start:[2] 
Operations based ODF editing with OX Documents
Operations Processing 
Step 2 – Apply operations to editor (on client) 
7 
<html> 
<p> <p> <p> 
„Lorem…“ <img> „Duis…“ 
insertText 
insertParagraph 
Operations to 
HTML DOM 
The browser will do the layout and the rendering 
Lorem ipsum dolor sit... 
Duis autem vel eum iriure 
dolor in hendrerit… 
insertDrawing 
insertParagraph 
insertText 
insertParagraph 
Operations based ODF editing with OX Documents
Operations Processing 
Step 3 – Edit document in browser (on client) 
8 
• Intercept all events – do not let the browser do any DOM manipulations 
• Create operations for desired document manipulations 
 For mouse/keyboard input as well as for actions triggered in the user interface 
• Apply these operations to HTML DOM 
 The browser will display the updated document 
• Send operations to the server - for persistence and for further distribution 
Lorem ipsum dolor sit... 
Duis autem vel eum iriure 
dolor in hendrerit… 
Ut wisi enim ad minim… 
User Input 
to Operations delete start:[2,5] end:[2,10] 
delete start:[1,0] 
splitParagraph start:[2,42] 
insertText start:[3,0], text:“Ut wisi...“ 
Operations based ODF editing with OX Documents
Operations Processing 
Step 4 – Apply operations to document (on server) 
9 
<XML> 
<p> <p> <p> 
„Lorem…“ „Duis…“ „Ut…“ 
1 delete 
Operations 
to XML DOM 
ODF / OOXML 
• This step is optional (for supporting legacy applications) 
 It would also be possible to just make the operations list persistent 
<p> 
• Duplicate original document, build DOM tree 
• Use only the newly created operations to update the DOM tree 
• Do not touch any DOM nodes that you don‘t understand or don‘t care about, 
so the round-trip is nearly perfect! 
2 delete 
3 splitParagraph 
4 insertText 
2 
3 
1 4 
Unknown object – still there! 
Operations based ODF editing with OX Documents
Operations Processing 
Demonstration in OX App Suite 
10 Operations based ODF editing with OX Documents 
Open Source (like): 
• Backend: GPL2 
• Frontend: CC BY-SA-NC
© 2014 Open-Xchange 
Operations based ODF editing 
with OX Documents

More Related Content

Similar to 2014 12-08 - odf plugfest - operations based odf editing with ox documents

Slides from the NASIG 2018 Preconference
Slides from the NASIG 2018 PreconferenceSlides from the NASIG 2018 Preconference
Slides from the NASIG 2018 PreconferenceTerry Reese
 
MWLUG 2011: The Never Ending Integration Story
MWLUG 2011: The Never Ending Integration StoryMWLUG 2011: The Never Ending Integration Story
MWLUG 2011: The Never Ending Integration StoryJohn Head
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIOliver Busse
 
Office 2007 uof-u4-07
Office 2007 uof-u4-07Office 2007 uof-u4-07
Office 2007 uof-u4-07Vishal Mehta
 
Utilizing the open ntf domino api
Utilizing the open ntf domino apiUtilizing the open ntf domino api
Utilizing the open ntf domino apiOliver Busse
 
node_js.pptx
node_js.pptxnode_js.pptx
node_js.pptxdipen55
 
epicenter2010 Open Xml
epicenter2010   Open Xmlepicenter2010   Open Xml
epicenter2010 Open XmlCraig Murphy
 
BP204 Integration of OpenOffice.org and IBM Lotus Notes and Domino
BP204 Integration of OpenOffice.org and IBM Lotus Notes and Domino BP204 Integration of OpenOffice.org and IBM Lotus Notes and Domino
BP204 Integration of OpenOffice.org and IBM Lotus Notes and Domino John Head
 
ODX (Offloaded Data Transfers)
ODX (Offloaded Data Transfers)ODX (Offloaded Data Transfers)
ODX (Offloaded Data Transfers)Ashwin Pawar
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIOliver Busse
 
JavaScript DOM & event
JavaScript DOM & eventJavaScript DOM & event
JavaScript DOM & eventBorey Lim
 
Office OpenXML: a technical approach for OOo.
Office OpenXML: a technical approach for OOo.Office OpenXML: a technical approach for OOo.
Office OpenXML: a technical approach for OOo.Alexandro Colorado
 
Opw presentation of open office-lgma
Opw presentation of open office-lgmaOpw presentation of open office-lgma
Opw presentation of open office-lgmaOpenSourceLGMA
 
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And DxlBp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxldominion
 
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...Martijn de Jong
 
Node.js: The What, The How and The When
Node.js: The What, The How and The WhenNode.js: The What, The How and The When
Node.js: The What, The How and The WhenFITC
 
TypeScript and SharePoint Framework
TypeScript and SharePoint FrameworkTypeScript and SharePoint Framework
TypeScript and SharePoint FrameworkBob German
 

Similar to 2014 12-08 - odf plugfest - operations based odf editing with ox documents (20)

Bp124
Bp124Bp124
Bp124
 
Slides from the NASIG 2018 Preconference
Slides from the NASIG 2018 PreconferenceSlides from the NASIG 2018 Preconference
Slides from the NASIG 2018 Preconference
 
MWLUG 2011: The Never Ending Integration Story
MWLUG 2011: The Never Ending Integration StoryMWLUG 2011: The Never Ending Integration Story
MWLUG 2011: The Never Ending Integration Story
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
 
Office 2007 uof-u4-07
Office 2007 uof-u4-07Office 2007 uof-u4-07
Office 2007 uof-u4-07
 
XML Performance
XML PerformanceXML Performance
XML Performance
 
Utilizing the open ntf domino api
Utilizing the open ntf domino apiUtilizing the open ntf domino api
Utilizing the open ntf domino api
 
node_js.pptx
node_js.pptxnode_js.pptx
node_js.pptx
 
epicenter2010 Open Xml
epicenter2010   Open Xmlepicenter2010   Open Xml
epicenter2010 Open Xml
 
BP204 Integration of OpenOffice.org and IBM Lotus Notes and Domino
BP204 Integration of OpenOffice.org and IBM Lotus Notes and Domino BP204 Integration of OpenOffice.org and IBM Lotus Notes and Domino
BP204 Integration of OpenOffice.org and IBM Lotus Notes and Domino
 
ODX (Offloaded Data Transfers)
ODX (Offloaded Data Transfers)ODX (Offloaded Data Transfers)
ODX (Offloaded Data Transfers)
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
 
JavaScript DOM & event
JavaScript DOM & eventJavaScript DOM & event
JavaScript DOM & event
 
Office OpenXML: a technical approach for OOo.
Office OpenXML: a technical approach for OOo.Office OpenXML: a technical approach for OOo.
Office OpenXML: a technical approach for OOo.
 
Spreadsheet
SpreadsheetSpreadsheet
Spreadsheet
 
Opw presentation of open office-lgma
Opw presentation of open office-lgmaOpw presentation of open office-lgma
Opw presentation of open office-lgma
 
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And DxlBp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
Bp308 Ibm Lotus Domino Web Facelift Using Ajax And Dxl
 
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...
BP101 - 10 Things to Consider when Developing & Deploying Applications in Lar...
 
Node.js: The What, The How and The When
Node.js: The What, The How and The WhenNode.js: The What, The How and The When
Node.js: The What, The How and The When
 
TypeScript and SharePoint Framework
TypeScript and SharePoint FrameworkTypeScript and SharePoint Framework
TypeScript and SharePoint Framework
 

More from Malte Timmermann

OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)
OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)
OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)Malte Timmermann
 
OpenOffice.org and ODF Accessibility, ABI Workshop 2006
OpenOffice.org and ODF Accessibility, ABI Workshop 2006OpenOffice.org and ODF Accessibility, ABI Workshop 2006
OpenOffice.org and ODF Accessibility, ABI Workshop 2006Malte Timmermann
 
OpenOffice.org Digital Signatures, OOoCon 2004
OpenOffice.org Digital Signatures, OOoCon 2004OpenOffice.org Digital Signatures, OOoCon 2004
OpenOffice.org Digital Signatures, OOoCon 2004Malte Timmermann
 
OpenOffice.org/StarOffice & DRM, OMC Workshop 2006
OpenOffice.org/StarOffice & DRM, OMC Workshop 2006OpenOffice.org/StarOffice & DRM, OMC Workshop 2006
OpenOffice.org/StarOffice & DRM, OMC Workshop 2006Malte Timmermann
 
OpenOffice.org and ODF Accessibility, OOoCon 2006
OpenOffice.org and ODF Accessibility, OOoCon 2006OpenOffice.org and ODF Accessibility, OOoCon 2006
OpenOffice.org and ODF Accessibility, OOoCon 2006Malte Timmermann
 
Linux Accessibility Workshop, Sun Accessibility
Linux Accessibility Workshop, Sun AccessibilityLinux Accessibility Workshop, Sun Accessibility
Linux Accessibility Workshop, Sun AccessibilityMalte Timmermann
 
Sun ODF Plugin for MS Office
Sun ODF Plugin for MS OfficeSun ODF Plugin for MS Office
Sun ODF Plugin for MS OfficeMalte Timmermann
 

More from Malte Timmermann (7)

OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)
OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)
OpenOffice.org and ODF Accessibility Today (OOoCon 2008 Bejing)
 
OpenOffice.org and ODF Accessibility, ABI Workshop 2006
OpenOffice.org and ODF Accessibility, ABI Workshop 2006OpenOffice.org and ODF Accessibility, ABI Workshop 2006
OpenOffice.org and ODF Accessibility, ABI Workshop 2006
 
OpenOffice.org Digital Signatures, OOoCon 2004
OpenOffice.org Digital Signatures, OOoCon 2004OpenOffice.org Digital Signatures, OOoCon 2004
OpenOffice.org Digital Signatures, OOoCon 2004
 
OpenOffice.org/StarOffice & DRM, OMC Workshop 2006
OpenOffice.org/StarOffice & DRM, OMC Workshop 2006OpenOffice.org/StarOffice & DRM, OMC Workshop 2006
OpenOffice.org/StarOffice & DRM, OMC Workshop 2006
 
OpenOffice.org and ODF Accessibility, OOoCon 2006
OpenOffice.org and ODF Accessibility, OOoCon 2006OpenOffice.org and ODF Accessibility, OOoCon 2006
OpenOffice.org and ODF Accessibility, OOoCon 2006
 
Linux Accessibility Workshop, Sun Accessibility
Linux Accessibility Workshop, Sun AccessibilityLinux Accessibility Workshop, Sun Accessibility
Linux Accessibility Workshop, Sun Accessibility
 
Sun ODF Plugin for MS Office
Sun ODF Plugin for MS OfficeSun ODF Plugin for MS Office
Sun ODF Plugin for MS Office
 

Recently uploaded

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 

Recently uploaded (20)

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 

2014 12-08 - odf plugfest - operations based odf editing with ox documents

  • 1. Malte Timmermann – Head of Development OX Documents ODF Plugfest 2014 Operations based ODF editing with OX Documents
  • 2. Bio ODF since it’s very beginning 2 Operations based ODF editing with OX Documents • 1991-2011: StarOffice and OpenOffice.org ❯ From junior developer to senior developer and technical architect ❯ Focus on text editing, security and accessibility ❯ Author of Sun’s ODF Plugin for Microsoft Office ❯ Member OASIS ODF TC, Accessibility SC • 2012 – today: OX Documents ❯ Document editing again – now in the browser ❯ In the team: 14 former colleagues from the Hamburg OpenOffice.org team ❯ http://techblog.open-xchange.com/
  • 3. OX Documents Customer Requirements 3 Operations based ODF editing with OX Documents Documents Round-trip Edit Open Office and Microsoft Office documents (ODF and OOXML). View and convert documents in many different formats, including PDF. Interoperability with other office products. Preserve content and layout of complex documents. Work together on shared documents. See other‘s people edits – in real-time. Edit your documents anywhere. On any device, including mobile. In the browser. Collaboration Availability
  • 4. OX Documents 4 Operations • Describe document changes and entire document  Examples: insertParagraph, insertText, setAttributes • Abstraction of file formats • Building block for “Operational Transformation“ (OT) • Allow collaborative editing • Used in Client-Server communication, could also be used for macro recording, scripting, ... Key Concept: Operations Operations based ODF editing with OX Documents Document OP OP OP
  • 5. Architecture Overview 5 OX Text App OX Text Editor Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, Operations DOM Manipulations Browser OX Text OSGi Document Converter OpenOffice ODF <=> Operations ODFDOM OOXML <=> Operations DOCX4J OX Drive > ODF < Operations ODF / OOXML / Operations / other > Non-ODF/OOXML < ODF Operations (JSON) Client Server > OOXML < Operations Operations based ODF editing with OX Documents
  • 6. Operations Processing Step 1 – Decomposing the document (on server) 6 Lorem ipsum dolor sit... Duis autem vel eum iriure dolor in hendrerit… Unknown object – will be ignored OOXML to Operations insertParagraph start:[0] insertDrawing start:[1,0] imageUrl:“pic.jpg“, width=100, height=100, … insertText start:[2,0], text=„Duis autem…“ setAttributes start:[2,5] end:[2,10] attrs:{fontweight=bold} insertText start:[0,0], text:“Lorem ipsum…“ insertParagraph start:[1] Operations describe how to manipulate the document – including how to build it up from scratch insertParagraph start:[2] Operations based ODF editing with OX Documents
  • 7. Operations Processing Step 2 – Apply operations to editor (on client) 7 <html> <p> <p> <p> „Lorem…“ <img> „Duis…“ insertText insertParagraph Operations to HTML DOM The browser will do the layout and the rendering Lorem ipsum dolor sit... Duis autem vel eum iriure dolor in hendrerit… insertDrawing insertParagraph insertText insertParagraph Operations based ODF editing with OX Documents
  • 8. Operations Processing Step 3 – Edit document in browser (on client) 8 • Intercept all events – do not let the browser do any DOM manipulations • Create operations for desired document manipulations  For mouse/keyboard input as well as for actions triggered in the user interface • Apply these operations to HTML DOM  The browser will display the updated document • Send operations to the server - for persistence and for further distribution Lorem ipsum dolor sit... Duis autem vel eum iriure dolor in hendrerit… Ut wisi enim ad minim… User Input to Operations delete start:[2,5] end:[2,10] delete start:[1,0] splitParagraph start:[2,42] insertText start:[3,0], text:“Ut wisi...“ Operations based ODF editing with OX Documents
  • 9. Operations Processing Step 4 – Apply operations to document (on server) 9 <XML> <p> <p> <p> „Lorem…“ „Duis…“ „Ut…“ 1 delete Operations to XML DOM ODF / OOXML • This step is optional (for supporting legacy applications)  It would also be possible to just make the operations list persistent <p> • Duplicate original document, build DOM tree • Use only the newly created operations to update the DOM tree • Do not touch any DOM nodes that you don‘t understand or don‘t care about, so the round-trip is nearly perfect! 2 delete 3 splitParagraph 4 insertText 2 3 1 4 Unknown object – still there! Operations based ODF editing with OX Documents
  • 10. Operations Processing Demonstration in OX App Suite 10 Operations based ODF editing with OX Documents Open Source (like): • Backend: GPL2 • Frontend: CC BY-SA-NC
  • 11. © 2014 Open-Xchange Operations based ODF editing with OX Documents