Reusing Libreoffice in your application GUADEC 2014 2014-07-26 1 GUADEC 2014 - Reusing LibreOffice in your application Overview Short bio LibreOfficeKit Document Liberation Features Libreoffice & Gnome How to get involved 2 GUADEC 2014 - Reusing LibreOffice in your application Bio math student at Karlsruhe Institute for Technology LibreOffice developer member of the ESC working on calc, chart2, testing framework maintainer for cppunit co-maintainer for orcus, ixion, mdds work part time for Collabora on LibreOffice 3 GUADEC 2014 - Reusing LibreOffice in your application LibreOfficeKit 4 GUADEC 2014 - Reusing LibreOffice in your application I'm not doing the work currently moved forward by Andrzej Hunt as GSoC desing to large degree by Michael Meeks 5 GUADEC 2014 - Reusing LibreOffice in your application Design known also as liblibreoffice has been renamed recently tiny static library exposes Libreoffice functionality at run-time simple interface C, C++ and Java bindings 6 GUADEC 2014 - Reusing LibreOffice in your application What is already implemented? stable import export unstable tiled rendering improved API handling 7 GUADEC 2014 - Reusing LibreOffice in your application Example 8 GUADEC 2014 - Reusing LibreOffice in your application Ideas Have a simple API that exposes the most common functions for what would you use the API? which features would you need? Allow fast rendering of documents for any application tiled rendering Gnome Documents? avoid UNO and/or unoconv no setUp/tearDown for repeated usage 9 GUADEC 2014 - Reusing LibreOffice in your application Fast Tiled Rendering in textures Tablet display Large Pre-rendered area for fast pan / zoom etc. Future extend API finish tiled rendering API modifying documents ??? mobile viewers expose UNO through LibreOfficeKit? 11 GUADEC 2014 - Reusing LibreOffice in your application The Document Liberation Project 12 GUADEC 2014 - Reusing LibreOffice in your application Credits Again, I'm not doing the work ;) Fridrich Strba(SUSE) David Tardon(RedHat) Valek Filippov a number of former GSoC students and many more more information: http://www.documentliberation.org/ 13 GUADEC 2014 - Reusing LibreOffice in your application Idea based on several GSoC projects and some old libs access to documents should be possible without vendor give user control over their documents allow transition to open standards provide nice import libraries for binary formats make all available as part of a nice framework 14 GUADEC 2014 - Reusing LibreOffice in your application Ideas (2) Libraries are not only useful for LibreOffice already used in e.g. Abiword, Inkscape, Scribus, … Separate the two projects Still a TDF project make it easier for other developers to join 15 GUADEC 2014 - Reusing LibreOffice in your application Tools OLEToy binary inspection of file formats first step is to add support to it mso-dumper librevenge base library provides common types and code libodfgen ODF export library 16 GUADEC 2014 - Reusing LibreOffice in your application Document Liberation libs libwpd/libwpg – Corel WordPerfect libwps – Microsoft Works libmwaw – legacy Mac formats libabw – AbiWord libcdr – Corel Draw libvisio – Microsoft Visio libmspub – Microsoft Publisher libetonyek – Apple Keynote libfreehand – Adobe FreeHand libe-book – many e-book formats 17 GUADEC 2014 - Reusing LibreOffice in your application Other libs libcmis cppunit libgltf orcus ixion mdds 18 GUADEC 2014 - Reusing LibreOffice in your application Features in 4.3 and GSoC 2014 19 GUADEC 2014 - Reusing LibreOffice in your application Impress 3D models Thanks to MulticoreWare Inc(MCW), AMD, Tamas Zolnai, Jan Holesovsky, Markus Mohrhard (all Collabora) 20 GUADEC 2014 - Reusing LibreOffice in your application Demo 21 GUADEC 2014 - Reusing LibreOffice in your application 32 bit paragraphs in writer Caolán McNamara(RedHat) 22 GUADEC 2014 - Reusing LibreOffice in your application OOXML improvements Import support for OOXML strict Thanks to Miklos Vajna(Collabora), Jacobo Aragunde(Igalia), Synerzip, CloudOn and many more 23 GUADEC 2014 - Reusing LibreOffice in your application Comment handling improvements Printing of comments in margin thanks Caolán McNamara (RedHat) Nested comments thanks to Oliver-Rainer Wittman(Apache) and Miklos Vajna(Collabora) 24 GUADEC 2014 - Reusing LibreOffice in your application Improved color picker (1) Thanks to Maxim Monastirsky ● several color pickers are now split buttons 25 GUADEC 2014 - Reusing LibreOffice in your application HiDPI support Thanks to Keith Curtis, Jan Holesovsky, Caolán McNamara, Andrzej Hunt 26 GUADEC 2014 - Reusing LibreOffice in your application Property mapping in charts Thanks to Markus Mohrhard(Collabora) 27 GUADEC 2014 - Reusing LibreOffice in your application Code quality cppcheck coverity now at an amazing score of 0.09 asserts tests crash testing Asan/Lsan/Ubsan Thanks to Caolan McNamara, Stephan Bergmann, Michael Stahl, David Tardon (all RedHat), Miklos Vajna, Kohei Yoshida, Markus Mohrhard (all Collabora), Jacobo Aragunde (Igalia) and many more 28 GUADEC 2014 - Reusing LibreOffice in your application Automated code refactorings Clang plugins Checkers Additional warnings Help with werror Rewriter automatic refactoring on the whole source code based on clang AST prevents bugs Thanks to Stephan Bergmann(RedHat) and Noel Grandin 29 GUADEC 2014 - Reusing LibreOffice in your application Performance tests Thanks to Matus Kukan(Collabora) and Michael Meeks(Collabora) 30 GUADEC 2014 - Reusing LibreOffice in your application GSoC – Color picker (2) Thanks to Krisztian Pinter 31 GUADEC 2014 - Reusing LibreOffice in your application GsoC – libcmis improvements already supported CMIS Google Docs in progress during this year's GSoC OneDrive SharePoint (native) 32 GUADEC 2014 - Reusing LibreOffice in your application Libreoffice & Gnome 33 GUADEC 2014 - Reusing LibreOffice in your application Integration & work with GNOME Schedule Synchronisation our .2 release matches the 6 monthly GNOME / distro release cadence. gnome_vfs & gio integration gconf_ - no dconf yet (volunteers appreciated) d-bus (screensaver hold-off API / dbus menu pieces) Evolution libebook / addressbook & send-mail integration All windows are GtkWindows, glib mainloop integration Gtk+ file dialog & ~GtkPrint integration Harfbuzz re-use ... Telepathy integration – coming … And more ... 34 GUADEC 2014 - Reusing LibreOffice in your application VCL / Layout integration ... LibreOffice continues to use it's internal VCL toolkit With backends for gtk2, gtk3, KDE3, KDE4, TDE, raw X etc. Thanks to Caolán McNamara(RedHat), Szymon Kłos(GSoC), Mihály Palenik(GSoC) and may more. 778 dialogs (~93%+) moved to GtkBuilder / glade edited .ui files. Hope to allow (optional) use of native widgets in the future [ gtk+3 ] 35 GUADEC 2014 - Reusing LibreOffice in your application GNOME app menu integration Thanks to Caolan McNamara Also GMenu integration thanks to Canonical and Antonio Fernandez at Aentos 36 GUADEC 2014 - Reusing LibreOffice in your application How to get involved 37 GUADEC 2014 - Reusing LibreOffice in your application It's easy to get involved: no really ! From basket case to: “LibreOffice is now ridiculously easy to build” Karl Fogel – (now working on “Producing OSS” (v2) …) Credit to team on gnumake port & other cleanups We love people to contribute changes: We want your first patch to be non-controversial, and easy, so you're up-to-speed and included outright: http://wiki.documentfoundation.org/Development/Easy_Hacks 38 GUADEC 2014 - Reusing LibreOffice in your application New developer training bits ... gnumake overview documentation: 'make dump-depspng' Thanks to David Ostrovsky and Peter Foley Training slideware with code overview / basics: Module overview: http://people.gnome.org/~michael/data/2013-07-26-libr eoffice-code-structure.pdf Low-level types / utilities overview: http://people.gnome.org/~michael/data/2013-07-26-libre office-low-level.pdf 39 GUADEC 2014 - Reusing LibreOffice in your application Large, fun and growing community Many other contributors to enjoy working with: 40 GUADEC 2014 - Reusing LibreOffice in your application Thank you … … for listening! All text and image content in this document is licensed under the Creative Commons Attribution-Share Alike 3.0 License (unless otherwise specified). "LibreOffice" and "The Document Foundation" are registered trademarks. Their respective logos and icons are subject to international copyright laws. The use of these therefore is subject to the trademark policy. 41 GUADEC 2014 - Reusing LibreOffice in your application