Development/Learning Materials
Here you can find a list of all the learning materials devoted to LibreOffice development. Many of them are not official LibreOffice documents, and are provided by third parties. For general programming documents, go to Development/GeneralProgrammingGuidelines.
If you are not looking for the development resources, you can look at Documentation/Publications and Documentation/Third_Party_Resources.
Articles
- How to build LibreOffice: The best place to start if you want to build your own copy of LibreOffice.
- Development FAQ: A few helpful hints to understand the the LibreOffice source code.
- Notes about String classes: Another guide for programmers.
Books
LibreOffice Development with C++/Java
- LibreOffice Developers Guide, It is originally from Sun Microsystems (2009) but it is now (2022) under major revision in the TDF Wiki. This book contains 19 chapters and 4 appendices. Printed version of the book is ~1700 pages. It can be used as a comprehensive development reference.
- Inside LibreOffice, 2016-2020 (work in progress), Chris Sherlock, useful for understanding the architecture of the LibreOffice. UNO and SAL (including OSL (Operating System Layer), runtime layer, helper classes) are discussed in this book (Book's Source code)
- LibreOffice Development Book, 2016 (work in progress), LDCS, discusses a sample patch for LibreOffice, and also extension development.
- Exploiting an Open-Source Office Suite (Japanese version), 2018, Tanichida Ken, An online development tutorial for LibreOffice in 189 parts, containing several examples
- Java LibreOffice Programming v2 (JLOP) (PDF version / Code), 2017, Andrew Davison, ~900 pages and 51 chapters discusses LibreOffice programming using Java and LibreOffice API
- OOO Development Tools (Python) (PDF version), 2022, Barry-Thomas-Paul, based on JLOP book from Andrew Davison, ~300 pages book discussing LibreOffice programming using Python and LibreOffice API
LibreOffice Macro Programming with BASIC
- LibreOffice BASIC Guide, originally a 2009 document from Sun Microsystems discussing BASIC programming PDF version
- OpenOffice.org Macros Explained Third Edition (Latest version), 2024, Andrew Pitonyak, explains macro programming for OpenOffice
- LibreOffice BASIC Primitives, 2018, Jean-François Nifenecker, ~200 pages book providing some "primitives" for helping LibreOffice BASIC programming
- Porting Excel/VBA to Calc/StarBasic (PDF), 2004, Sun Microsystems
LibreOffice API Development with Python
- Python Developer Guide, macro programming with Python
- Document Hacker, Writing Long Documents For Software Engineers using LibreOffice and Python UNO, 2013, Jamie Boyle, A short (~60 pages) introduction to LibreOffice API programming using Python
References
- LibreOffice Modules, List of all LibreOffice modules, describing each module separately
- LibreOffice SDK Installation Guide, An overview of all necessary installation steps (e.g. environment variables) to use LibreOffice SDK.
- IDL Reference, Complete LibreOffice 6.4 API reference.
- Java UNO Runtime Reference, Reference documentation of the Java UNO runtime API.
- Development Tools, Overview and a short description of the UNO development tools.
- ODF toolkit, A set of Java modules that allow programmatic creation, scanning and manipulation of Open Document Format (ISO/IEC 26300 == ODF) documents.
Examples
- LibreOffice SDK Examples, A collection of examples in different programming languages (Java, Python, C++, Basic, OLE, CLI).
- Additional LibreOffice SDK Examples, A git repository with additional examples from various contributors:
You can invoke git clone https://git.libreoffice.org/sdk-examples
to get these examples.
Presentations / Slides
Getting Started
- LibreOffice Development, 2018, Kohei Yoshida, Providing an overview on LibreOffice development, introduction to key LibreOffice hackers, and some discussion on LibreOffice history
- To start hacking LibreOffice, 2012, Olivier Hallot (Original Portuguese slides) Learn how to get started, how to compile the code, submit the patches, etc. Please note that some of the things here are changed now, for example git URL and statistics are now changed, and String refactoring is completed
LibreOffice Code Overview
- LibreOffice Code Structure, 2016, Michael Meeks (2017 version by Miklos Vajna)
- LibreOffice Core Classes, 2016, Michael Meeks
- Solving arbitrary problems from a standing start, or... Real World Engineering, 2016, Michael Meeks
- A year in the Visual Class Libraries (VCL), 2016, Michael Meeks, (VclPtr overview from 2015)
LibreOffice Writer
- LibreOffice Writer Training Part 1 part 2, 2014, Miklos Vajna
FOSDEM Conference
Free and Open source Software Developers' European Meeting (FOSDEM) is an European conference dedicated to the free and open source software development. LibreOffice usually has a dedicated room in this conference.
FOSDEM 2023
FOSDEM 2022
FOSDEM 2021
- LibreOffice Technology, From a desktop product to a platform for personal productivity, Italo Vignoli
- Lowering the Barrier for New Developers, Developing in the cloud via GitPod, Muhammet Kara
- Using IDEs for LibreOffice development, Christian Lohmaier
- The Perfect Gerrit Patch, A consumer report, Stephan Bergmann
- LibreOffice WASM - the How and Why, A report from the journey to get LibreOffice into the browser, fully, Thorsten Behrens, Jan-Marek Glogowski
- Editable nested fields in Writer, Michael Stahl
- How Collabora Online development improves LibreOffice, Jan Holesovsky
- Build-in "xray" like UNO object inspector, Tomaž Vajngerl
- Handling PDF digital signatures in LibreOffice with PDFium, Miklos Vajna
- Making Nextcloud Hub COOL, Hear how we implemented out of the box collaboration., Michael Meeks
- Porting LibreOffice to macOS on Apple Silicon, Easy bits were easy, hard bits were not so hard, Tor Lillqvist
- Using LibreOffice with MariaDB (and Docker), Anel Husakovic
- LibreOffice QA - how to write your first test, Xisco Fauli
- ODF for Interoperability, Tips and Tricks to Tackle the Most Common Issues, Italo Vignoli
- LibreOffice Lightning Talks, Interesting Talks from Community Members, Thorsten Behrens
FOSDEM 2020
- LibreOffice turns ten and what’s next - Michael Meeks (TDF and Collabora)
- Contributing to LibreOffice without C++ knowledge - Ilmari Lauhakangas (TDF)
- Coverity and oss-fuzz issue solving - Caolán McNamara (Red Hat)
- LibreOffice lockdown and encryption improvements - Thorsten Behrens (CIB)
- Prioritizing is key - Xisco Fauli (TDF)
- Proposal to inspect and highlight styles in Writer - Heiko Tietze (TDF)
- LibreOffice Theme Changer - Rania Amina
- Crowdfunding to advance open document editors - Simon Phipps (TDF and OSI)
- Online Open Document Editing New Possibilities - Cor Nouws (Collabora)
- Make Online yours - How to customize Collabora Online] - Pedro Pinto Silva (Collabora)
- Online: wrestling web Copy/Paste to usability - Michael Meeks (Collabora)
- Integrate Collabora Online with web applications - Andras Timar (Collabora)
- LibreOffice Online adoption into 1&1 Mail & Media ecosystem - Eduard Ardeleanu (1&1 Mail & Media)
- Collabora Office Android app gory details - Jan Holesovsky (Collabora)
- Lightning talk session - various presenters
- Bringing Collabora Online to your web app - Michael Meeks (Collabora)
FOSDEM 2019
- Relaunching the ODF Adoption TC at OASIS, Italo Vignoli
- Server side solution for generating ODF reports, An important step to adopt ODF in Taiwan, Franklin Weng
- Resurrecting Mozilla Themes for LibreOffice, Trying to uncover, fix and improve a hidden gem in the rough, Muhammet Kara
- Quo vadis, LibreOffice extensions?, Heiko Tietze
- Improving LibreOffice quality together, A summary of what happened in 2018, Xisco Fauli
- Collabora Office on iOS, Tor Lillqvist
- Preventing OOXML interoperability problems in LibreOffice, Gabor Kelemen
- New interoperability, i18n and LibreLogo improvements of LibreOffice, for office suite migrations in public sector, supported by NISZ and FSF.hu Foundation, László Németh
- Mysql connector and other databases in LibreOfficeChanges around database drivers in LibreOffice, Tamás Bunth
- Online - under the hood, How to bring LibreOffice to your web app, Michael Meeks
- Vereign toolbar in LibreOffice Online, Technical aspects of integration of a 3rd party document signing service, Andras Timar
- Improving SmartArt import in LibreOffice Impress, Miklos Vajna
- Do you know "layers"?, Regina Henschel
- Clang plugins in LibreOffice - global analyses across a large codebase, Noel Grandin
- Native GTK Dialogs, Current status and future work, Caolán McNamara
- Are we optimiert yet?, Michael Stahl
- Text Mining with OpenOffice, Andrea Pescetti
- Lightning Talks, Andras Timar
FOSDEM 2018
- Status of the Apache ODF Toolkit (incubating), Svante Schubert
- Working in the ODF TC, Regina Henschel
- Improvements around document signatures and encryption, Signing and encrypting with OpenPGP, adding signature lines, Samuel Mehrbrodt
- Documentation convergence project for LibreOffice, Make just one documentation for all, Olivier Hallot
- Anatomy of the OpenOffice localization process, And how to improve it in future, Andrea Pescetti
- Antipatterns in OpenOffice Code, How can we ensure better Code, Peter Kovacs
- BaseDocumenter, LibreOffice Base applications: how to document them, how to manage and analyze impacts of changes, Jean-Pierre Ledure
- Accessibility 101 (not only) for LibreOffice developers, Thorsten Behrens, Katarina Behrens
- Maintaining accessibility through testing?, Samuel Thibault
- Maximizing UX for Customizing, Improving user experience and accessibility of LibreOffice's Customize dialog, Muhammet Kara
- Proposal for better font handling in LibreOffice, Heiko Tietze
- Native GTK3 UI, progress from gtk3 themed vcl widgets to native gtk widgets, Caolán McNamara
- LO URI 101, Stephan Bergmann
- Hidden Gems in Draw/Impress Part 2, Functionalities you didn‘t even know that you might need or did exist, Armin Le Grand
- Calc: The challenges of scalable arithmetic, How threading can be challenging, Michael Meeks
- EPUB export in LibreOffice Writer, Miklos Vajna
- Dialog tunneling in LibreOffice Online, Jan Holesovsky
- LibreOffice for HaikuPort status, Kacper Kasper
- Good things come to those who wait - BorderFrames and WriterGraphics, Armin will hold this talk, Thorsten Behrens
- LibreOffice QA - One Year Overview, What have happened between FOSDEM17 and FOSDEM18, Xisco Fauli
- LibreOffice's automatic updater work, A progress report, Markus Mohrhard
- Lightning talk session, Come and tell us your most recent hack - in 5 mins!, Thorsten Behrens
FOSDEM 2017
- The Office Pokémon GO IV Calculator, Games, Fun, and Hacks with OpenOffice/LibreOffice, Shih-Ching Yang (imacat)
- LibreOffice UI Concept, A personal, user friendly and flexible interface, Italo Vignoli
- Contextual groups in LibreOffice' Notebookbar, How to make life easier for beginners, Heiko Tietze
- Make your LibreOffice extensions and macros rock, Defining user interface has never been easier, Katarina Behrens
- Interoperability regression testing in LibreOffice, Xisco Fauli
- LibreOffice Online Debugging, Andras Timar
- LibreOffice XML Help in your local browser, Bringing 2017 to LibreOffice Help, Olivier Hallot
- Extensions, Ugly Toupee or Hipster Hairdo?, Stephan Bergmann
- Cleaning up the spellcheck dictionary, And making it faster and more maintainable, Andrea Pescetti
- Office Basic Source Code Management, OpenOffice/LibreOffice Basic Development with 3rd-Party Editors, Version Control and Cloud Storage Backup, Shih-Ching Yang (imacat)
- LibreOffice and your IDE, gbuild, json and other buzzwords, Bjoern Michaelsen
- LibreOffice on Wayland via GTK3, Caolán McNamara
- DrawingLayer - Optimization & Implementation, See how we optimized drawinglayer performance with buffering and multi-threading, plus some architectural overview, Armin Le Grand
- Exploiting Concurrency, How I stopped worrying and started threading ..., Michael Meeks
- Integrating LibreOffice Online via WOPI, Jan Holesovsky
- Introducing LibreOffice SafeMode, Samuel Mehrbrodt
- Enhance metafile importers - a restart, First steps in re-architecting our various metafile / svg importers into one, Armin Le Grand
- What the Cell?! Unexpected things happening under the grid., Eike Rathke
- Tackling the LibreOffice update problem, Automated updates and update statistics, Markus Mohrhard
- The Document Foundation Development Dashboard, How LibreOffice is being developed, Jesus M. Gonzalez-Barahona
- The Document Foundation Development Dashboard: hands on, Jesus M. Gonzalez-Barahona
- Lightning talk session Open Document Editors DevRoom, 5 minutes each - come to submit until 30 minutes before, until we run out of slots, Thorsten Behrens
FOSDEM 2016
- Migrating the Army, the Navy and the Air Force, in one single moveThe story of the migration to LibreOffice and ODF of the Italian defense organization, counting 150,000 desktops, Italo Vignoli (video and slides are missing)
- Eternal PlugfestAn ODF community and testing server, Jos van den Oever
- Contributing to the help of LibreOffice using the HelpAuthoring extension, Regina Henschel
- Cleaning up the spellcheck dictionaryAnd making it faster and more maintainable, Andrea Pescetti (video and slides are missing)
- Lowering the bar for new developersHow to make 1.000.000 lines understandable, Jan Iversen (video and slides are missing)
- Improving the toolbars in LibreOffice, Samuel Mehrbrodt
- Inside sidebar, Creating you own panels and decks made easy, Katarina Behrens (video)
- UI event fuzzing via american-fuzzy-lopusing afl to fuzz keyboard input for UI testing LibreOffice, Caolán McNamara (video only) (video demo, afl home page)
- Back to the futureTypographic quality WYSIWYG document editing and form filling in the cloud, László Németh, (video)
- LibreOffice Online internals, Jan Holesovsky (video only)
- Mail merge embedding in LibreOffice Writer, Miklos Vajna (video)
- Exporting shapes to DrawingMLBug fixing case study, Andras Timar (video)
- odpdown - markdown to slidesNice slides from your favourite text editor demo, Thorsten Behrens (video)
- LibreOffice and PostgreSQL, Simon Riggs (video only)
- Handling crashes in LibreOffice, Markus Mohrhard (video)
- LibreOffice extension developmentTools, Tips & Tricks of the Trade, Thorsten Behrens (video)
- The LibreOffice Release BaselineHow to duplicate the releases as published by TDF, Christian Lohmaier (video only)
- Finally building LibreOffice on Windows, Stephan Bergmann (video)
- New features in Gerrit Code Review 2.11, David Ostrovsky (video only)
- Snakes On A Plain OfficePython and LibreOffice: Possibilities and Opportunities, Bjoern Michaelsen (video only)
- DrawingLayer Primitives WorkshopWhat they are, how to use or create new ones, Armin Le Grand (video)
- Visual Class Librariesmaking LibreOffice's toolkit less awful., Michael Meeks (video only)
- Using Android Studio to debug the LibreOffice Viewer for Android, Android studio offers a GUI to debug both the native as well as the java part, Christian Lohmaier (video only)
- Ad-hoc Lightning talk session, Thorsten Behrens (video)
FOSDEM 2015
- Optimizing the Libre Office Main Loop, Munich students get their hands on Libre Office, Tobias Madl (video is missing) (related page)
- C++11 and LibreOffice, The future has arrived (it was about time), Michael Stahl (video is missing)
- OpenGL backend for LibreOffice, Rendering everything through OpenGL, Markus Mohrhard (video and slides are missing)
- OpenGLCanvas in Libreoffice, Michael Jaumann (video and slides are missing)
- LibreOffice IDE integration, Bjoern Michaelsen (video)
- PDF signing in LibreOffice: no longer experimental, Tor Lillqvist (video, bad audio)
- CI for LibreOffice, Jenkins-Gerrit Integration and other woes, Norbert Thiebaud (video, bad audio)
- New features in Gerrit Code Review 2.11, Support for browser based Gerrit workflow, David Ostrovsky (video)
- TextBoxes: complex shapes with complex content in LibreOffice Writer, Miklos Vajna (video, bad audio)
- LibreOffice Calc dependency & performance work, how we made things faster & better, Michael Meeks (video)
- OpenOffice reaches out: the technical angle, Jan Iversen, Andrea Pescetti (video, bad audio)
- Improving LibreOffice quality, Coverity and crash testing, Markus Mohrhard (video)
- Torturing your software with 124 ODF file formats, Bringing gleeful sadism back to software development and base your opinions on facts, Jos van den Oever (video, bad audio) (git repo
- LibreOffice Design/UX Easy Hacks, How you can get involved, Jan Holesovsky (video, no audio)
- Document Liberation Project, Tools and framework for achieving preservation of digital content, Fridrich Strba (video, no audio)
- LibreOffice and ODF, Andras Timar (video, no audio)
- Corinthia a new idea for document handling, editing on mobile devices or using multiple document formats?, Jan Iversen (video, no audio)
- LibreOffice on Android, Miklos Vajna (video, no audio)
- A vision about a LibreOffice document manager for Android, Jacobo Aragunde Pérez (video, no audio)
- Adapting Apache OpenOffice for adoption in a public administration: configuration, Sharepoint webdav integration and an extension to help users exchange ODF files, Maurizio Berti, Giovanni Grazia (video, no audio)
- Lightning talk slot, Demo your cool hack in 5 minutes!, Thorsten Behrens (video, no audio)
FOSDEM 2014
- LibreOffice plumbing on iOS and Android, Tor Lillqvist
- https://speakerdeck.com/kendy/libreoffice-writer-how-the-text-gets-on-the-screen How the Text in Writer Gets on the Screen, Jan Holesovsky
- Once Upon a Primitive Slideshow and other news from LibreOffice graphics, Thorsten Behrens
- Time based charting for Libreoffice, Markus Mohrhard
- Automated import and export testing of file import and export, Markus Mohrhar
- InteropGrabBag in LibreOffice Writer, What it is, how to use it and what uses it already, Miklos Vajna
- librevenge is suite, What is new in the world of import filters and what is coming soon, Fridrich Strba
- How to squeeze a language tag into a Locale, What you need to know about BCP 47 language tags in your ODF editor, Eike Rathke
- How to use the new ui format to do Accessibility right Notes for developers to get accessibility right in dialogs for LibreOffice when using the new ui format, Caolán McNamara
- re-using and re-targetting LibreOffice, liblibreoffice and other ways of re-using us. Michael Meeks
- Central configuration management of large LibreOffice deployments,... demonstration of new tools and new options, Andras Timar
- LO++14, How to make use of 21st century C++ in LibreOffice development, Stephan Bergmann
- Liberated Build System: Mission Accomplished, What's next?, Bjoern Michaelsen
FOSDEM 2013
- Recent changes in localization toolchain, Andras Timar
- Well-typed UNO , Stephan Bergmann
- How to debug Writer file format issues?, Miklos Vajna
- MinGW-w64 & Wine: Developing LibreOffice for Windows...without Windows, Fridrich Strba on the behalf of Jan Holesovsky
- The Upgrade of the LibreOffice Template Repository, Andreas Mantke
- General easy hacks for new hackers, Michael Meeks
- Simple introduction to LibreOffice QA, Cor Nouws
- Give me my drawing back! - Dragging your Visio, Publisher and CorelDraw files to free-sofware world, Fridrich Strba
- LibreOffice now accesses my documents through CMIS, how to support new server types by reusing that work?, Cédric Bosdonnat
- Widget Layout, tutorial, Caolán McNamara
- Language tags - or, what is BCP 47 and why would we want it, Eike Rathke
- Debugging calc filter problems, Markus Mohrhard
- Hacking Android remote, Thorsten Behrens
- Interoperability Improvements, Eilidh McAdam
FOSDEM 2012
- LibreOffice Development Directions, Italo Vignoli
- Import filters for LibreOffice: Join the journey, Fridrich Strba (No slides available)
- Widget Layout, Caolán McNamara
- Easy Hacks - how to become a key LibreOffice contributor, Michael Meeks
- Improving the Extensions and Template Center, Andreas Mantke
- Impress Hacking - The What & The Where, Thorsten Behrens
- Test concepts for automated Libreoffice testing, Markus Mohrhard
- Hacking Writer: what to know to get started, Cédric Bosdonnat
- The Infrastructure behind TDF, Florian Effenberger (broken link)
- Hacking Calc - what to know to get started, Eike Rathke
- LibreOffice debugging tricks, Jan Holesovsky / Kendy
- Base Hacking, Lionel Elie Mamane
- LibreOffice extension for Sharepoint, Miklos Vajna and Cedric Bosdonnat
- Analysing LibreOffice with Compiler plugins, Stephan Bergmann
- 10 reasons to contribute to LibreOffice today, Bjoern Michaelsen
FOSDEM 2011
- Accessible authoring with LibreOffice, Christophe Strobbe
- Liberating Open Office Development (video), Michael Meeks
- LibreOffice Online Help (Wikihelp), Jan Holesovsky
- Kicking off the LibreOffice Design Team, Christoph Noack
LibOCon Conference
The LibreOffice Conference (LibOCon) is the annual gathering of the LibreOffice community.
LibOCon 2024
LibOCon 2024 is the upcoming conference.
LibOCon 2023
LibOCon 2023 was held in Bucharest, Romania from Wednesday 20th of September (community meetings) to Saturday 23rd of September 2023.
LibOCon 2022
LibOCon 2021
LibOCon 2021 Youtube Archive (More upload in progress)