Skip navigation

Let me join Mike, Miklos and Björn in the blog reporting on last month’s LibreOffice Hackfest in Hamburg (a good old tradition):

LibreOffice Python hacking

With a nice round number of 100000 (decimal 32) participants and surprisingly non-rainy and warm April weather in Hamburg, we met at very stylish offices that also generously provided us with food and beverages. Further shout-outs to TDF (and all its donors) for providing travel support for our volunteers and, equally importantly, sponsoring CIB’s very own Armin Le Grand fulltime mentoring on and off site.

You can find more details on contributions and work done on the event’s wiki page, and also for the simultaneous German community meetup (wiki, blog); just as much here: code-wise, we had 55 commits from hackfest participants over the weekend –

11  Zdeněk Crhonek
 9  Stephan Bergmann
 5  Christian Lohmaier
 5  Katarina Behrens
 5  Sophia Schröder
 4  Armin Le Grand
 3  Michael Meeks
 3  Tamas Bunth
 3  Heiko Tietze
 2  Markus Mohrhard
 2  Miklos Vajna
 1  Linus Behrens
 1  Nithin Kumar Padavu

and probably another 15 or so landing in the weeks after, but with substantial work carried out during the hackfest. I’m really quite happy with the outcome, as well as with the number of new and old names in the above list!

I’d like to highlight one particular area of work (as it’s not reflected yet in the list above i.e. no commits on master yet), namely Regina’s ongoing endeavour to improve LibreOffice ODF conformance (or alternatively the ODF specification, if instead she believes LibreOffice gets it right and the spec has it wrong). This is especially noteworthy as it’s purely volunteer work, including weekly attendance and contribution to ODF technical committee phone meetings. Regina spent the weekend poring over LibreOffice drawing subsystem minutiae with CIB’s Armin Le Grand, and in the end wrote up a plan on making the layer functionality in Draw/Impress more useful and compliant to how ODF specifies layers: Make drawing layers ODF conform .

For myself, I (almost) didn’t get any hacking done but instead spent time mentoring, getting face time with many people, providing hackers with (mostly double) espressos, and had a handful of quite excellent discussions that only tend to happen with enough of smart people in the same room:

  • discussed opportunities around GPG signing and encryption for the public sector with Lothar Becker
  • pondered the future of application development (electron vs. browser-only vs. native ports – and all kinds of in-betweens) with Tim, Michael, and Benjamin
  • got the latest news around autocrypt, memory hole and from Björn Petersen
  • went through a number of sticky problems TDF is facing with regard to upcoming GDPR end of May, with K-J, Uwe, Florian and Eike.
    • BTW for the record, I consider GDPR a broadly good thing & not an undue burden, and a useful motivation also for volunteer and charity organisations to live up to some data protection ideals.

And last but not least thanks to Armin, Bubli, Michael and Siegmund for being the local CIB posse on the ground for that hackfest; and of course thanks to CIB for letting us have such an outstanding LibreOffice team – and to all volunteers donating a full weekend to LibreOffice!

Here are some impressions from the event (thx to Sweetshark for sharing his pictures – that work is (C) 2018 Björn Michaelsen, as noted in the image description):


After 2010, 2012, 2013 and 2015, another LibreOffice HackFest will take place in Hamburg this coming weekend, April 7th and 8th.

Want to meet hackers from one of the largest FLOSS projects, see what’s going in the world of large-scale C++ & document freedom, and try your hand at some easy hacks? We’ve Armin, one of our most experienced CIB developers on-site, to introduce & mentor folks in all things graphics and drawing layer.

Be cordially invited to meet us at the venue in St. Pauli, and just poke me on twitter or IRC for any questions or directions

See you there!

With the release of LibreOffice 5.4.0 today, I’m most happy to announce support for OpenPGP / GnuPG keys when signing ODF documents in LibreOffice under Linux. This is great if you already use GPG/PGP for email with your peers, as it ensures authenticity of your ODF documents regardless of the mode of transport or storage.

For any ODF document, simply navigate to File->Digital signatures in LibreOffice, and the certificate selection dialog will transparently list all suitable signing keys on your system, including those from Kleopatra, KGpg, GPA or Enigmail – that perhaps you’re using already for secure email.

Pick a GPG key, and LibreOffice will delegate all password entry and GPG crypto to tried-and-true system components (the LibreOffice process won’t even see you passphrase):

Sign document with GPG key

We also made signature status much more visible – before, signed documents only had a tiny icon down in the status bar (both for valid, as well as for broken or untrusted signatures – not ideal for noticing). LibreOffice there follows the trend set by browsers, to make security features (and broken trust) much more obvious. Your validly signed document will now show up like this:

InfoBar showing signature status

Work is ongoing on adding support for Windows (and perhaps other platforms) as well – as of today, LibreOffice 5.4 supports this feature only under Linux. Furthermore, we also plan to provide GPG-based encryption of ODF documents (currently, document encryption is based on individual passwords), stay tuned!

This work was generously sponsored by the German federal office for information security (BSI), and of course builds on top of great software like GnuPG – many thanks!

This is the fourth (and last) in a series (1, 2, 3) of quick updates on travel and meetups I attended this year, for or because of LibreOffice / The Document Foundation. The next LibreOffice event you’ll definitely meet me will be the annual LibreOffice conference, this time in Aarhus, Denmark, on Sep. 23-25th.

As I keep saying every year, FOSDEM is really the FLOSS event to go for me. If I could attend only one, I’d be hard pressed to choose between LibOCon and FOSDEM – it is that great. Fortunately, that hard choice is not upon me. The TDF board therefore uses FOSDEM for one of the two in-person board meetings (the other one being during LibOCon) per year, and also tries to have a hackfest adjacent to it. Which is rather economic on travel, since lots of people are around already.

The LibreOffice project was again co-running the Open Document Editors devroom, and this time, we hit some true home runs. Especially for the mobile topics, the room was full to the gunwales. I was looking after our own small lightning talks track, with the following talks (slides linked):

  • Jos van den Oever about font embedding in ODF (slides/demo)
  • Asheesh Laroia about ODF support in EtherCalc (slides)
  • Your truly with the Nice Slides in Seconds! pitch (slides, /code)

Next to looking after LibreBaby and socializing with tons of people on the hallways, I attended only a few talks myself. Beyond our own dev room stuff, I recall a home-made GPS watch talk, and one about making your tests fail via randomized parameterization, which were both great.

The monday after, we had a full day of TDF board meetings (good progress there on annual budget planning, and a number of smaller items), and the UX hackfest in parallel. I used the opportunity to corner both Michael M. and Michael S. on ODF topics, with now hopefully much better mutual alignment. On the actual hacking front, I spent most of the time finishing up my markdown slide generator project, the result of which was mentioned on this blog already.

Pair programming, UX hackfest

Pair programming, UX hackfest

This is the third in a series (1, 2) of quick updates on travel and meetups I attended this year, for or because of LibreOffice / The Document Foundation.

On March 19-20th already, the 2nd LibreOffice hackfest in Las Palmas, Gran Canaria took place at the ULPGC. Thanks to Fran Santana and the team from the university for hosting us, and my new company CIB for sponsoring food & drinks and diners – and a very significant infusion of people into the LibreOffice ecosystem!

Scheduling was perfect, we reportedly had the worst weather of the year thus far, so sitting down & hacking really was the only alternative. Accordingly, a number of things got done, bugs fixed, and stuff/folks bootstrapped.

There were a few encouraging contacts to local LibreOffice users, and very interesting conversations with students, some of them really new to the ideas, concepts & the way of life inside a FLOSS project.

On a personal note, I’m very happy to report that travelling, and working, with a 1.5 year-old is very much possible in FLOSS land. Both university and hackfest attendees were lovely, understanding, and forgiving LibreBaby the occasional cries of joy (and anger). 🙂

This is the second in a series of quick updates on travel and meetups I attended this year, for or because of LibreOffice / The Document Foundation.

On invitation by Michael and his Collabora crowd, this year saw the first LibreOffice hackfest ever on English soil, conveniently located, and helpfully scheduled in parallel to the annual Cambridge beer festival.

Attendees and host were great, my attention this time evenly split between hacking, personal talks, and very well-organised and entertaining evening activities (see below). I even fixed a bug! 🙂

This is the first in a series of quick updates on travel and meetups I attended this year, for or because of LibreOffice / The Document Foundation.

Thanks to Florian, the German LibreOffice community again had the opportunity to meet in person, to work and plan activities for the coming 12 months. As usual, this meetup took place in the Linux Hotel in Essen, a lovely location, and conveniently placed in the middle of Germany. The event took place a few weeks ago already, during the weekend June 19-21st. Bubli went first, since I could only join Saturday evening due to a conflicting family event.

The meeting was a blast, and with a virtual group like the LibreOffice community, a most welcome (and far too seldom) opportunity to connect in person. The agenda was packed, and a number of activities identified there got started already (IT & Business trade fair, updated flyers).

Martin and Italo, cooking

Martin and Italo, cooking

Sunday morning plenary session

Sunday morning plenary session

Was great to be there, and very encouraged by the newly-invigorated German LibreOffice community spirit! On that account, and if you’re able to read German: there’s a very nice and in-depth special edition of the iX computer magazine available, covering Office productivity in general and LibreOffice in particular.

After a 1.5 year stint in Linux virtualization and cluster file systems (thanks SUSE for the exciting times – btw, they’re hiring!), I’m most happy to report today a return to fulltime LibreOffice work.

Starting already from last Thursday, I’m now part of a growing team of LibreOffice experts at the German CIB, one more in a set of independent software vendors offering service, support, consulting, as well as migration and trainings around LibreOffice. In my other capacity as chairman of LibreOffice’s The Document Foundation, it is most encouraging to see this thriving ecosystem, providing real choice to anyone deploying LibreOffice professionally.



Did I mention that The Document Foundation really encourages everyone relying on LibreOffice in a business setup, to talk to one of the ecosystem companies for (optional) bugfixing and support? This is not because LibreOffice would not be usable as such, but instead it is my experience that bugs and other problems turn up only with specific documents. A service contract with one of the listed companies gives your specific problems the priority they need, when you need it.

What else to add at this point? I look forward being in Munich most of this month, one of the larger LibreOffice deployments in the public sector, that we’re supporting. I’d like to encourage anyone using, or considering use of LibreOffice professionally, to take a look at Munich as a wonderful example; and of course CIB — and I personally — would be most happy to support you and your company to make your LibreOffice deployment a success!

And lastly, we’re still growing our team. Please check our (German) jobs page for offers, and/or if you’re an experienced LibreOffice hacker, contact me directly. For all of the above, my new work email is Thorsten.Behrens at

Happy hacking, and see you around! 🙂

Over the years, I met a number of people — trainers, speakers, hackers — who produce a lot of slide-ware (decks often more than a hundred pages wide), but never really use the conventional presentation packages for it.

Instead, they script things, (partially) autogenerate text, and use one of the markup-to-presentation converters out there: latex beamer, showoff, pandoc, or S9 (there’s much more).

Asking them why, the answer is always one or more of the below:

  • I prefer my text editor over the slide editing package
  • I want to track my content in a revision control system
  • I auto-generate content, or need to frequently merge stuff
  • and (rather infrequently): because PowerPoint is just sooo not cool

I can’t really help with the last item, but the first three clearly resonate well with me. While I was preparing slides for a hands-on session about ceph last year, I thought it would be pretty nice to get some tool hacked up that formats all the shell commands in nice typewriter script, and let me re-generate slides after every major rework (we were in the middle of moving demo setup to AWS, i.e. the ground was changing under our feet substantially). Born was the first rough cut of odpdown:

Why I didn’t re-use one of the existing tools from above? Well, the event in question had strict requirements on the design and formatting of the slides, so I was stuck with a given Impress or PowerPoint slide template. And secondly, I think the auto-generation software space in the ODF ecosystem is under-developed — this is therefore to some extent a showcase for what is possible, and what existing libraries are there to build upon.

So the initial hack has since been refined a lot, and test-driven by a few people (12 issues filed in two days by Adam Spiers, I was embarrassed!). Therefore today I feel confident enough to announce version 0.4.1 as a beta release a bit more widely:

Using it should be a matter of installing the package (manual installation instructions and a quick usage howto here), typing up some markdown, and calling it thusly:

     odpdown \
     --break-master=break_slides --content-master=content_slides \ corp_template.odp out_slides.odp

A quick walk-through PDF for basic markup is available here:

Basic markup

Basic markup


Conversely, a quick walk-through PDF for more advanced markup is here:

Advanced markup

Advanced markup


Have fun!

Apologies for being really extra-late with this report, but at least I don’t have to update this post with links to late video uploads or the upcoming LibreOffice 4.4 features page. 😉

Let me first thank Google’s OpenSource office for their generousity, our many volunteer mentors for their time & efforts, and of course this year’s ten successful GSoC students for their outstanding job!

Without further ado, below is the collection of the achievements during the 2014 GSoC period, in no particular order:

Andrzej Hunt

Andrzej is a returning GSoC student, and continued his work with the mobile story for LibreOffice. In particular, he worked on tiled rendering support in Calc and Impress, to be used e.g. for viewer applications on mobile devices.

With his words, the achievements include:

  • “Zoom” Controls for the gtk tiled viewer. (Zooming is however quite slow as we’re repainting a huge tile…)
  • A part selector for the gtk tiled viewer, i.e. permits switching between tabs in a spreadsheet, or slides in a presentation (writer documents are however rendered all as one huge block).
  • Associated zoom and part selection methods for the LokDocView gtk+ widget.
  • A quad-tiled widget for testing (nothing to do with real tile composition…): this allows for inspecting tile transitions/borders (and was useful for finding some more glaring issues in the calc implementation).
  • Some automated tests that aren’t yet fully enabled due to some further bugs that have been uncovered (which would cause them to fail).

Here’s how it looks:

Impress tiled rendering

Calc tiled rendering

Andrzej’s LibOCon talk gives even more details.

Anurag Kanungo

Anurag implemented an Adobe Pagemaker import filter from scratch, for the Document Liberation Project – a sister project of LibreOffice, also under the roof of The Document Foundation

In his words, this is what he did:

  • Reverse Engineered about the encoding of various shapes ( line, rectangle, polygon, ellipse) in the pmd file format, using oletoy.
  • Parsing of various shape transformations such as Rotation and Skew.
  • Implementation of proper geometry and output the shapes to open document format.
  • Rotation and Skew is implemented for the shapes. So, that basic skeleton of all the shapes are ready.
  • Fill and Stroke are reverse engineered and parsing is done.
  • Solid Fill and Normal Stroke for shapes are output properly.

Remaining issues:

  • Ellipse Skew Output is not perfect yet.
  • Fill patterns are to be implemented. ( Bars, Tilted lines, Grids etc.)
  • Stroke patterns are to be implemented. ( Dashed array, multi line stroke etc.)
  • Stroke are not output properly, Pagemaker stroke overlaps the shape where as open document format adds stroke on the outside the shape. ( To reproduce the problem , try a custom stroke on a rectangle with width 40pt and then convert).
  • Fill doesn’t work fine for open polygon.

You can find a pagemaker file and a converted odg file here for comparison:

Original PageMaker rendering
As imported by the new filter

Further details can be found on Anurag’s blog.

Valentin Kettner

Valentin jumped onto the thankless job of refactoring Writer – both the oldest and the largest application in the LibreOffice suite, with a lot of coding sins and technical debt. One example: sw/inc/doc.hxx is included by half of the Writer source files, and itself includes loads of other headers (by way of being the central class of a text document). Apart from undesirably tight coupling, that also causes a major and unneeded increase in incremental (re-)build times.

Below is the impressive list of changes Valentin did:

  • fdo#75280 Started cleaning up of sal_uIntPtr usage.
  • Split out the IDocumentDeviceAccess interface of SwDoc.
  • Started cleaning up of IDocumentDeviceAccess methods in SwDoc.
  • Removed getVirtualDevice and setVirtualDevice from SwDoc.
  • Cleaning up of IDocumentDeviceAccess methods in SwDoc.
  • Cleaning up of IDocumentDeviceAccess methods in SwDoc.
  • Finished cleaning up of IDocumentDeviceAccess methods in SwDoc.
  • Made SwDoc::getDocumentDeviceAccess return a reference.
  • Work on DocumentSettingManager for SwDoc.
  • Added 32DummyCompatabilityOptions to DocumentSettingMananger
  • Removed DocumentSettingManager methods from SwDoc.
  • Removed IDocumentSettingAccess.hxx include in SwDoc.hxx
  • Removed IDocumentDeviceAccess.hxx include in SwDoc.hxx
  • Fixed a typo in IDocumentSettingAccess.hxx
  • Added IDocumentSettingAccess& getIDocumentSettingAccess() to SwDoc
  • Changed DocumentDeviceManager includes to IDocumentDeviceAccess.
  • Split out IDocumentDrawModelAccess from SwDoc.
  • Moved SwDoc’s get methods from docnew to doc.cxx
  • Finished rebasing to master.
  • Refactored IDocumentChartDataProviderAccess in SwDoc.
  • Refactored IDocumentTimerAccess in SwDoc into DocumentTimerManager.
  • Refactored IDocumentLinksAdministration out of SwDoc.
  • Refactored IDocumentListItems out of SwDoc.
  • Refactored IDocumentListsAccess out of SwDoc.
  • Refactored IDocumentOutlineNodes out of SwDoc.
  • Refactored IDocumentContentOperations out of SwDoc.
  • Fixed build fail on MacOSX after f634ec5 .
  • Fixed another build failure caused by 2 refactorings.
  • Added #include to DocumentContentOperationsManager.
  • Refactored IDocumentRedlineAccess out of SwDoc.
  • Refactored IDocumentFieldsAccess out of SwDoc.
  • Refactored IDocumentLineNumberAccess.
  • Refactored IDocumentStatistics our of SwDoc.
  • Refactored IDocumentState out of SwDoc.
  • Refactored IDocumentLayoutAccess out of SwDoc.
  • Refactored IDocumentStylePoolAccess out of SwDoc.
  • Refactored IDocumentExternalData out of SwDoc.
  • Refactored SwDoc::GetEditShell .

Valentin’s mentor Michael Stahl’s LibOCon talk gives even more details.

Efe Gürkan Yalaman

Efe worked on the new LibreOffice start center, improving it such that templates now appear directly in the Start Center, and can be picked from there:


Below is what Efe achieved during GSoC:

  • Start Center now has TemplateLocalView with templates.
  • Default view (TemplateLocalView) is set to show all types of templates.
  • A few more handlers and toolbars got moved
  • Opening regions works properly
  • Creating and deleting folders works.
  • Moved initial parts of TemplateBar.(Save, Export etc.)

Future work:

  • Change Templates button with a dropdown to filter the templates for the Module.
  • Put a return point to Recent Documents. Maybe put it in the dropdown?
  • How should editing work?
  • Pondering about filtering (date, alphabetical, filetype etc.)

Efe’s LibOCon talk contains a demo and many more details.

Matteo Campanelli

Matteo worked on two pieces, both situated in the Draw and Impress text editing code. Firtly, the missing feature of setting a background color for text characters was implemented. This was needed especially be a number of Document Liberation Project import filters.


Secondly, a more challenging task was started, namely involving automatic flow of text from one box to another. Imagine having a text box containing too much content for its size. In some documents it is not possible or convenient to solve the problem resizing the box or the font. In these situations we may want the overflowing text to move to some other area in the document, such as another text box logically linked to the overflowing one. This is commonly used for two-column text layouts, but was missing for Impress


See also Matteo’s LibOCon talk for more details and insights.

Mihai Varga

Mihai successfully implemented support for OneDrive and Microsoft SharePoint 2010 native API into libcmis. He also fixed LibreOffice to work with those 2 new protocols. So users will soon be able to grab their documents from their OneDrive account or from SharePoint Foundation server.


See alo Mihai’s LibOCon talk for more details and a demo.

Krisztián Pintér

Krisztián implemented support for more colour palettes, reading of “.gpl” (Gimp) palettes and redesigned the colour picker to be able to use them. With the new colour picker the user has the ability to select the wished colour palette in a drop down menu that are included in the profile (by default there are already additional palettes included). As a document can have colours that are not provided by any colour palette (especially when the document is not ODF), Krisztián added gathering of all colours in the current opened document and presented them as “Document colours” palette.

There were 2 more changes that were missing, are very convenient and highly requested: recent colours and custom colour. With custom colour a user has the ability to select a colour from the colour spectrum, and use that in the document. Recent colour are those that were recently chosen by the user – it is unlikely that a user will use many colours in a document so such a list of recent colours is very convenient for users when they are creating a document.

All this changes have been integrated into master and will be available in LO 4.4.

See also Krisztián’s LibOCon talk for more details and insights.

Rachit Gupta

Rachit worked on the LibreOffice support for FireFox personas (a feature implemented in an earlier gsoc term). During this Summer of Code, he improved the usability of personas. LibreOffice version 4.0 introduced the possibility of applying Firefox Personas to the suite so that users can customize the look and feel while working with LO. However, to do that, the user had to open up the dialog, which would redirect them to a browser, search for the themes on the Mozilla website, copy the URL back in the dialog and wait till the theme was downloaded and applied. The aim for the summer was to make this process a bit more intuitive for the user. The user can search for themes by putting in a search term in the dialog itself. The dialog searches for themes using the Mozilla add-on API, and display the first 9 results with previews in the dialog itself. The user can select any theme and continue working as the theme is now downloaded in a separate thread which does not block the main thread. Also, the user can install a self made theme using oxt extensions. The user can install multiple oxt themes and select one from them.


Palneik Mihaly and Szymon Kłos

Both Mihaly and Szymon worked (independently) on converting legacy UI fixed-layout dialogs over to Caolán’s new format, which is editable by the glade UI builder tool.

When they started working, 64 Dialogs and TabPages were still awaiting conversion. It was uncertain how to launch all of them (obscure cases, unclear if related to long-removed functionality etc). These were the last, and therefore most obscure, difficult to convert, or just plain huge ones.

And the end of the project, each student converted approximately 30 dialogs and TabPages. That means, all .src-based dialogs were converted, as well as all .src-based TabPages.

From the wiki page tracking the UI conversion:

  • 842 .ui files currently exist
  • There are 0 unconverted dialogs
  • There are 0 unconverted tabpages
  • There are 0 unconverted errorboxes
  • There are 0 unconverted infoboxes
  • There are 0 unconverted queryboxes
  • There are 0 unconverted warningboxes
  • There are 0 unconverted msgboxes
  • There are 0 unconverted floatingwindows
  • There are 19 unconverted dockingwindows
  • An estimated additional 19 .ui are required
  • We are 97% of the way through the .ui conversion.

(footnote: by now 100% is converted)

Please also see Palneik’s and Szymon’s LibOCon presentations for details and their experiences.

As an aside: the next opportunity to meet loads of LibreOffice hackers will be during the annual FOSDEM in Brussels. We’re having a number of talks in the OpenDocument Editor’s DevRoom, and a stand in the K building. Looking forward!