Welcome to The Document Foundation Planet

This is a feed aggregator that collects what LibreOffice and Document Foundation contributors are writing in their respective blogs.

To have your blog added to this aggregator, please mail the website@global.libreoffice.org mailinglist or file a ticket in Redmine.

11 May, 2021


By helping to translate and market LibreOffice around the world, native language projects bring enthusiasm and passion to the global community. Here’s what they did in 2020…

(This is part of The Document Foundation’s Annual Report for 2020 – the full version will be posted here on the blog soon.)

Central Kurdish

Support for the Central Kurdish language was added to LibreOffice in 2021, and Jwtiyar Ali helped to drive the translation of the suite’s user interface. In addition, a Telegram group was created for community members to talk about upcoming translation projects, and bring new translators on board. Throughout the year, the Central Kurdish team worked on translating strings, with the goal in 2021 being to complete all translations, and also provide a dictionary for the language.

For more on this project, see our interview with Jwtiyar here.


InstallFest, which took place in Prague on 29 February and 1 March 2020, was an event focused on GNU/Linux, helping new users to install the operating system. But it also had lectures and stands for many other free and open source software projects, and the Czech LibreOffice community was there with a booth.

The vast majority of visitors were from younger generations – often high school or even elementary school pupils. The new mobile application from Collabora, which was released just a few days before the event, aroused great interest, as did LibreOffice Online. Other visitors to the booth asked questions was about handling ODF files with embedded fonts, and the status of various bug reports.

Later in the year, the Czech community gave a talk at the OpenAlt conference (online) about maintaining an experimental Czech spellcheck dictionary in LibreOffice.

Outside of events, community members worked on maintaining and updating the Czech language LibreOffice website, supported users by answering questions on the CZ Ask LibreOffice website, and kept social media updated with 600 tweets on the Twitter account (and regular activity on the Facebook page).

On other websites, Czech contributors published articles and news on Czech FOSS portals (openoffice.cz, root.cz, abclinuxu.cz), and ran a small survey (with 20 responses) to collect examples of how LibreOffice is being used in schools, organizations and small companies.

In terms of translations, the Czech community announced their work using platforms for volunteers – which turned out to be a great way to involve of new contributors. Tens of volunteers participated during 2020. Together with long-time community members, they worked on translations for LibreOffice’s user interface and help content (both at 100%), subtitles for videos, FAQ articles and other pages on the wiki.

The Online guide for LibreOffice 6.3 translated and published in March 2020, followed by the Math guide for LibreOffice 6.4 in June, and the Getting Started Guide for LibreOffice 6.4 in July.


Throughout 2020, the Dutch-speaking LibreOffice community was involved in various projects and activities. For instance, community members helped to support LibreOffice users by answering questions on the Ask LibreOffice website and

10 May, 2021


(This image shows some LibreOffice community members from our map. If you’re not there, or want to get your location on the map, let us know!)

Today we’re talking to Dante Doménech, who’s helping to improve LibreOffice Math

Hi Dante – tell us a bit about yourself!

I’m from Spain – the biggest city in the area is Valencia. I’m a physics student, and my hobbies are coding and reading about other scientific fields.

What are you doing in the LibreOffice project right now?

I’m working on updating the suite’s formula editor to be fully compatible with MathML. This would increase the strength of our formula editor, by backing it with a solid standard.

Additionally, I’m working on adding support for Kahan summation, for handling sums in LibreOffice Calc. This would increase the accuracy of statistical operations – in particular sum, average, standard deviation …

How did you originally get involved, and what was the experience like?

There was no way of using custom RGB colors in Math formulas – so I added the feature myself. It was easier than expected, because the people in the community directly pointed me to the code I was looking for.

Is there anything else you’d like to work on?

Once I’m finished with the formula editor, I may improve the collection of numerical calculus functions in Calc. I also may help with making a new Math guide.

Many thanks to Dante for all his contributions! Some of them will arrive in LibreOffice 7.2, due this summer. Stay tuned to the blog for more updates…

08 May, 2021


LibreOffice’s native file format is OpenDocument, a fully open and standardised format that’s great for sharing documents and long-term data storage. Of course, LibreOffice does its best to open files made by other office software as well, even if they’re stored in pseudo-“standards” with cryptic and obfuscated contents. Compatibility with PowerPoint PPT(X) presentations is therefore a challenge, but developers are working hard on improvements…

In September 2019, we announced an initiative to improve the support of PPT and PPTX files in LibreOffice. A year has passed since the last review and it is time to summarise achievements again.

Everyone is invited to participate in the PowerPoint support initiative, either in development or testing. If you are interested in joining, please send an email to ilmari.lauhakangas@libreoffice.org.


Miklos Vajna (Collabora):
Added import and export support for slide narrations and their icons

Borders and fills

Miklos Vajna (Collabora):
Handle stroke properties of image shapes
Improve import of transparency in multi-step gradients

Before screenshot of bug 134183

Slide before Miklos’s fix

After screenshot of bug 134183

Slide after Miklos’s fix

Regina Henschel:
PPTX: transparency gradient on solid fill is not considered in export
Add fill to fontwork in export to PPTX


Zhenhua Fong (PPT/X team):
Chart background is white instead of Automatic/No fill plot area

Custom shapes

Gülşah Köse (Collabora):
Handle greyscale effect on bitmap filled custom shapes (blog post)
Apply mirror property to custom cropped graphic (blog post)
Import support for custom stretch values (blog post)
Import crop position of bitmap filled shape (blog post)
Import graphics cropped into custom geometry as custom shapes (blog post)

Mark Hung (PPT/X team):
Export names of custom shapes

Miklos Vajna (Collabora):
Handle adjust values from both the custom shape and its placeholder

Tünde Tóth (NISZ):
Fix lost arcTo shape

Xisco Faulí (TDF):
PPT: export custom shapes as Bitmap


Tibor Nagy (NISZ):
Fix internal hyperlink to slide in PPTX
Fix lost direct hyperlink colors
Fix internal hyperlinks with PPTX export

Zhenhua Fong (PPT/X team):
Import hyperlinks from PPT


Gülşah Köse (Collabora):
Table row height improvement in Impress (blog post)

Miklos Vajna (Collabora):
Shadow for tables from PPTX in Impress (blog post)

Tibor Nagy (NISZ):
Fix vertical alignment in exported table

Text boxes

Attila Bakos (NISZ):
Fix exporting of placeholders

Gülşah Köse (Collabora):
Fix the placeholders priority order
Text box gets displaced by text coming from master page

Text in shapes

Gülşah Köse (Collabora):
Camera Rotation Improvement (blog post)

Miklos Vajna (Collabora):
SmartArt improvements in Impress, part 5 (blog post)
SmartArt improvements in Impress, part 6 (blog post)

Regina Henschel:
Text transformation “Deflate” is wrongly imported as “Inflate”
Wordart 3D is lost on round trip

Serge Krot (CIB):
Top-aligned text in imported PPTX becomes bottom-aligned


Ahmad Ganzouri:
OOXML support for shadow blur

Bartosz Kosiorek (PPT/X team):
OOXML Fix storage of date in Custom Properties

Dániel Arató (NISZ):
Fix missing chart in exported PPTX

06 May, 2021


Berlin, May 6, 2021 – LibreOffice 7.1.3 Community, the third minor release of the LibreOffice 7.1 family, targeted at technology enthusiasts and power users, is available for download from https://www.libreoffice.org/download/. LibreOffice 7.1.3 includes over 100 bug fixes, with 25% focused on Microsoft Office file compatibility (DOCX, XLSX and PPTX).

For enterprise-class deployments, TDF strongly recommends the LibreOffice Enterprise family of applications from ecosystem partners, with long-term support options, professional assistance, custom features and Service Level Agreements: https://www.libreoffice.org/download/libreoffice-in-business/.

LibreOffice Community and the LibreOffice Enterprise family of products are based on the LibreOffice Technology platform, the result of years of development efforts with the objective of providing a state of the art office suite not only for the desktop but also for mobile and the cloud.

Products based on LibreOffice Technology are available for major desktop operating systems (Windows, macOS, Linux and Chrome OS), mobile platforms (Android and iOS) and the cloud. They may have a different name, according to each company brand, but they share the same LibreOffice unique advantages, robustness and flexibility.

Migrations to LibreOffice

The Document Foundation has developed a Migration Protocol to support enterprises moving from proprietary office suites to LibreOffice, which is based on the deployment of a LTS version from the LibreOffice Enterprise family, plus migration consultancy and training sourced from certified professionals who offer CIOs and IT managers value-added solutions in line with proprietary offerings. Reference: https://www.libreoffice.org/get-help/professional-support/.

Availability of LibreOffice 7.1.3 Community

LibreOffice 7.1.3 Community represents the bleeding edge in term of features for open source office suites. For users whose main objective is personal productivity and therefore prefer a release that has undergone more testing and bug fixing over the new features, The Document Foundation provides LibreOffice 7.0.5.

LibreOffice 7.1.3 change log pages are available on TDF’s wiki: https://wiki.documentfoundation.org/Releases/7.1.3/RC1 (changed in RC1) and https://wiki.documentfoundation.org/Releases/7.1.3/RC2 (changed in RC2).

LibreOffice Technology based products for Android and iOS are listed here: https://www.libreoffice.org/download/android-and-ios/, while for App Stores and ChromeOS are listed here: https://www.libreoffice.org/download/libreoffice-from-microsoft-and-mac-app-stores/

LibreOffice individual users are assisted by a global community of volunteers: https://www.libreoffice.org/get-help/community-support/. On the website and the wiki there are guides, manuals, tutorials and HowTos. Donations help us to make all of these resources available.

LibreOffice users are invited to join the community at https://ask.libreoffice.org, where they can get and provide user-to-user support. People willing to contribute their time and professional skills to the project can visit the dedicated website at https://whatcanidoforlibreoffice.org.

LibreOffice users, free software advocates and community members can provide financial support to The Document Foundation with a donation via PayPal, credit card or other tools at https://www.libreoffice.org/donate.

LibreOffice 7.1.3 is built with document

05 May, 2021


General Activities

  1. LibreOffice 7.1.2 was released on April 1st
  2. Ilmari Lauhakangas (TDF) wrote a nice report about the progress done by the Macro Team in the last year
  3. Stanislav Horacek updated some menu paths in Help.
  4. Seth Chaiklin clarified the meaning of numbered paragraphs in Help.
  5. Olivier Hallot (TDF) made 20 changes and additions to Help with topics including menus, Calc cell protection and direct formatting.
  6. Jean-Pierre Ledure worked on the ScriptForge library
  7. Alain Romedenne and Rafael Lima improved the Help content for the ScriptForge library. Rafel also made it so word wrapping in shapes is enabled by default in Impress and Draw.
  8. Xisco Faulí (TDF) made about 30 improvements and additions to unit and UI tests, fixed some regression bugs and added an automated check for translation domains in .ui files
  9. Rizal Muttaqin made updates to all icon themes
  10. Jan-Marek Glogowski, Armin Le Grand and Thorsten Behrens (allotropia) worked on the WASM build in a feature branch
  11. Tibor Nagy (NISZ) fixed losing internal hyperlinks upon PPTX import
  12. Vert D improved renaming behaviour in the Template Manager
  13. Tushar Kumar Rai fixed a Data Provider crash
  14. Roland Kurmann fixed filtered/transpose paste in Calc while adding many new unit tests for the functionality, fixed copying multiple cells from a Calc column and pasting outside LibreOffice and made it so only the count of non-filtered rows will be shown in Calc’s status bar
  15. Dante Doménech added some MathML structures and started making use of the Kahan summation algorithm in Calc in order to reduce the numerical error in the total of floating-point calculations
  16. Ilhan Yesil made it so the tooltip of a button created by an extension in the Sidebar is refreshed immediately upon text changes
  17. Áron Budea (Collabora) fixed a regression in the Modify DDE Link dialog layout
  18. Attila Bakos (NISZ) fixed some Writer textbox crashes and regressions and fixed PPTX exporting of template textbox placeholders
  19. Tünde Tóth (NISZ) fixed some issues with Calc filtering
  20. Jeff Huang fixed a Writer regression in inserting lines with arrow/circle
  21. Mark Hung fixed an undo-redo crash
  22. Andreas Kainz improved the Notebookbar command logic and improved the layout of some dialogs
  23. Aditya Pratap Singh made the image export dialog behaviour more intuitive
  24. Luke Deller fixed an issue with Writer using 100% CPU while idle
  25. Pedro Pinto Silva improved the macro selector and about dialog layouts
  26. Bubli fixed some Impress animation issues
  27. Heiko Tietze (TDF) made it so the location in file properties dialog is a hyperlink and improved the Style Inspector layout
  28. Matej Kivader fixed the display of custom button text colour in Basic dialog designer
  29. Gábor Kelemen (NISZ) made improvements in menu accelerators, buttons and Impress/Draw general options layout
  30. Stephan Bergmann (Red Hat) made many code cleanups, replaced apache-commons-logging with java.util.logging.Logger in report builder and elsewhere, fixed unnecessary authentication prompt upon having sftp URIs in recent documents and improved compatibility with C++20
  31. Hossein Noorikhah converted all the README files to consistent Markdown


Regina Henschel shows you how to do some nifty 3D tricks in LibreOffice…

First, you need a world map in “Miller projection”. You find a suitable one on Wikipedia – download the full-size version. Here’s a thumbnail of it (CC-BY-SA, Daniel R. Strebe, August 2011):

Next, start LibreOffice Draw, and create a sphere from the “3D-Objects” toolbar.

Click the sphere to select it, right-click to bring up the context menu, and choose “Area”.

In the dialog box that appears, click on “Bitmap” and then on “Add/Import”. Select the downloaded map, and enter a name for it, that you will use in your collection of bitmaps. The image should be applied to the sphere. If not, select the map from the collection.

Then, in the “Options” part of the dialog box, select the item “Stretched” from the drop-down list “Style”. Click OK. Your globe is finished!

Now you can rotate the globe to the part of the earth you want to see – click on it once to show red corner controls, then once again to show orange; the latter can be used for rotation.

If you want to change the position of the “sun”, open the “3D Effects” dialog from the context menu. Select the tab “Illumination”. In the lower part drag the ball to the desired direction. And finally, apply it with the “Assign” icon top right.

Thanks to Regina for the tips! More guides for LibreOffice Draw, written by our documentation community, are available on this page. Check out the Draw Guide 6.4 for lots more info!


The bibliography feature in Writer allows authors of e.g. scientific papers to track sources: first you can insert bibliography entry fields, then at the end you can generate a bibliography table automatically.

Writer recently gained two improvements in this area, and now there is one more: the ability to refer to a specific page of a (potentially long) source.

First, thanks TUBITAK ULAKBIM who made this work by Collabora possible.


The same feature in normal HTML linking / citation is well-known: you can place anchors in your document and then links can refer to not only to your page, but also can set the fragment part of the URL to jump to a specific section directly. E.g. this link will jump to the "Motivation" section of the above referred previous post.

Wouldn’t it be nice if you could also jump to a specific page of a scientific PDF?

Results so far

You can add such references by choosing the Insert → Table of Contents and Index → Bibliography Entry menu item. Set Bibliography Source to Document Content and press the New button. The appearing dialog now has widgets to set a specific page number:

Figure 1. Refer to a specic page of a bibliography source, user interface

This is then stored in the URL by setting its fragment to page=..., and typically PDF readers understand this syntax, so when you click on the URL, the PDF will open exactly on the cited page.

This also works the other way around: URLs with such syntax are presented to the user with the dedicated widget to see, edit or delete the page number of the URL.

Finally, if you refer to different pages of the same source, the bibliography text generator detects this and lists the source in the bibliography only once.

How is this implemented?

If you would like to know a bit more about how this works, continue reading… :-)

As usual, the high-level problem was addressed by a series of incremental development steps:

04 May, 2021


The LibreOffice Conference is the annual gathering of the community, our end-users, developers, and everyone interested in free office software. Last year, it took place online – and was co-organised with the openSUSE project

(This is part of The Document Foundation’s Annual Report for 2020 – the full version will be posted here on the blog soon.)

Normally the conference takes place at a different venue each year, to reflect the international and diverse LibreOffice community. For instance, in 2019 we were in Almeria; in 2018 in Tirana; and in 2017 in Rome. Due to the ongoing coronavirus pandemic, though, we decided to move the conference online in 2020. This wasn’t an easy decision, as face-to-face meetups are important for free and open source software projects, but we focused on making it work.

We did so with the help of openSUSE, a GNU/Linux distribution project, which also has yearly conferences. There’s a lot of overlap between the openSUSE and LibreOffice projects – both produce free software for end users, and many people are active in both communities – so we decided to join forces and bring as many people together as possible.

The conference took place from 15 – 17 October, with sessions usually running from 10:00 to 21:00 (UTC). We created multiple Jitsi “rooms” for the various talks and presentations, along with extra rooms for social interaction and general chit-chat.

Conference Tracks

Following the opening session, presentations and talks were given across various “tracks” or categories: Development, Advocacy, Marketing, Design, Accessibility, Localisation, Documentation and more. There were highly technical talks focused on specific areas, along with more open discussions about community building and recent updates from The Document Foundation.

On the final day, the conference wrapped up with a closing session, headed by TDF’s Chairman, Lothar Becker. He thanked the presenters and all attendees for their support, especially given that it was the first time we’ve run such a large event online.

Hackfest and Workshops

Outside of the conference tracks, there were several workshops covering certification, new tools to onboard contributors, strategic marketing, and the Google Summer of Code. On the final day of the conference, Ilmari Lauhakangas organised a Virtual Hackfest – an opportunity for developers to work together on features and bugs.

Full Programme

Full details about the event are available on openSUSE’s events page. For a quick overview of all the talks, including links to PDF versions of the presentations, see here. Videos of many of the talks are available as a playlist on our YouTube channel (or click here to watch them on PeerTube):

Please confirm that you want to play a YouTube video. By accepting, you will be accessing content from YouTube, a service provided by an external third party.

YouTube privacy policy

If you accept this notice, your choice will be saved and the page will refresh.

Like what we do? Support the LibreOffice project and The Document Foundation – get involved and help our volunteers, or consider

03 May, 2021


Check out our summary of what happened in the LibreOffice community last month…

  • Meanwhile, the Council of the German city of Dortmund announced that it’s moving to free and open source software, where possible. This is great news: in the future, the city administration will have to justify why open source software cannot be used for every proprietary software application.

  • Our New Generation project, aimed at bringing new (and especially younger) contributors into the community, announced its first work: flyers to hand out in schools and universities. They’re available in many languages, and encourage younger people to not just use LibreOffice, but also get involved with it too.

  • Later in the month, we chatted with Necdet Yücel, who has been mentoring students and helping them to get involved with LibreOffice.

  • LibreOffice’s Macro Team wrote a progress report, listing documentation updates and code contributions from many community members. A big thanks to everyone who’s helping to improve LibreOffice’s macro support.

  • Our French community has been working on translations for LibreOffice user guides, so we thanked them with special Open Badges, containing custom metadata, recognising their achievements!

Keep in touch – follow us on Twitter, Facebook and Mastodon. Like what we do? Support our community with a donation – or join us and help to make LibreOffice even better for everyone!

01 May, 2021


If you’ve been using LibreOffice for a while, you may be wondering: who makes it? Well, the answer is: people like you! LibreOffice is a worldwide, community open source project – and many people who help to improve it, actually started out as regular users of the software.

So in May, we want to encourage you to get involved, join our community, and have fun. You can build up valuable skills for a future career – and you don’t need to be a programmer. There are many ways to help make LibreOffice awesome, as we’ll see in a moment.

And best of all: everyone who contributes to LibreOffice in May 2021 can claim a cool sticker pack, and has the chance to win extra LibreOffice merchandise such as mugs, hoodies, T-shirts, rucksacks and more (we’ll choose 10 participants at random at the end):

How to take part

So, let’s get started! There are many ways you can help out – and as mentioned, you don’t need to be a developer. For instance, you can be a…

  • Handy Helper, answering questions from users on Ask LibreOffice. We’re keeping an eye on that site so if you give someone useful advice, you can claim your shiny stickers.
  • First Responder, helping to confirm new bug reports: go to our Bugzilla page and look for new bugs. If you can recreate one, add a comment like “CONFIRMED on Windows 10 and LibreOffice 7.1.2”.
  • Drum Beater, spreading the word: tell everyone about LibreOffice on Twitter or Mastodon! Just say why you love it or what you’re using it for, add the #libreoffice hashtag, and at the end of the month you can claim your stickers.
  • Globetrotter, translating the user interface: LibreOffice is available in a wide range of languages, but its interface translations need to be kept up-to-date. Or maybe you want to translate the suite to a whole new language? Get involved here.
  • Docs Doctor, writing documentation: Whether you want to update the online help or add chapters to the handbooks, here’s where to start.

We’ll be updating this page every day with usernames across our various services, as people contribute. So dive in, get involved and help make LibreOffice better for millions of people around the world – and enjoy your sticker pack at the end as thanks from us! And who knows, maybe you’ll be lucky enough to win bonus merch as well…

Let’s go! We’ll be posting regular updates on this blog and our Mastodon and Twitter accounts over the next four weeks – stay tuned!

30 April, 2021

Caolán McNamara: Link

16:07 UTC


Math Selection Rendering

Towards 7.2 the Math edit window text selection is now drawn the same as the selection in the main applications. This affects the selection of similar uses of this EditView in LibreOffice such as the writer comments in sidebar.


Thanks to localisation volunteers around the world, LibreOffice’s documentation is available in many languages. Today, we want to say thanks to the French community of translators, who localised the guide for LibreOffice Math 7.0 – great work, everyone!

Each translator gets an Open Badge from The Document Foundation, the non-profit behind LibreOffice. These are special, custom images with embedded metadata, confirming the contributions.

So, if you got a badge, feel free to share it on your blog, social media, Git page and other places! And indeed use it as proof of your abilities, when joining another project or looking for work! You can verify your badge here.

The recipients:

  • Maëlle GONZALEZ
  • Célian LIMOUSIN
  • Baptiste LECUYER

Enjoy, and thanks again! Stay tuned to this blog for more Open Badges in coming months…

29 April, 2021


The Document Foundation (TDF) is the charitable entity behind the world’s leading free/libre/open source (FLOSS) office suite LibreOffice.

We are looking for an individual or company to implement Curl based HTTP/WebDAV UCP.

The work has to be developed on LibreOffice master, so that it will be released in the next major version.

The task consists of addressing two problems. All of the mentioned features and requirements are a mandatory part of this tender and therefore have to be part of the bid. This tender does not contain any optional items.

Problem description #1 – Currently we need to bundle crypto libraries

  • TDF releases of LibreOffice bundle both OpenSSL and NSS, but both libraries have a high number of security issues.
  • On macOS and Windows, neither OpenSSL nor NSS integrate with the crytographic APIs supplied by the operating system, so they will use a bundled hard-coded set of trusted certificate authorities (CAs), that is different from what the operating system itself would trust. This hard-coded set of trusted certificates is also not user-modifiable.
  • Additionally, OpenSSL cannot ever be used from the system because it has no application binary interface (ABI).

Problem description #2 – Currently we duplicate and use different HTTP/WebDAV UCPs

  • One which is used by everybody, including TDF releases, using a bundled Neon WebDAV library. This requires OpenSSL and cannot be used on a hypothetical Apple iOS port.
  • Another (for a hypothetical Apple iOS port) using a bundled Serf library. This requires OpenSSL.
    • Serf does not actually support WebDAV directly, only HTTP, so the UCP itself implements the additional WebDAV protocol features.
    • It is complicated to build, as it drags in two other bundled external libraries.
    • Additionally, this cannot be upgraded to a current version without introducing a new build dependency on the “scons” tool.
  • TDF releases also bundle the Curl library.
    • This can can do HTTP, likely similar to Serf.
    • Also, it can use native operating system cryptographic APIs and trusted certificate authorities (CAs) on Windows, macOS and Linux.
    • It can be used on Apple iOS without problems. (iOS deliverables are not part of this tender.)

The solution we seek, and as such the scope of this tender, is to implement a HTTP/WebDAV UCP with Curl, possibly based on code from the Serf UCP, to solve these issues, by getting rid of four bundled external libraries and one hard OpenSSL dependency. Besides addressing the above issues, the new Curl-based implementation needs to be at least as functionally complete as the existing Neon-based one.

All technology standards of relevance, as well as their targeted versions for this tender should be declared or defined in the offer’s description of implementation (e.g. name and version of the cryptographic API on the respective operating systems).

A key item of the deliverables for this tender, and therefore also a decision criteria – besides qualification, references, price, and completeness of fullfilment – is extensive documentation about the approach chosen to implement the above items, covering more than just the pure

18 April, 2021


 In other words, how much faster will a compiler be after it's been built with various optimizations?

Given the recent Clang12 release, I've decided to update my local build of Clang11 that I've been using for building LibreOffice. I switched to using my own Clang build instead of openSUSE packages somewhen in the past because it was faster. I've meanwhile forgot how much faster :), and openSUSE packages now build with LTO, so I've built Clang12 in several different ways to test the effect and this is it:

The file compiled is LO Calc's document.cxx, a fairly large source file, in a debug LO build. The compilation of the file is always the same, the only thing that differs is the compiler used and whether LO's PCH support is enabled. And the items are:

  1. Base - A release build of Clang12, with (more or less) the default options.
  2. CPU - As above, with -march=native -mtune=native added.
  3. LTO - As above, with link-time optimization used. Building Clang this way takes longer.
  4. LTO+PGO - As above, also with profile-guided optimization used. Building Clang this way takes even longer, as it needs two extra Clang builds to collect the PGO data.
  5. Base PCH - As Base, and the file is built with PCH used.
  6. LTO+PGO PCH - As LTO+PGO, again with PCH used.

Or, if you want this as numbers, then with Base being 100%, CPU is 85%, LTO is 78%, LTO+PGO is 59%, Base PCH is 37% and LTO+PGO PCH is 25%. Not bad.

Mind you, this is just for one randomly selected file. YMMV. For the build from the video from the last time, the original time of 4m39s with Clang11 LTO PCH goes down to 3m31s for Clang12 LTO+PGO PCH, which is 76%, which is consistent with the LTO->LTO+PGO change above.


14 April, 2021

  • Catch up with Tor, sales call with Eloy - prodded at a nasty mis-feature with web view mode in Online and code read through a nasty with Ash. M's ballet re-starting; fun.


Writer now has better support for Word-compatible border rending when it comes to vertically merged cells in tables.

First, thanks Docmosis who made this work by Collabora possible.


Both Word and Writer allow specifying borders for any kind of table cells. When the user creates a vertically merged cell, there is a covering cell and there is one or more covered table cells.

The Writer approach is to render the cell borders according to the properties of the covering cell. This has the benefit that each edge of the table cell has a single border style (e.g. dashed or hairline).

The Word approach is to render the cell borders as if there would be no vertical merge, according to the properties of the covered cell. This has the benefit that merging the content of cells vertically doesn’t change the border rendering, but it also requires more complex code for painting.

Results so far

Writer can now detect that your tables originate from Word formats and render table borders the Word way in that case.

Here is how the new rendering result look like:

Figure 1. Writer rendering in compatibility mode, new output

And here is how it used to look like:

Figure 2. Writer rendering in compatibility mode, old output

And finally the reference rendering is:

Figure 3. Writer rendering in compatibility mode, reference output

You can see that the B4 and B5 cells are covered, they had some unwanted border on their left side and this is now gone.

How is this implemented?

If you would like to know a bit more about how this works, continue reading… :-)

  • First, some building blocks were introduced: SwCellFrame::GetCoveredCellInRow() can look up a covered cell in a certain row, provided that this cell covers it

  • Building on top of this, SwCellFrame::GetCoveredCells() can provide a list of cell frames which are covered by the current cell, due to vertical merge. This is needed, because previously the layout didn’t have to consider properties of covered cells, so while the document model had this information, it was not visible to the layout in a convenient way

  • Using the above functionality, SwTabFramePainter::Insert() can suppress painting of certain border lines in Word compatibility mode

  • Finally, the code change can be covered with a test by recording the rendering and asserting the vertical positions of border points: we can check that all the positions belong to the 1st, 2nd or 3rd rows, and not to a row below them

Want to start using this?

Collabora intends to continue supporting and contributing to LibreOffice, the code is merged so we expect all of this work will be available in TDF’s next release (7.2).

13 April, 2021

  • Mail chew, sync with Kendy; chased customer bugs, and contractuals; catch-up with Pedro.

12 April, 2021

  • Mail chew, planning call, catch up with Eloy.


Young & foolish?

In 1988 as a scrawny eleven-year old arrival alone at boarding school, perhaps the only Quaker in a thousand strong body; I wore a white poppy to the large Remembrance Day commemorations. I recall the interest and forceful objections of my peers and elders - some with armed service connections, and my impassioned pleas for a personal pacifism. No doubt there were some who were intellectual defenders of the doctrine of Just War: (love's response to a neighbour threatened), as I myself became later in life - but I suspect that the fun of picking on those who are noticeably different was the dominant motivation. I imagine a majority of those in the Free Software community have suffered similar or more traumatic experiences, associated with being noticeably and vocally different; of being outstanding in one area & yet weak in others: perhaps socially and/or athletically. Hopefully that lets us empathise with others who are oppressed. That's why in this debate I think the purest motives on both sides here are closest to this: What is love's response to a neighbour who is threatened? and then what is proportional?

Disclaimer: something must be done

Recently RMS returned to the FSF board with to my mind an indefensible lack of grace & engagement with his critics. This seems to unfortunately intersect with the absence of good, representative governance structures for eg. GPL users to affect license direction. People started on-line petitions in liu of voting to either remove the FSF board or to unconditionally support RMS. Spoiler alert - there is something to annoy everyone here. I don't believe either of these stated positions is helpful and one of them is actively dangerous. I expect RMS to demonstrate hard-core leadership by preparing for his inevitable political or physical death, and building good governance structures that can live on and continue his work. It is not a time to do nothing. KDE's, statement seemed constructive, Debian had a middle ground option, and even RedHat's position was not so extreme. I sincerely hope that the FSF can be improved and continue to reflect RMS' vision of Software Freedom.

Its not all awful

The open letter to remove the FSF board contains much that is deeply problematic, yet there are some sensible pieces, take this one:

While these ideas have been popularized in some form by Richard M. Stallman, he does not speak for us. We do not condone his actions and opinions. We do not acknowledge his leadership or the leadership of the Free Software Foundation as it stands today.

Notice the credit, and yet creating distance, notice the sensible tone, and the moderate approach. I would like to think that the several thousand people signing up to this, many of whom I like, some of whom I've really enjoyed working with are primarily saying only what this paragraph says. If so - good, I can understand that. Unfortunately alongside this reasonableness are some very profound problems that needlessly makes

11 April, 2021

  • Sermon in the car on the way to R&A's - lovely to meet L - in person: another, wonderful nephew - exciting times, and tired parents. Lots of crypto mining going on, thank goodness for an increasingly de-carbonized electricity grid. Home, slugging, bed.

10 April, 2021

  • Up, patch porting, gave a talk at LinuxTag - lovely to hear lots of spoken German again.
  • Improved garage lighting, helped J. re-paint window frame, J. opaqued the family bathroom window - nice.

09 April, 2021

  • Plugged at slides, sync with Thorsten, parents through for lunch on the way back northwards. More slide-work and playing with Moodle. Eventually poked at comment serialization to OOXML - some code!


As mentioned in a previous such report, a hack week is when we are allowed to hack on anything we want in LibreOffice / Collabora Office / Collabora Online for a few days at Collabora. I used this time to implement core support for RTL gutter margin in Writer.


I posted about Writer gutter margin in general back in February, and two follow-up requests accumulated around this new feature since then.

First, the gutter margin could be on the left or at the top for non-mirrored documents, which initially sounded like a complete solution, but later it turned out that right-to-left (RTL) documents want it on the right.

Second, there was a request from the OASIS TC to to implement the ODF filter differently for gutter margin.

Neither of these is simple to do, so this hackweek was a good opportunity to address these problems.

Results so far

Here is the layout and user interface for RTL gutter looks like:

Figure 1. RTL gutter margin in Writer, layout and UI

You can see how the gutter is on the right (not the left) and you can alter this behavior with a dedicated checkbox on the UI.

How is this implemented?

If you would like to know a bit more about how this works, continue reading… :-)

Finally I had a little bit of remaining time, so I addressed a request from the OASIS ODF TC:

Want to start using this?

Collabora intends to continue supporting and contributing to LibreOffice, the code is merged so we expect all of this work will be available in TDF’s next release (7.2).

08 April, 2021

  • Caught up with Muhammet; early lunch, interview, catch up with Frank & Philippe, idle patch porting. Poked at slideware - Marc doing a nice job.

07 April, 2021

  • Quick chat with Eloy, drove to Heartwood Forest with the family, enjoying the team recounting their progress during Productivity's hack-week last week. Lots of interest. Met up with S&C&A&J - admired bluebell wood, played games , lunch - home, caught up with mail.


General Activities

  1. LibreOffice 7.0.5 was released on March 12
  2. LibreOffice 7.1.1 was released on March 4
  3. LibreOffice was accepted as a project for the Googgle Summer of Code 2021 program
  4. Ilmari Lauhakangas (TDF) created a new wiki widget to help with navigating the Calc function documentation
  5. Steve Fanning made corrections to the Help content for Calc’s database functions
  6. Jean-Pierre Ledure worked on the ScriptForge library
  7. Alain Romedenne and Rafael Lima improved the Help content for the ScriptForge library. Rafael also updated Slide menu help for Impress and added an example for using hyperlink to folders in Writer and Calc
  8. Adolfo Jayme Barrientos and Johnny_M made smaller fixes and cleanups to Help pages
  9. Olivier Hallot (TDF) improved the Help for Java, Special characters dialog, font embedding and made cleanups
  10. Seth Chaiklin made nearly 50 changes and additions to Help, with topics including list formatting, menus, chapter numbering, page styles and shortcuts. He also made many improvements to tooltips and labels in LibreOffice. Among the people he worked with on perfecting the changes were Mike Kaganski (Collabora) and Dieter Praas.
  11. Akshit Kushwaha changed the QR code encoder library to zxing-cpp, which will allow implementing barcode support. René Engelhard and Mike Kaganski helped with code reviews.
  12. Panos Korovesis made a Writer code cleanup
  13. Jan-Marek Glogowski and Thorsten Behrens (allotropia) worked on the WASM build in a feature branch
  14. Fridrich Štrba made many improvements to libcdr (Corel DRAW importer) and release 0.1.7 was added to LibreOffice
  15. Lionel Elie Mamane fixed an SQL query crash
  16. Vert D fixed refresh showing the wrong category in the Template manager
  17. Gábor Kelemen (NISZ) assigned F4 as a shortcut for Image Properties in Writer and fixed importing WordArt effects textDeflate and textInflateTop from PPTX files
  18. Balázs Sántha improved the performance of Writer change tracking
  19. John fixed an initialisation bug in Basic
  20. Michael Stahl (allotropia) made many internal improvements to the handling of digital signatures, fixed a shape z-index issue with ODF export and implemented BackgroundFullSize property for ODF pages
  21. Jun Nogata added mixed Gregorian and Japanese gengou date formats
  22. Arpit Bandejiya made it so Basic CCur function accepts negative values
  23. Tibor Nagy and Attila Szűcs (NISZ) fixed overlapping wrapped rotated Calc cell contents and an extra page break in DOCX table export. Tibor also fixed losing table cell vertical alignment in PPTX export
  24. Bartosz Kosiorek fixed EMF issues with line width and region filling
  25. Mark Hung fixed a crash when undoing cell merge in Impress
  26. Dipanshu Garg added a UNO command for selection cycling (word, sentence, paragraph, all at cursor), so it can be used with a keyboard shortcut (F8). Dipanshu also made paragraph-anchored objects move more logically
  27. Armin Le Grand (allotropia) fixed incorrect resizing of OLE objects in Writer
  28. Tünde Tóth (NISZ) made several improvements to Calc AutoFilter, including XLSX to compatibility
  29. Eike Rathke (Red Hat) improved date format handling in order to support mixed Gregorian and Japanese gengou calendars, made Calc named ranges UI

06 April, 2021

  • Planning call with the team; worked through E-mail. David kindly tutored N & H in physics. Took H. to Bury Cathedral to practice & play the Organ in a service.


 With Clang12 almost released, I guess it's high time to write a conclusion to the Clang11 changes that improve compilation times with PCHs. I originally planned to do this after the Clang11 release, but with the process to get the changes reviewed and merged having been so tedious I was glad it was finally over and I couldn't at the time muster the little extra effort to also write this down (I spent way more time repeatedly writing 'ping' and waiting for a possible reaction than writing the code, which was really demotivating). But although the new options are described in the Clang11 release notes, I think it'd be useful to write it down in more detail.

First of all, I've already written why C++ developers might care, but a thousand pictures can be worth more than a thousand words saying how this can save you even 60% of the build time:

 In case you'd like to see a similar change in your LibreOffice compilation times, it should be as simple as this:

  1. Get Clang11 or newer and use it to build LibreOffice.
  2. Use --enable-pch (preferably --enable-pch=full) to enable PCH use.
  3. Profit.

You may want to check that your ccache and icecream are not too ancient if you use them, but by now any reasonably recent version should do. And if you need to do changes that would repeatedly trigger larger rebuilds (such as changing a header), the trick to temporarily disable PCH builds is to do 'make BLOCK_PCH=1'. And since PCH builds sometimes cause build errors in non-PCH builds because of missing #include's of headers, it's a good idea to touch all your changed files and do 'make BLOCK_PCH=1' before pushing your change to Gerrit. This is all you should need to know, the LO build system will take care of everything else.

As for the rest of the world, this boils down to the two PCH-related sections in the Clang11 release notes.

The first one is using -fpch-instantiate-templates. It needs to be set when building the PCH, but it will work even if you just add it to the CXXFLAGS used for building everything. Recent enough CMake version should handle this option automatically, I have no idea about other build systems. It should be safe to enable the option for any building with PCH. It's not enabled by default in Clang only because of really corner cases with PCHs that are not self-contained. In other words, as long as your PCH works with an empty .cpp file, it's safe, and if your PCH is not self-contained, you'd be better off fixing that anyway.

The second part using -fpch-codegen -fpch-debuginfo is more complicated, as it requires build system support, and I'm not aware of any build system besides LibreOffice's providing it. This discussion in a CMake ticket provides an example of how to use the option that seems rather simple. For other build systems

05 April, 2021

  • Day off, feeling under the weather; tidied the house, really thrilled that Oracle's unhelpful copyright case against Android is finally resolved sensibly. Pleased to have identified the real issue rather early; also that this carefully guarded API (C) approach (that made a mess of Java standardization in the past) turned out to be ineffective in the long run. Good for the industry, open standards & interoperability as a whole. Great.
  • Helped babes with their maths for some hours back to back - getting better.

04 April, 2021

  • Easter Sunday, sung & played at All Saints lovely. Visited by J&K&Penelopy for a fine lamb lunch. Really wonderful to see them again in person after many years away.

Older blog entries ->