Vajna About Miklos • From Hungary • More blurb: http://vmiklos.hu/ • Google Summer of Code 2010/2011 • Rewrite of the Writer RTF import/export • Writer developer since Feb 2012 • Contractor at Collabora since Sep 2013
Vajna Agenda • What is: • LibreOffice, The Document Foundation • Collabora Productivity • How we handle interoperability • Examples • What's new in LibreOffice 4.4/5.0
Vajna What is LibreOffice, The Document Foundation? • LibreOffice is a free and open source office suite • Writer, Calc, Impress, etc. • Available on Windows, Linux, OS X • The Document Foundation • Non-profit organization behind the project • Handles everything except development
Vajna Total Unique IP Addresses Seen 0 20,000,000 40,000,000 60,000,000 80,000,000 100,000,000 120,000,000 Windows MacOSX Linux Tracking direct download Update Ping origins. Excludes all Linux Distributions downloads ~120m so far ( + Linux ) This time last year was ~65m
Vajna 2013 vs. 2014 commits by affiliation 2013 2014 0 5,000 10,000 15,000 20,000 25,000 30,000 SYNERZIP SUSE RedHat Openismus Nou & Off New Contributors Munich MultiCoreWare Linagora Lanedo Known contributors KACST ITOMIG Igalia IBM Ericsson Collabora CloudOn CIB Canonical Assigned Apache Volunteer ALTA
Vajna Committers per month 0 20 40 60 80 100 120 140 Xamarin T ata Consultancy Services SYNERZIP SUSE Sonicle SIL RedHat Oracle Openismus Nou & Off New Contributors Munich MultiCoreWare Linagora Lanedo Known contributors KACST ITOMIG Igalia IBM Ericsson Collabora CloudOn CIB Canonical Assigned Apache Volunteer ALTA
Vajna What is Collabora Productivity? • LibreOffice is developed by a healthy mix of: • Volunteers • Companies paying full-time developers • Collabora Ltd. • Leading open source consultancy • 8 years of experience, 90+ people • Collabora Productivity Ltd. • Dedicated to Enterprise LibreOffice • Provides Level-3 support (code issues) to all Novell/SUSE LibreOffice clients • Architects of LibreOffice's OOXML export filters
Vajna Interoperability • Ability to handle files we didn't produce • Files are just an on-disk representation • Of what is in the memory • Of a collection of features • #1 use-case is of course Microsoft Office • OOXML, binary formats, RTF • Both standards and non-standards
Vajna Handling interoperability • Worst case • Includes all aspects of a new feature • Best case • Only filter part is missing • That's why there is no xslxToPdf() • File → model → file • So that for N formats, 2N filters are enough – Instead of N2
Vajna Importing Non-standards • A new project from April: Document Liberation • Fits TDF's mission well. • Home for re-usable, legacy un-documented proprietary file-formats Eg. Visio, Keynote, MS Publisher, MS Works, Corel Draw, Adobe Pagemaker...
Vajna 4 levels of “handling” • Feature is already in core • Implement the feature in core • Implement the result of the feature in core • Just preserve it
Vajna Case #2: Import the result of the feature in the filter • E.g. Table styles, document themes • SmartArt import • On import, apply the result of that as direct formatting • Better, than nothing, but no real editing can be performed
Vajna Case #3: Just preserve it • If a feature is completely unsupported by core, it makes sense to first just preserve it • Use case: • Long document • Full of complicated features • Just want to correct a typo
Vajna We do it for ODF already • css::xml::ParaUserDefinedAttributesSupplier • css::xml::TextUserDefinedAttributesSupplier • css::xml::UserDefinedAttributesSupplier • “The idea behind this property is that a parser can throw away all attributes that it cannot handle by itself […] can be written back without loss.” • WW8 as well: SwTOXBase::maMSTOCExpression
Vajna UI re-work: complete in 4.4 • A huge extremely mechanical task: • Clean UI • Many thanks to: Caolán McNamara (Red Hat) - for his incredible work here, and also Szymon Kłos, Michal Siedlaczek, Olivier Hallot (EDX), Andras Timar (Collabora), Jan Holesovsky (Collabora), Katarina Behrens, Thomas Arnhold, Maxim Monastirsky, Manal Alhassoun, Palenik Mihály, and many others ... 4.0 4.1 4.2 4.3 4.4 0 100 200 300 400 500 600 700 800 900 Progress on UI / dialog layout Layout UI old dlg old tab-page Remaining
Vajna De-confusing read-only mode. LibreOffice will now display an infobar to indicate visibly when a document is being opened in read-only mode. (Samuel Mehrbrodt, Joren De Cuyper)
Vajna Writer: Improved Interop. Word compatible text highlighting thanks to Tamás Zolnai • Both highlighting and shading are preserved during import / export of Microsoft Word documents. • New compatibility option to specify how to export LibreOffice character background to Microsoft Office file formats: as highlighting or as shading. • To use this option, go to Tools Option Load/Save Microsoft Office. ▸ ▸ ▸
Vajna Calc: Conditional Formatting Data bars in conditional formatting can now have a solid background thanks to Katarina Behrens (CIB) Data bars can be displayed without showing their underlying values thanks to Katarina Behrens (CIB)
Vajna PDF signing & Time- stamping ... Export to PDF now supports the Time-Stamp Protocol (IETF standard RFC 3161). The address of a Time-Stamp Authority can be specified in the security options of PDF settings (Tor Lillqvist, Collabora) – thanks to Wilhelm Tux & donors for a successful crowd funding !
Vajna LibreOfficeKit • A very simple C & C++ API for LibreOffice • Exposes file-format filters – Ideal for indexing / extraction: “convert * → HTML” • Exposes tiled rendering – Convert document fragments → Images • Exposes editing / selection events – Convert Editing → event flow in each direction. • A very simple ~header-only API – no linking • fully abstract: fn pointers, opaque structs etc. • No sockets opened, no plugins / simple init. • Global error messages. • LibreOffice Online, Android, 'loconv' built on this.
Vajna New Platform bits for 5.0 ... • Native windows 64bit - thanks to David Ostrovsky (CIB), • Also mergedlibs on Windows to improve cold- start: linking ~much of the app into 1x DLL instead of many. • Android / Editing • Online
Vajna Summary • During the past year, lots of interop. problems got fixed in Writer • TextBox • OOXML strict / drawingML • Nested comments • Lots of small filter improvements • Thanks for listening! :-) • Slides: http://vmiklos.hu/odp