The Document Foundation Planet


February 28, 2017

Official TDF Blog

57 video presentations from LibreOffice Conference 2016

It has taken a while, but we’ve finally uploaded the last batch of presentations (for which we have video) from last year’s LibreOffice Conference in Brno, Czech Republic. You can see all of the videos in the embedded playlist below – click the list button in the top-left corner to navigate through the videos.

Alternatively, scroll on for a full list of presentations. You can do a search in your browser for topics of interest (eg “ODF” or “LibreOffice Online”), or for presenters. Happy viewing, and we look forward to seeing you at this year’s conference in Rome!

Full list of presentations:

by Mike Saunders at February 28, 2017 03:54 PM

February 27, 2017

Official TDF Blog

LibreOffice contributor interview: Stanislav Horáček

Next up in our regular series of interviews with LibreOffice developers and contributors is Stanislav Horáček, who helps with localization in the Czech native language community.

LibreOffice contributor Stanislav HoráčekWhere are you from, and what is your nickname on IRC?

I am from the Czech Republic, and you can find me on IRC using the nicknames “horacek” or “strepon”.

Do you work for a LibreOffice-related company or just contribute in your spare time?

Just in my spare time – and that’s why there is a gap between my plans and reality 🙂

How did you get involved with LibreOffice?

Several years ago, I tried to set up custom page numbering in Writer, which was described in the built-in Help – but the Help page was written in half Czech, half English. Because I was glad that I discovered the solution of my problem, I decided to complete the page translation. As I found translating quite relaxing, that page was just a beginning…

What areas of the project do you normally work on?

Czech localization mainly; plus some corrections or bug reports for issues that I find when translating. Some time in the future, I would also like to go deeper into coding of extensions. They can be extremely helpful and it’s a pity that they are not widely promoted currently. For instance, I see a nice opportunity to use LibreOffice as a convenient front-end to another tools.

What was your initial experience of contributing to LibreOffice like?

From the beginning, I met helpful and encouraging people and I really appreciate that most of the discussions are constructive, with facts more important than feelings. I think these are the most precious properties that the community has; they made LibreOffice become my number one open source project. On the other hand, whenever I see a lack of them, I image that one more potential contributor could be demotivated…

Moreover, LibreOffice has a great advantage in that it is so widespread. I was – and still I am – impressed that you can really easily make improvements which will appear on screens of millions of people.

Which is your preferred text editor?

For LibreOffice related stuff, I use a universal text editor called Geany. But in general, I like also specialized editors or IDEs.

What do you do when you’re not working on LibreOffice?

I would say my hobbies are typically Czech, like beer drinking 🙂 You can also see me during the holidays in some of the European mountains, amongst lots of other Czech tourists. And who knows, maybe one day contributing to free software will be our national interest as well…

Thanks Stanislav. And to anyone reading this who wants to help out with translation and localisation of LibreOffice, get involved! Your contributions can make a huge difference, and will help to bridge digital divides across the globe.

by Mike Saunders at February 27, 2017 04:25 PM

Florian Effenberger

Interview über meine Arbeit in der Stiftung

Italo Vignoli hat mich über meine Arbeit bei der Document Foundation befragt. Das englischsprachige Interview findet ihr im Blog der Stiftung.

by Florian Effenberger at February 27, 2017 09:30 AM

David Ostrovsky

Gerrit User Summit 2016, Mountain View, CA

As you may know i was participating in this year Gerrit User Summit, 12th-13th November 2016, followed by Developer Hackathon in Mountain View, CA.

There were plenty of great talks, including EMail ingestion, Atomicity with change-sets, Gerrit analytics, Update on new and shiny UI, called PolyGerrit, based on Google’s own Polymer project, Zero-downtime Gerrit upgrades and what’s new and in Gerrit 2.12, 2.13 and coming next 2.14 releases.

I gave a talk about the status of my work on implementation of Bazel build for Gerrit.

After the user conference we had couple of days of Gerrit developer hackathon, where I continued to work on Bazel build implementation for Gerrit, approaching the feature parity with Buck build implementation. During the hackathon I uploaded a CL for removing Buck build, so that the new Gerrit version is going to be built and released with Bazel only.

I would like to thank Firma Frobese GmbH for sponsoring travel cost for my participation.

by davido at February 27, 2017 07:32 AM

February 22, 2017

Michael Meeks

2017-02-22 Wednesday.

  • Excited to be demoing a new Ubuntu / Snap based solution alongside Ubuntu and Nextcloud at MWC Barcelona.
  • Also pleased to see AMD release Ryzen Making 16 threads accessible to everyone - helping your LibreOffice compiles (and load times of course too); good stuff.

February 22, 2017 05:01 PM

Official TDF Blog

LibreOffice @ FOSDEM ’17

FOSDEM banner

FOSDEM is the biggest gathering of free and open source software (FOSS) developers in Europe. It takes place every year in early February, at the Université Libre in Brussels, and it’s a great event for discovering new technology, exchanging ideas and generally enjoying the community around FOSS.

This year, the Open Document Editors devroom was home to many talks and presentations about LibreOffice – including development, design, documentation, LibreOffice Online and other topics.

We have now uploaded all of the videos to our YouTube channel, so click play below to start watching (and use the icon in the top-left to choose others in the playlist). Alternatively, scroll on for a full list of presentations and links to the videos.

Full list of presentations:

Like what you see? Click here to get involved – you too could be presenting awesome new technology in the future!

by Mike Saunders at February 22, 2017 03:10 PM

February 21, 2017

Michael Meeks

2017-02-21 Tuesday.

  • Mail, financials with Tracie, call with Eloy; then Ash & Kendy. Built ESC stats. Out to cubs in the evening with M. - ran a code-breaking table with several fun encoding schemes.

February 21, 2017 09:00 PM

Official TDF Blog

Interview with Florian Effenberger, TDF Executive Director

The typical day of an executive director

My work consists of both administrative tasks – like accounting, correspondence, budget and contractual topics – as well as overseeing our team and making projects come to life. Whenever I have some spare time, I try to contribute to the German native-language community, the marketing project and our infrastructure.

The e-mail flow is quite massive with a couple of hundreds e-mails per day coming in as personal messages as well as on dozens of mailing lists, so my morning usually starts with prioritizing tasks and mails to structure my day’s work.

2016 so far for LibreOffice and for TDF: your personal perspective

2016 has been an extremely exciting year for us. LibreOffice adoption is continously growing, so is the community, and we welcomed several new members to our Advisory Board. Lots of events around the world took place, and every year when we compile the annual report it becomes obvious how much enthusiasm, dedication and passion our contributors have for LibreOffice.

What do you see as the most important challenges for TDF in 2017 and beyond?

During the last years, TDF has grown, which comes with costs in terms especially of time to define processes, establish structures and learn together. Right now, we gained routine for many tasks, so there’s room to grow and run more exciting tasks and projects.

With regards to LibreOffice, I think that mobile devices and online options are key to success, and of course, lowering the entry barriers to our community even further and growing the volunteer base, mentoring newcomers and keep people attracted to the community will always be an important part of our agenda.

Where do you see TDF and LibreOffice in 2020? And in 2025?

Looking at the short history of time during which LibreOffice and TDF have grown – we’ve been on the market since September 2010 – it’s hard to foresee where we will be in a couple of years. What we see and have today is way beyond our dreams, so I don’t even dare to guess what will come in the future. My hope and sincere conviction is that TDF will be a strong home for our projects, a welcoming and supportive environment for contributors from all around the world, breaking the barriers of languages, cultures, religion, beliefs and even timezones. I really feel like I have friends around the world, which is a wonderful feeling.

You have been with the project since day one: which is your opinion about what we have achieved, and what we could have achieved?

I am very proud of what we have achieved and where we stand. I feel sincere gratitude for being part of something so very special, for having friends around the world, for having the chance to contribute to something that does good for so many. The support we’re seeing from all over the world is just amazing.

Of course, we always can get better. Lowering the entry barriers even more, getting more contributors into the community, all these are goals we should work on continuously. The success we see is thanks due to so many wonderful people breathing life into our community, and I wish for that this motivation, enthusiasm, dedication and passion keeps up for the next years to come.

Are you contributing to other open source projects? If yes, which is your role, and and which are your expectations?

I’ve started my open source activities around 2004 in my early 20s and been with free office software since then. I am not a developer, but quite a bit into infrastructure, so when I do find time, I try to blog howtos and guides for various infrastructure and technology bits. I’m also a co-founder of the Munich Open-Source-Treffen (meetings) and the Munich Open-Source-Kochen (cooking), although I do not have much time these days to contribute to these regularly.

Last, but not least, which is your personal hardware/software configuration? Do you have any preferred tool?

My main working tools are Thunderbird as my e-mail client and calendar, extended with quite some configuration tweaks and add-ons, Redmine as project management system, and of course LibreOffice. A couple of additional tools like IRC, instant messaging, a browser, a terminal console and some more come to mind as well. Apart from that, I use a regular VoIP phone quite a lot, and of course my mobile.

A thing I don’t want to miss anymore is my dual-monitor setup – and the wonderful atmosphere at the shared office space I work from in my hometown Kaufbeuren. Work, especially in open source, is also always about people.

by Italo Vignoli at February 21, 2017 11:34 AM

February 20, 2017

Michael Meeks

2017-02-20 Monday.

  • Poked mail; sync. with Kendy, consultancy call. Out for a walk, lunch. Back to financials / 2017 projections and calls.

February 20, 2017 09:00 PM

February 19, 2017

Michael Meeks

2017-02-19 Sunday.

  • NCC in The Stable in the morning; Tony & Anne back for lunch, played a game; quartet practice, tea & read babies.

February 19, 2017 09:00 PM

February 18, 2017

Michael Meeks

2017-02-18 Saturday.

  • Up rather late; breakfast; slugged variously. Driven home with babes and more Green Ring-ness. Relaxed variously & watched Robin Hood, Prince of Thieves.

February 18, 2017 09:00 PM

February 17, 2017

Andreas Mantke

Another Round Of Content Language Setting For ODFAuthors

I worked again on the language setting of ODFAuthors content for some hours. I was able to change the language setting of a lot of content items and there are only a smaller list of remaining items. Seemed I could see the light at the end of the tunnel.

by andreasma at February 17, 2017 10:44 PM

Stephan Bergmann

Too Subtle?

Spot the difference between the two C++ programs

struct S { int a = b, b; };
int main() { return (new S())->a; }


struct S { int a = b, b; };
int main() { return (new S)->a; }

Right, the first one terminates cleanly with exit code zero, while the second one does whatever it deems necessary to counter undefined behavior.

Why is that? The expression new S() means direct-initialization, which for () means value-initialization. Class S has a default constructor that is not user-provided, not deleted, and non-trivial (because non-static data member a has a default member initializer). So the instance of S is first zero-initialized, then default-initialized. Zero-initialization means that a and b are initialized to zero. Default-initialization for S means that the default constructor is called, which means that a is initialized from its default member initializer, by copying zero from b (and then b is default-initialized, leaving it alone).

On the other hand, just new S (without the parentheses) means just default-initialization (without previous zero-initialization). So, again, default-initialization for S means that the default constructor is called, which means that a is initialized from its default member initializer, copying the uninitialized b (and then b is default-initialized, leaving it uninitialized)…

Too subtle? Probably.

by stbergmann at February 17, 2017 10:33 AM

Official TDF Blog

Updates from events: Turkey, Taiwan and Japan

Today marks five years since The Document Foundation (TDF) was legally incorporated in Berlin, Germany. We want to celebrate this anniversary by highlighting some recent activities and events from our Native Language Projects. These communities have been instrumental to the growth of TDF and LibreOffice, and are one of our most important assets.


The Turkish community recently attended the Academic Informatics Conference 2017 in Aksaray, from 8 to 10 of February, with several LibreOffice related activities.

A general presentation was done by Muhammet Kara and Gökhan Gurbetoğlu in the first session (first half of the first day).

In the second half of the first day, the attendees were introduced to the LibreOffice development environment, and the tools used in the process (Gerrit, Vim, Git…). The attendees were walked through the process of joining the LibreOffice community, and building the LibreOffice source code for the first time.

Attendees who had relatively older computers were provided with SSH access to a 32-core machine, courtesy of TUBITAK ULAKBIM. The last session (first half of the second day) was held like a hackfest. Questions from attendees were answered by the speakers.

LibreOffice community members were pleased to see that the participants were eager to learn about the software, and together they established a WhatsApp group for further communication. A more detailed presentation about LibreOffice development activities in Turkey was given by Gülşah Köse and Muhammet Kara on the last day (morning) of the conference.


The first LibreOffice QA Sprint in Taiwan – organized by Software Liberty Association Taiwan and supported by two professors of the Department of Computer Science and Engineer, National Cheng-Kung University: Professor Joseph Chung-Ping Young and Alvin Wen-Yu Su – was held in Tainan City on December 17, 2016. In this four-hour sprint the attendees found and reported many issues. Attendees were students, teachers, employees of enterprises and governments, LibreOffice developers and lecturers, and all four TDF members in Taiwan.

Early in the afternoon, a live video-session with Italo Vignoli, one of the core members of The Document Foundation, gave most of the attendees exposure to the international community for the first time.

Han Lu, a student in NCKU, summarized the issues found by attendees. After the summary, Franklin Weng explained how to report bugs on the LibreOffice Bugzilla. Also, Cheng-Chia Tseng introduced the Pootle translation platform for LibreOffice and gave some tips on how to translate LibreOffice.


LibreOffice Kaigi 2016.12, Japan’s annual LibreOffice conference, was organized in early December 2016 with great success! The word Kaigi is the Japanese word 会議, which means conference. The name means not only Japanese regional, but also Japanese users-specific.

Around 25 people gathered and enjoyed several talks (migration to Open Document Format in Taiwan, by Franklin Weng, LibreOffice/ODF and styles, maintaining Math and Japanese translation), along with a few lightning talks and a panel discussion.

by Mike Saunders at February 17, 2017 10:14 AM

February 16, 2017

Andreas Mantke

Working With The Current ODFAuthors Site

I’m working with the current ODFAuthors site for the migration to a new Plone version. I change the language settings for nearly all content items to language independent. I had to do this manually.

by andreasma at February 16, 2017 09:32 PM

LibreOffice Design Blog

Guidelines for keyboard navigation in the sidebar

LibreOffice takes accessibility seriously, and we want to make our program as enjoyable for users with disabilities as it is for everyone else. That means we care about motor impairments and, for instance, we always provide different ways for interacting with the software. And, of course, accessibility covers a wide range of visual handicaps related with color blindness, which are taken into account to ensure that information is not only coded by color, and also to account for cases of complete blindness, where a screen reader is necessary.

Not every modification in the past went well, and we are facing some issues with the latest version. For instance, Jean-Philippe Mengual mentioned at the LibreOffice conference in Brno that it is not possible to access styles in the sidebar. While we have human interface guidelines (HIG) for the sidebar UI, it lacks on advices regarding accessibility. Therefore, the UX and the accessibility teams analyzed the current state regarding keyboard navigation and summarized the outcome into a draft that should be added to the sidebar HIG.

A lot of good ideas were discussed, though mostly discarded. For example, the access to relevant content could be simplified when some less important features are excluded from the the navigation sequence and thereby ‘hidden’ from the screen reader. The striking argument is that disabled people work together with normal users and potentially face a situation where an unexpected state occurs. So one axiom is to make all functions accessible. Another rationale is to make simplicity paramount before consistency or clearness. Having different shortcuts for parts of the UI that technically do not belong together might sound reasonable but complicates the interaction. And finally, we do not want to change the learned interactions and keep things as much simple as possible.



  1. Activate the accessibility mode with F6.
  2. Navigate using F6 starts at the main menu, followed by the open toolbars, and finally the sidebar.
  3. On the sidebar, land first on the open deck‘s title bar, or the sidebar‘s tab bar when the deck is closed.
  4. Leave the accessibility mode with Ctrl+F6 and go back to the document position where the navigation has started.
  5. Use Escape to go back one step in the navigation, meaning from the content to the content panel title and then to the document.

Tab bar

  1. On the tab bar, land on the tab of the active deck or the tab of the first deck when the sidebar is closed.
  2. Jump to next/previous tabs with arrow keys including the configuration button.
  3. Jump to the title of the first content panel using Enter. In case of no content panel go to the first control with Enter.
  4. Expand or collapse the deck with space but stay at the tabbar.


  1. Cycle through the content panels (e.g. Styles, Character, Paragraph etc.) per arrow up/down.
  2. Make all parts of the deck accessible including the deck title.

Content panel title

  1. Traverse the content panels of a deck using the arrow keys when the focus is on the content panel title or through Ctrl+Tab/Shift+Ctr+Tab on any position in the content panel.
  2. Make all parts of the content panel accessible including the content panel title and the options menu.
  3. When jumping to the next content panel land on the title.
  4. Jump to the first control of the content panel using enter.
  5. Expand the content panels automatically on enter when collapsed.
  6. Expand or collapse the content panel with space but stay at the title.

Content panel

  1. Within the content panel navigate between controls using tab/shift+tab.
  2. Use arrow keys to access controls that are part of a collection such as toggle buttons, lists, dropdowns (e.g. bold, italic, underline etc.).


The figure illustrates what is defined in the guidelines. Markups with numbers should help to find the respective advice.

Keyboard navigation in the sidebar

Figure 1: Keyboard navigation in the sidebar (Source).


First of all we would like to thank Alex Arnaud from the Hypra team for contributing with his expertise. But as usual there may be aspects that we haven’t addressed or that might be solved better. So please speak up now and share your experiences with us.

by The LibreOffice Design Team at February 16, 2017 08:18 PM

Miklos Vajna

LibreOffice PDF export now supports videos

PDF supports screen annotations, which means it’s possible to play embedded and linked videos on top of a static image. Given that LibreOffice also supports videos, it made sense to add support for this in our PDF export filter. First, thanks to PMG who made this work possible. This is currently added for Writer and Impress.

Linked videos

Linked videos are the situation when the video is not part of the document itself, but it’s located somewhere else, e.g. a http:// location. This is helpful if you want to email around a PDF file, and want to avoid sending large files when it has video content.

tdf#104841 is about this situation, first I added support for linked videos in Impress, then also in Writer.

The result can be played using Adobe Acrobat Reader — for some reason okular on Linux is a bit confused about http:// URLs, wants to convert them to relative ones, and then fails as of today.

Embedded videos

tdf#105093 is the embedded video case, this is handy in case you want to create an entirely self-contained PDF, where even the video content is inside the PDF file as an embedded file.

After Impress support (and a trick around Draw vs Impress shapes) the Writer part wasn’t too complicated.

Regarding the situation around various video containers and codecs, the above code is quite agnostic. :-) On the LibreOffice side all we require is to be able to extract a key frame from the video to provide a preview image, so e.g. on Linux the support depends on what gstreamer plugins you have installed. The video content is written to the PDF file as-is, so again if it will work in the PDF reader is up to the reader’s codec support. On Linux e.g. okular uses vlc for video playback, so the range of supported formats is quite wide. The same is true on Windows, what I personally tested is LibreOffice’s VLC backend and the embedded QuickTime player in Acrobat Reader.

All of this is available on LibreOffice master towards 5.4.

February 16, 2017 08:38 AM

February 14, 2017

February 11, 2017

Eike Rathke


Today is the 42nd day of the year.
Today is Boomtime, the 42nd day of Chaos in the YOLD 3183

by erAck (23@ at February 11, 2017 11:42 AM

February 10, 2017

Jan Holešovský

Integrating LibreOffice OnLine into your web app

I've returned from FOSDEM 2017, where I talked about LibreOffice Online that we develop here at Collabora and how to integrate it with your own web service. If you did not have the opportunity to see the presentation there, here are the slides:

Click the slide to see the presentation

by Jan Holesovsky ( at February 10, 2017 05:34 PM

February 05, 2017

Andreas Mantke

Rework Of And New Python Scripts

I reworked in my Python script that give back a list of all users of a Plone website and some lists with e.g. not active contributors. I run this script on the new LibreOffice extensions and templates site today.

I created another script that creates two csv-lists, one with the name and the URL of all tempate projects and another one with the same data for extension projects.

by andreasma at February 05, 2017 10:05 PM

February 02, 2017

Andreas Mantke

Working On Localization Migration For ODFAuthors

I created a test environment for the migration of the ODFAuthors site to the current Plone version. I updated the test site to the latest version of Plone 4.3.x and am working on the migration of the localized folders and files inside the site now. They need a migration from the LinguaPlone settings to the new It seems there are some issues to solve and it could take me some time.

by andreasma at February 02, 2017 07:42 PM

January 31, 2017

Miklos Vajna

Impress bugfixes, in time for FOSDEM 2017

FOSDEM 2017 is here this weekend, and as Michael Stahl pointed out, this (together with the LibreOffice annual conference) are two time periods each year when lots of Impress bugfixes are made, as people start dogfooding. ;-) So below you can read about a pair of Impress bugs I fixed recently.

Changing font size now takes table selection into account

tdf#105502 is a situation where you have an Impress table shape, and you select part of the cells, then you click on the sidebar to change the font size. Previously this affected all cells of the table shape, now only the selected cells are updated.

Background fill for shapes

tdf#105150 is a PPT(X) filter bug where a shape was previously imported as transparent, but it actually has to have the same fill type as the slide background. In case of PPTX this was already handled in general, but not in case the slide had no explicit background. The result was that in case the shape was used to cover other shapes, they were visible, leading to e.g. this unexpected red rectangle on the screenshot.

The same bug was present in the PPT import, though there existing support was even more limited: just the "background colored objects" were collected, but nothing was done to them. Now the above use-case should be as good for PPT as it is for PPTX.

January 31, 2017 08:17 AM

January 29, 2017

Andreas Mantke

Next Step For The Upgrade Of ODFAuthors

I’m currently working on the upgrade of the ODFAuthors website to the newest version of the Content Management System (CMS) Plone. I worked on the source code for the new environment during the last days. Today I created a new test buildout for the site on a virtual server. I run it with a copy of the current ODFAuthors website and updated it to the lastest version of Plone 4.3.x. This worked out smoothly. I’ll work on the change over from LinguaPlone to the new multilingual app during the next days. This is a step that had to be done before the upgrade to Plone 5.0.x could take place.

by andreasma at January 29, 2017 05:32 PM

January 23, 2017

David Ostrovsky

Gerrit Hackathon at SAP, Walldorf

In September 2016, I attended 5 days Gerrit developer hackathon, in Walldorf, SAP.
As always it was a big pleasure to meet SAP Git/Gerrit hackers in person:
Sasa, Matthias, Michael and Chris.

I finalized my work on extending labels in secondary index to be change owner votes aware. Now it’s possible to use these gerrit queries:

Skip WIP changes, rejected by change owner:

is:open NOT label:Code-Review-2,owner

Skip non reviewable changes, approval by change owner:

is:open NOT label:Code-Review+2,owner

Detect changes, that violates “non-self approval policy”:


Suggest changes for auto merge: approval by change owner + verify by the bot (assuming default label set: CRVW + VRFY):

NOT label:Code-Review-2
NOT label:Verified-1

Dave finalized the work I started on cookie based PolyGerrit/GWT UI switch. With this change it is possible to switch between new and old UI. Given that the pure JavaScript (Polymer based) UI is not ready yet, it is not really a viable option to switch Gerrit site per configuration to the new UI. Switching in the live server, back and forth, makes a lot of sense. In Gerrit footer there is a toggle link “new UI”/”old UI” now. It can be seen on gerrit-review, that is running master. The new feature is going to be available in upcoming 2.14 release.

GWT upgrade from 2.7 to 2.8 was an interesting journey. Gerrit upgraded Jetty to 9 years ago, as the consequence, we have seen classpath collisions caused by GWT using older Jetty version Jetty 8. As an intermediate step, we strip Jetty 8 bits from the gwt-dev.jar artifact and fork some parts of GWT library in Gerrit tree and adapt it to use Jetty 9. It turned out, it wasn’t trivial at all to bump Jetty version to 9 in GWT, because HtmlUnit was still depending on Jetty 8, (more precisely WebSocket part of it). Given that WebSocket module was substantially refactored in Jetty 9 compared to Jetty 8, HtmlUnit must be adapted to this WebSocket refactoring.

So, in the end I’ve implemented this upgrade series in 3 different projects: HTMLUnit, GWT, Gerrit:

The rest of the week I continued to work on Bazel build implementation. In the end of the week, all core plugins can be built with Bazel.

Here is the summary from Sasa on all activities during the Hackathon.

Big thank to The Document Foundation for funding the travel costs for my participation.

by davido at January 23, 2017 04:06 PM

January 18, 2017

>Marius Popa Adrian

Firebird bug CORE-5452 is fixed : Segfault when engine's dynamic library is unloaded right after closing worker threads

Firebird bug CORE-5452 is fixed The issue was reported multiple times in Firebird devel list, I will mention here Damyan Ivanov (Debian) and Stephan Bergmann. (RedHat) And related commit in Firebird 3.0 branch Stephan Bergmann contributed the patch to

by Adrian Marius Popa ( at January 18, 2017 10:12 AM

January 17, 2017

Miklos Vajna

Hack-(rest-of-the)-week at Collabora

As mentioned in the blog post of Mike already, last month we were allowed to hack on anything we want in LibreOffice for a few days. I used this time to progress with 3 different topics.

Stepping through TextBoxes using the keyboard

Given that a Writer shape with a TextBox is internally two shapes, this needed explicit support. After my TextBox bugfix it’s possible to have two such shapes in a document, and once you select one of them, tab properly jumps between the two shapes; previously nothing happened.

What did happen is we tried to activate the TextBox of the selected shape, which selected the shape itself, so at the end nothing happened.

RTF improvements

For some time it was already possible to import and export custom string document properties from/to RTF, but just in case the value type of the property was string. Now I extended support for these custom properties, so also the remaining types are handled: numbers, bools, doubles and dates.

xmlsec patch upstreaming

Last, I’ve started working on upstreaming external/libxmlsec/xmlsec1-noverify.patch.1. xmlsec has no ability to disable the verification of certificates (think of curl -k or wget -k), so in LibreOffice currently we just patch out that code as we don’t need it. So I wanted to add a new verification flag to avoid patching, but it turns out that in the NSS case xmlsec didn’t do the verification, so as a first step I fixed that instead in this xmlsec GitHub pull request. Now that it’s merged, the next step will be to add such a flag, and then LibreOffice can get rid of the patch after the next xmlsec release.

January 17, 2017 08:50 AM

January 16, 2017

LibreOffice Design Blog

DIY UI: How to create your own Notebookbar

Introduced recently with the MUFFIN concept, the Notebookbar is a blank canvas where controls can be placed and arranged freely. It offers all freedom to users who are not afraid to fiddle around with an integrated development environment (IDE). Here we explain how to start from scratch.

Setting up the environment

Notebookbars are ui files, which are just XML-formatted text files. Changing the files in any text editor is possible but quite tedious. The supposed way to modify ui files is to use Glade. (This may change in the future.)

After installing Glade, you have to add the LibreOffice catalog in order to use specific controls. Go to Edit > Preferences, click Add and search for the path <libreoffice>/share/glade. If all goes smoothly the LibreOffice controls will be listed in the left sidebar after restarting Glade.

Creating a new Notebookbar

Now you are able to modify existing toolbars. For Writer it is notebookbar_groups.ui or notebookbar_simple.ui at <libreoffice>/share/config/soffice.cfg/modules/swriter/ui/. Calc’s ui files are located at <libreoffice>/share/config/soffice.cfg/modules/scalc/ui/, Impress at …simpress/ui etc. Just load the ui file into Glade, modify as you like, save and switch the used toolbar in LibreOffice (no full restart needed).

But if you are afraid of messing around with the shipped files it is also possible to start from scratch. First you need to add a reference to your new ui file in <libreoffice>/share/registry/main.xcd. Unfortunately, this XML file is created during the build process without any line breaks, which hinders editing. Luckily there is the small tool called tidy that helps with formatting XML files. Rename the file main.xcd first to main.bak and run:

cat main.bak | tidy -utf8 -xml -w 255 -i -c -q -asxml > main.xcd

Now you can open the file in your preferred text editor. Search for the line with notebookbar_groups and copy/paste the complete section to duplicate it:

<node oor:name="Groups" oor:op="replace">
  <prop oor:name="Label">
    <value xml:lang="en-US">Contextual groups</value>
  <prop oor:name="File">
  <prop oor:name="HasMenubar">

There is more than one occurrence of notebookbar_groups.ui, one for every application. Make sure you change the section below:

<oor:component-data xmlns:install="" oor:name="Notebookbar" oor:package="org.openoffice.Office.UI">
  <node oor:name="Applications">
    <node oor:name="Writer" oor:op="replace">

Now you change the node name from “Groups” to “MyMuffin”, the label from “Contextual groups” to “My Muffin”, and the file reference from notebookbar_groups.ui to notebookbar_mymuffin.ui.

Create the actual file notebookbar_mymuffin.ui at <libreoffice>/share/config/soffice.cfg/modules/swriter/ui/ and enter the basic stuff:

<?xml version="1.0" encoding="UTF-8"?>
    <requires lib="gtk+" version="3.12"/>
    <requires lib="LibreOffice" version="1.0"/>

You can also use Glade to create a new file or duplicate one of the other Notebookbar files and delete the content. Start Writer to see a beautiful blank canvas waiting for your creativity.

Editing the Notebookbar

To start with a very simple implementation we construct a “classic” toolbar. Run Glade and open the ui file. Click the Box symbol (first item in the section Containers) and drag it onto the blank canvas. In the pop-up dialog change the number of items to 1 (you can modify all properties later). Now add a Notebookbar toolbox (in the section LibreOffice one of the last items; the common toolbar under Containers will not work) and drop it into the GtkBox. You can resize all controls as you like, but the final alignment is done by LibreOffice.

Right click the sfxlo-NotebookbarToolbox and click Edit… In the dialog go to the tab Hierarchy and click Add. In the right hand area with properties look for Action name and enter .uno:Open there. For easy identification you can use Open at ID and delete the predefined text under Label. That would be enough to show the open icon with all the functionality in Writer.

“My Muffin” with the first button.

Figure 1: “My Muffin” with the first button.

Toolbar items are defined by default as buttons and in contrast to the normal Open function you will not have menu with the additional features. You can easily change this property under Hierarchy: Tool item > Type from Button to Menu.

You may want to add more functions, so the question arise how all the functions are called and where to get help from.


The .uno: commands contain all information of an entity such as name and tooltips including translation, the icon depending on the selected theme, enabled/disabled status, the actual function, etc. into a generic model. For example, .uno:Bold means the button toggles the text property bold/not bold. If you know the function by name you can find the right .uno: command in the main menu specification (menubar.xml) at <libreoffice>/share/config/soffice.cfg/modules/swriter/menubar/ (respectively for other modules in scalc/menubar, simpress/menubar etc).

And of course it makes sense to have a look at the other Notebookbars. It shows how to deal with context depending sections, how to use tabs, and how to use big buttons instead of the very simple toolbar.


You can modify existing Notebookbars at <libreoffice>/share/config/soffice.cfg/modules/<module>/ui using Glade, or add your own after editing the file <libreoffice>/share/registry/main.xcd. The Notebookbar is a blank canvas where controls can be added.

Be aware that this modifications are quite hacky and will be overridden with the next update. We are aware that this procedure is not user-friendly. The current implementation is experimental and in a very early stage. But it gives an idea what is possible.

More important is that you can also fix or improve the existing Notebookbar variants that are shipped with LibreOffice. So when you see something that can be done better, we welcome improvements as patches!

Please reach out to us on IRC in case of questions – and start hacking LibreOffice today– it’s fun!

by The LibreOffice Design Team at January 16, 2017 03:24 PM

January 12, 2017

Mike Kaganski

LibreOffice MUFFIN

Recently, TDF has published its new MUFFIN concept. This publication has provoked a mixed response, with many negative reactions.

When we deal with UI, any possible change brings controversy, and it’s always very aggressive when someone finds that a function they are used to use some way had changed its position. OTOH, there is always a substantial part of community that aggressively promotes “modernization” of current UI.

We all remember how different projects made their UI changes. We remember cases when programs with huge user base made radical changes without an option to keep old UI for those who prefer it. And it forces many of us to resist any sign of possible UI changes in software we use.

Many believe that “design” and “marketing” are swearwords that are used when a company tries to make “purchasers” believe they need something they actually don’t. So, any use of these words in a press release makes yet another chunk of user base to get angry.

There are people that don’t care of UI changes, but have strong opinions that there are much higher-priority tasks to do, like improving stability, compatibility and so on. And when they hear of an effort in an area they regard as unimportant, they get upset. Some of them even have donated to TDF with hopes that donations would go to those goals, and now “see” that TDF wastes their money to pay some designers/marketologists instead of doing Right Things (TM).

Many see the news about UI and immediately realize that there’s indeed something new in UI that is announced. They don’t care to read (let alone comprehend), and so skip any text for screenshots/mockups, and get their views on the matter based on their perception of the graphics. And many of them are angry because they see something that disappoints their expectations of e.g. “ribbon-like” interface. Or they suppose that TDF fools them trying to make believe that there’s something new in the UI options (besides NotebookBar) when actually all that is presented is already possible for long time. “Ah, they try to show to you something old, and pretend that it recently have made a great work to create something new! Smart move!”

Some think that new UI elements are not ready for use and need to be polished in a different branch before inclusion into a LO release.

Many believe that UI changes must begin with UI implementation being rebased to some other library like QT, and that any effort that doesn’t do this is waste of time.

People seem to misunderstand what MUFFIN is.

Thankfully, there are some people in LO community who feel interested in design issues. They form our Design team. Those people are not necessarily developers, and if they are, they have their own interests and priorities, independent of TDF’s or some specific user’s. That’s a great feature of open source community, where each one is able to find an area of interests to apply their effort. And it doesn’t matter if you want LO to get a bug-fix/compatibility feature, and it doesn’t matter if I do some work on those fixes/features: those other people don’t need and aren’t forced to wait for me or help me; they volunteer to do their own contribution in their area in their spare time, and announce their results when they feel appropriate. So anyone who argues that some other things should have been done instead of this work, is misguided. If we would prevent the Design team from doing this, we wouldn’t get more man-power dedicated to your preferred tasks; rather, we would just had lost the man-power (and more important, we would loose those contributors, because there wouldn’t be any reason for them to stay with the project).

The Design team clearly sees the challenges that LO faces with regards to UI changes. On one hand, many want some “refresh”; on the other, many deny the very possibility of it and are afraid of it. There are issues in UI not following different OSes/DMs conventions (making LO to feel not native to these OSes/DMs). And with MUFFIN, the team had IMO made a very smart move.

MUFFIN isn’t a new interface itself. It is even not an interface concept in a usual sense of the term! What it actually is is a public statement, a promise made by LO to its users; and this statement and promise is that: LibreOffice believes that it should be pleasant and easy to use by anyone; and it will never take steps (like other softwares sometimes do) that will sacrifice one group of users’ preferences just to please another – instead, it promises to make its UI as much configurable and modular as it required to allow you, me and anyone to build their own UI of choice. The message is that LO will e.g. continue to provide toolbars: this is not a “first step after which some evil designer will inevitably drop support for good old UI”! And in the same time, LO will not ignore those numerous current and potential users that want another interface: their interests aren’t of lower importance.

If someone still believes in a conspiracy theory that will eventually deprive you from your dear toolbars, remember that LO is being developed by those developers who prefer toolbars themselves, and there’s no ultimate authority to make decision to drop it regardless of those developers’ PoV.

So, MUFFIN is not a NotebookBar or a Single Toolbar. It is a message to users, and a guideline to developers who make UI-related changes. MUFFIN is not the four presented UI options; rather, they are just demonstration of commitment to make it easy to any group to customize.

The four presented UI options are not meant to be necessarily something new. Of course, you can use standard toolbars, or customize them to let only one custom toolbar visible, or use sidebar with any combination of toolbars: the UI components and their combinations aren’t new. The UI components aren’t perfect, and the concept doesn’t claim they are. The concept is orthogonal to any framework used to implement UI components. So, those who are not pleased because the UI isn’t new or isn’t perfect aren’t right when they blame MUFFIN for that. MUFFIN is a promise – so it’s not something to be kept in a separate development branch; and it’s not something that needs screenshots. I’d say that providing screenshots in the press release actually distracted and misguided many readers from the real message.

TDF didn’t spend money to make this happen. It used a research that is publicly available. It doesn’t spend your money to pay some greedy designers: it uses its community’s great power. So no need to get angry that your money are wasted. (As a side note, I’d suggest people to get familiar with TDF role and understand that it doesn’t develop LO itself; instead, it provides home and shelter to community, and promotes the software. Understanding this can help you avoid disappointment when you find out that your donations go to other needs that you imagined.)

I believe that MUFFIN is a great message if you make an effort to hear it. Please do. And if you believe that there’s something to improve, please contribute and become part of community!

by mikekaganski at January 12, 2017 12:57 PM

January 10, 2017

Lera Goncharuk

Numbering of pages in LibreOffice Writer

If you have an experience of text document editing, you may skip the introductory remarks. I just wanted to say a few words to people who have just started to work in LibreOffice in order to they can understand about what the talk.

Read more »

by Lera Goncharuk ( at January 10, 2017 07:30 PM

January 02, 2017

Lera Goncharuk

Creating a Tornado charts in LibreOffice Calc

Tornado charts help us to display opposite sides of one and the same process. This is not just a nice view, but the intuitive display of the process. In this article I will try to show a quick and easy way to build this type of charts in LibreOffice Calc. For example, such as this:

Read more »

by Lera Goncharuk ( at January 02, 2017 01:56 PM

December 30, 2016

LibreOffice Design Blog

New Color Palettes in LibreOffice

A color palette is an arrangement of a limited set of colors resembling a painter’s palette. Some collections are officially standardized, others are individually assembled to serve, for instance, a branding purpose or to convey a certain mood.

Among many other things, good design means to have a limited number of colors that work well together. For example, a pale blue can harmonize with a muted red and it makes sense to combine night blue with a fluorescent yellow. Colors influence emotions and perceptions and carry a specific meaning according color psychology.

While our prototypical user Benjamin might be satisfied with a small palette that consists of well harmonizing colors it’s not sufficient for expert users such as Eve. Professional desktop publishing requires more elaborated palettes since certain colors need to be reproduced independently from the output target such as web, CMYK print, digital print etc. Different color models exist requiring a conversion between them, which may not always be perfect, depending on the respective gamut.

Another important aspect of palettes is the naming of colors. Large color collections require that each color can be identified with a unique and descriptive color name. That’s also true for color palettes with only tiny variations between two similar shades of gray, for instance, or when color blindness comes into play and the user cannot easily discriminate between red and green.

Status before release 5.3

LibreOffice shipped releases prior to 5.3 with the color palettes:

  • cmyk: 216 colors with small variations arranged in six steps using RGB values for the color names
  • gallery: 61 variations of basic colors arranged in ten steps named by RGB values
  • html: 131 colors following the web standard using the X11 color names plus hex and decimal value like “ghostwhite F8F8FF 248.248.255”
  • libreoffice: 32 colors of the LibreOffice branding including black and white
  • palette: 77 rather arbitrary colors; RGB values separated by % are used as labels
  • scribus: 545 colors with names following the X11 standard plus numbers, e.g. Chocolate4
  • standard: Hand-crafted palette based on Symphony, well arranged with basic names plus numbers, e.g. Green1
  • tango: 27 named colors from the Tango project
  • web: 232 arbitrary colors using RGB values for the color name

Additionally there are document colors, where the colors used in the current document are listed (unfortunately it is buggy), and recently used colors, which is actually a swatch listing what has been selected before (unfortunately it is also buggy).

It was possible to individually change the standard color palettes per Tools > Options > Colors.

Changes with release 5.3

Changes to the workflow

With the Google Summer of Code project Area Fill Style (planning was introduced here), the palette handling underwent a revision. Firstly, the recent colors are fully functional now, so the most important use case of having the same color on repeated actions is covered well with this feature.

Recent colors are working perfectly now.

Figure1: Recent colors are working perfectly now.

Newly introduced was the custom palette, which allows to add colors directly in the area style dialog. The custom palette serves the purpose of user customized collections.

Fifty shades of LibreOffice.

Figure 2: Fifty shades of LibreOffice.

This custom palette makes the manipulation of factory settings via Tools > Options > Colors obsolete ‒ and hence we deleted this option. Expert users who want to modify a predefined palette need to edit the file directly. The palettes are files with the extension *.SOC located at <libreoffice>/share/palette. The content is an XML formatted list of hexadecimal color values like

<draw:color draw:name="Azure" draw:color="#f0ffff"/>

Deleted and modified palettes

Furthermore, we reduced the set of palettes. The palettes gallery, web, cmyk, and scribus were removed because of the non-standard and rather arbitrary collections with inappropriate names. Tango and html received minor updates for labels and arrangement of colors.

The standard palette was also refreshed. The first row starts now with 12 shades of gray followed by 12 basic colors from the HSV color wheel. The next rows are variations of these basic colors in respect to saturation and luminance by 66%, 50%, and 25%. The final 12×8 arrangement fits perfectly into our color picker grid.

New standard palette.

Figure 3: New standard palette.

Added palettes

The palette breeze has been added to the default set. It comprises all values known from the KDE human interface guidelines as an alternative to tango.

Completely new is the tonal palette. It aims to provide a set of colors with the same luminance respective color contrast. It starts with 10% saturation (named accordingly such as ‘Violett 10%’ or ‘Chartreuse Green 10%’) and continues in 10% steps. Above ‘medium saturation’ the steps are 58, 65, 73, 82%, if possible. Colors that cannot have a higher hue saturation are added as whitespace and named ‘Out of Gamut’. We greatly appreciate the initial work by Wade D. Peterson.

Newly introduced palettes Breeze and Tonal.

Figure 4: Newly introduced palettes Breeze and Tonal.

In order to integrate LibreOffice into professional graphics and layout workflows the palette freecolour-hlc based on the CIELAB color model has been added. Its purpose is to provide a cross-media safe set of colors targeting expert publishers. The palette contains a range of muted RGB colors that can be replicated in CMYK and is perfectly suited for those who need a maximum of color correctness across media and platforms. The palette has been created by the non-profit association freieFarbe e.V. (freeColour).

The CIE-HLC palette ‘freecolour-hlc’ from freieFarbe e.V.

Figure 5: The CIE-HLC palette ‘freecolour-hlc’ from freieFarbe e.V.


As discussed in a former blog post about LibreOffice Additions we should make customization easier by using extensions, and with version 5.3 you can install color palettes via extensions. For those who want to share their collections it shouldn’t be too difficult to become familiar with the format.

Extensions are basically ZIP files renamed to OXT. Within the archive the file config.xcu defines the path where the palette has to be placed (no need to change this) and the file description.xml with all information about the extension.

<?xml version="1.0" encoding="UTF-8"?>
        <!-- any unique identifier, e.g. my.fancy.palette  -->
        <!-- extension not hosted in the LibO repos shouldn't have an identifier starting with org.libreoffice -->
        <identifier value="org.libreoffice.breeze"/>
        <!-- version numbers are usually in major.minor.patch scheme -->
        <version value="1.0.0"/>
        <!-- extensions with palettes need minimal 5.3 -->
            <lo:LibreOffice-minimal-version d:name="LibreOffice 5.3" value="5.3"/>
        <!-- reference to the publisher here     -->
            <name xlink:href="" lang="en">LibO Design Team</name>
        <!-- how the extension will be called in the extension manager   -->
            <name lang="en">Breeze palette</name>
        <!-- optionally an unique icon for the extension manager   -->
            <default xlink:href="images/logo.png"/>



by The LibreOffice Design Team at December 30, 2016 11:11 AM

December 27, 2016

Tim Janik

DevLog: Meson and Beast threading (33c3)


The last update has been a while, so with the new year around the corner and sitting in c-base @ 33c3, I’ll do my best to sum up what’s been going on in Rapicorn and Beast development since the last releases.

Now both projects make use of extended instruction sets (SIMD) that have been present in CPUs for the last 8 – 10 years, such as MMX, SSE, SSE2, SSE3 and CMPXCHG16B. Also both projects now support easy test builds in Docker images, which makes automated testing for different Linux distributions from travis-ci much simpler and more reproducible. Along the way, both got finally fixed up to fully support clang++ builds, although clang++ still throws a number of warnings. This means we can use clang++ based development and debugging tools now! A lot of old code that became obsolete or always remained experimental could be removed (and still is being removed).

Beast got support for using multiple CPU cores in its synthesis engine, we are currently testing performance improvements and stability of this addition. Rapicorn gained some extra logic to allow main loop integration with a GMainContext, which allows Beast to execute a Gtk+ and a Rapicorn event loop in the same thread.

Rapicorn widgets now always store coordinates relative to their parents, and always buffer drawings in per-widget surfaces. This allowed major optimizations to the size negotiation process so renegotiations can now operate much more fine grained. The widget states also got an overhaul and XML nodes now use declare=”…” attributes when new widgets are composed. Due to some rendering changes, librsvg modifications could be obsoleted, so librapicorn now links against a preinstalled librsvg. RadioButton, ToggleButton, SelectableItem and new painter widgets got added, as well as a few convenience properties.

After setting up an experimental Rapicorn build with Meson, we got some new ideas to speed up and improve the autotools based builds. I.e. I managed to do a full Rapicorn build with meson and compare that to autotools + GNU Make. It turns out Meson had two significant speed advantages:

  1. Meson builds files from multiple directories in parallel;
  2. Meson configuration happens a lot faster than what the autoconf scripts do.

Meson also has/had a lot of quirks (examples #785, #786, #753) and wasn’t really easier to use than our GNU Make setup. At least for me – given that I know GNU Make very well. The number one advantage of Meson was overcome with migrating Rapicorn to use a non-recursive Makefile (I find dependencies can still be expressed much better in Make than Meson), since parallel GNU Make can be just as fast as Ninja for small to medium sized projects.

The number two issue is harder to beat though. Looking at our file, there where a lot of shell and compiler invocations I could remove, simply by taking the same shortcuts that Meson does, e.g. detect clang or gcc and then devise a batch of compiler flags instead of testing compiler support for each flag individually. Executing ./configure takes ca 3 seconds now, which isn’t too bad for infrequent invocations. The real culprit is autoreconf though, which takes over 12 seconds to regenerate everything after a or related change (briefly looking into that, it seems aclocal takes longer than all of autoconf, automake, autoheader and libtoolize together).


PS: I’m attending 33C3 in Hamburg atm, so drop me a line (email or twitter) if you’re around and like to chat over coffee.

Flattr this!

by Tim Janik at December 27, 2016 02:59 PM

December 22, 2016

Tamas Zolnai

A short time spent on LibreOffice accessibility

LibreOffice and Orca

In the last months I have a short time period fixing accessibility issues mainly on Linux. LibreOffice has a bunch of this kind of issues (fdo#36549). This metabug is about those bugs which makes it difficult for Orca screen reader to make LO usable for visually impaired users. As I see Orca has a few workarounds in it's LO related code to handle these issues (e.g. ignoring false or duplicated events), but some times there is no such solution and we need to add improvements on LO side.

Small fixes

So I did some bug fixing on this area. Most of the bugs were about missing accessibility events, which are needed for Orca to handle events which are visible on the screen and so users should notice these changes. For example when the selection is changed on a Calc sheet (fdo#93825) or when the cursor moves inside a text portion (fdo#99687, fdo#71435). These issues can be frustrating for users who used to get feedback about the effect of their keyboard key pressing.

Fixing these issues needed small code changes, which shows LO accessibility code has a good structure in general, but as the code changes in time, some parts of this code just becomes broken, without maintanance.

Spellcheck dialog

A bit bigger change, I added, was related to the spellcheck dialog (fdo#93430). Spellcheck dialog shows the errors spellcheck algorithms find and shows some options to handle these errors (e.g. suggestions for correction). The problem with this dialog was with the text entry which shows the misspelled word. This text entry contains a small part of the text and highlights the misspelled word with red text color. Orca tried to get this small text part and find out which word is the erroneous one, but LO did not return the right text attributes and so Orca did not have the necessary information to handle this situation.

Now, after fixing this issue text color and also the boundaries of misspelled word are accessible for Orca. Great to see that Orca's developer, Joanmarie Diggs already adapted the code to handle these new information and so reading of this spellcheck dialog will be better in the next versions of the two softwares.


I added these accessibility improvements working for IT Foundation for the Visually Impaired. One project of the Foundation is an Ubuntu based operating system for visually impaired users called BeLin ("Beszélő Linux", which is "Speaking Linux" in English). Since it's an Ubuntu based distribution it has LibreOffice as default office suite and uses Orca as screen reader.

Hopefully these change will make more comfortable to use LibreOffice and Orca both on BeLin and on other Linux distributions.

by Zolnai Tamás ( at December 22, 2016 05:28 PM

December 21, 2016

Tamas Zolnai

Improve pivot table import performance (tdf#102694)

After a short break I got back to Collabora and I continue working on LibreOffice. This time I handled a performance issue in pivot table's import code, as part of our work for SUSE. In some cases importing an XLSX document containing more pivot tables took such a long time, that user could interpret it as a freeze.

After some testing we found that pivot table grouping is one of the points which makes import slow. We means me and Kohei Yoshida, who is an expert in this area of the code and helped me with understanding it. So grouping was in our focus this time.

Pivot table groups

In case of pivot tables we can make groups for columns of the source data. This groups can be name groups (general groups), number groups (e.g. number ranges) and date groups (e.g. grouped by year, month, day, etc.). Since this groups are related to the source, they rather part of the source than the pivot table layout. This is true both for MS Excel and LO Calc implementation. Effectively this means that when we have more pivot tables using the same source they will have the same groups too. In case of LO Calc this groups are stored in the pivot cache linked with the corresponding source range.


The performance issue here was that however these kind of pivot tables (having the same source) were linked to each other by the pivot cache, XLSX import ignored that and worked expecting pivot tables are fully independent. Which means that same groups were imported so many times as many tables referenced them. What makes it even slower, this kind of tables are linked to each other on a way that when one table's grouping is changed other tables are also affected.

This difference between internal handling of pivot tables an the XLSX import code came from that XLSX import code was written before groups became part of the pivot cache. So I actually needed to update the import code to follow the changes of pivot table internal implementation. With that, pivot table groups' import time became quite good. For example the test document I uploaded to bugzilla (tdf#102694) took more than 20 minutes before and now it takes less than a half of a minute. This document contains a small data table and 20 simple pivot tables. So it's not something which should take so much time to load and now it doesn't.

by Zolnai Tamás ( at December 21, 2016 08:19 PM

LibreOffice Design Blog

Evolving Past the Restrictions of Toolbars

Toolbars are a common toolkit control that have been around since the dawn of GUI applications, providing direct access to an application’s most frequently used functions. But with increasing scope, the number of frequently used functions grows to an extent that can have a detrimental impact on quickly locating a particular item.

Human perception is limited, but we are perfect in the processing of information. Pieces of information are stored together and build a mental model. In case of the classic toolbars, you likely know where to look for the Undo and Redo buttons, not precisely but approximately, and also remember a few functions next to these buttons. This ‘chunking’ is supported by the elaborated grouping of buttons and with separators between them. But sometimes those tiny features are not enough to convey useful information to the user.

Some attempts have been made to overcome this problem; for example LibreOffice has done it before with the Sidebar and is doing it again with another approach. We’ve implemented a toolbar, that we call the Notebookbar, as a blank canvas where designers have all the freedom to do whatever they want with the space.

Delicious MUFFIN

With a blank canvas, a designer can place any UI widget on it, including the usual buttons with or without a label, a section label to identify the group of controls, or more advanced widgets like tabs. They also have the ability to define any dimension for buttons, so they serve as a visual attractor, and all together have a larger catalog of controls to choose from than couldn’t be found in classic toolbars. Furthermore, they can define that the main menu can be hidden, or whether it should have a particular icon theme, for instance.

Of course the classic toolbars will still remain and are enabled by default, so don’t be afraid of radical changes. Users interested in trying out the Notebookbar will be able to opt-in and will be able to try out multiple different implementations.

Contextual groups

For the contextual groups implementation, the Notebookbar is split into labeled sections (similar to classic toolbar separators but more prominent), i.e. file operations, clipboard interactions, text formatting functions, and a context dependent section. Last but not least a small section for configuration of the toolbar itself at the right.

Three icon sizes are utilized: large icons with a label below being a perceptual attractor for the most important section interactions. Furthermore medium sized icons, two in a column, and small icons with three positioned together. Since this layout targets beginners, we label all buttons.

Notebookbar in the contextual group layout.

Figure 1: Notebookbar in the contextual group layout.

The contextual groups Notebookbar aims for consistency, which means also that it has to be as static as possible. Thus, Formatting remains available in all contexts, but gets disabled for objects like images. We also want to promote styles as the primary formatting tool. Having large icons for this leads the user to this function, which is not only valid for text (big A in the mockup at the formatting section) but also other objects such as tables (big T for table styles which have been introduced recently). To bring this idea more forward, we added an image style here having color modes like grayscale or watermark in mind.

Of course, the price to pay for various sized icons and text labels is limited space, and we had to remove some functions. That includes, among others, Find and Replace, Spellchecking, Non-Printing Characters, as well as Insert page breaks, Fields, and Special characters. Some could be added into the tools section, wherein the chevron indicator (») exemplifies how small screens or resized main window would behave in case of more content. But basically this variant of the Notebookbar is designed for beginners or simple tasks and should be as plain as possible.

Another challenge is to find good labels that are short enough to fit into the section. In the Chart contextual section, some labels were shortened, for instance Horizontal Grid, Data Table, or Format Selection. This section also has chart styles in a similar place as the Table and Image sections.

The goal is to have various toolbars for different users and scenarios, at best easily user-editable, and the user choose the appropriate at the right hand configuration section. It has (unlabeled) access to the configuration, a drop-down selection with a label below what is active.

Not only consistency at the different contexts is our goal but also familiarity over the programs. The Notebookbar for Calc and Impress looks very similar compared to Writer.

Notebookbar for Calc and Impress.

Figure 2: Notebookbar for Calc and Impress.

Likely a context dependent section is not necessary for Calc and Impress – chart manipulation, for instance, is available in the sidebar. The idea of animation and transition for Impress is to show the recently used options in this drop-down only, five or so, that overrides the factory setting.

In case of Draw the focus is not the formatting of text but to position objects. While text can be added to almost all objects, the formatting is rather relevant for a text box. And even when a text box has no styling capability today the context dependent section would ideally correspond to what is known from Writer.

Notebookbar for Draw

Figure 3: Notebookbar for Draw.

Alternative layouts

As discussed in the introduction, we can also place tabs on the Notebookbar. This layout occupies a similar space as the main menu (which is hidden with this layout) and classic toolbars and organizes all menu functions across the tabs. An implementation similar to the single line toolbar is also possible, which can be contextual and horizontally centered.

Notebookbar in tabbed mode.

Figure 4: Notebookbar in tabbed mode.

And of course it should also be possible to set-up configurations where the Notebookbar focuses on a special workflow like scientific writing.

Notebookbar in scientific writing mode.

Figure 5: Notebookbar in scientific writing mode.

Some crazy ideas were made in the community how the UI may look in a bright future. While it was far-fetched at the time being created the Notebookbar allows also these fancy configurations now.

Mockup by T6Uni (CC by SA 3.0).

Figure 6: Mockup by T6Uni (CC by SA 3.0).

The only limit is your creativity and the available list of functions known as ‘uno:commands’.

Experimental state

At this year’s Google Summer of Code, the Notebookbar was worked on by Szymon Kłos (aka eszka), continuing the development begun by Jan Holešovský (aka Kendy) and Samuel Mehrbrodt. We also made some configurations, that is the contextual group presented here as well as a contextual single line variant and the tabbed version. The flexibility of its development will allow the easy creation and testing of multiple implementations during the development cycle, something that wasn’t possible during’s Project Renaissance days.

The current implementation is in an experimental state, which means that you will have to unlock the menu entry first. This allows to switch the toolbar mode under View > Toolbar layout to Notebookbar. While the mockups have a dedicated section for the configuration that also allows to quickly switch the mode, this feature has not been finished yet. The modes are switched under View > Notebookbar.

Some of the implemented controls do not work perfectly, in particular that toggle buttons don’t appear toggled unless they are hovered over, drop-down menu lists are sometimes not filled or have entries that don’t function, section headers can’t be styled to have a good background color, and accessibility needs improvements (tdf#102059).

The classic toolbars are customizable and users can add or delete items from the pool of functions. This option is not available for the Notebookbar in this first stage of development; the only means of configuration is to deal with the Glade UI files. Eventually we hope to have a similar customization option like we have in Tools > Customization or we may possibly have an inline UI edit mode similar to what Mozilla allows for Firefox.

We are looking forward to your comments and ideas on how to configure a collection of toolbars. With a good set of options the individual configuration is less relevant.

PS: Learn more about how to make your own Notebookbar in the follow-up article DIY UI: How to create your own Notebookbar.

PPS: Mockups were done in Balsamiq and can be downloaded here.

by The LibreOffice Design Team at December 21, 2016 01:00 PM

December 20, 2016

Miklos Vajna

PAdES support for PDF files in LibreOffice

Building on top of the previously mentioned signing of existing PDF files work, one more PDF feature coming in LibreOffice 5.3 is initial support for the PDF Advanced Electronic Signatures (PAdES) standard. First, thanks to the Dutch Ministry of Defense in cooperation with Nou&Off who made this work possible.


PAdES is an extension of the ISO PDF signature with additional constraints, so that it conforms to the requirements of the European eIDAS regulation, which in turns makes it more likely that your signed PDF document will be actually legally binding in many EU member states.

The best way to check if LibreOffice produces such PDF signatures is to use a PAdES validator. So far I found two of them:

As it can be seen above, the PDF signature produced by LibreOffice 5.3 by default conforms to the PAdES baseline spec.


I implemented the followings in LO to make this happen:

  • PDF signature creation now defaults to the stronger SHA-256 (instead of the previously used weaker SHA-1), and the PDF verifier understands SHA-256

  • the PDF signature creation now embeds the signing certificate into the PKCS#7 signature blob in the PDF, so the verifier can check not only the key used for the signing, but the actual certificate as well

  • the PDF signature import can now detect if such an embedded signing certificate is present in the signature or not

Don’t get confused, LO does signature verification (checks if the digest matches and validates the certificate) and now shows if the signing certificate is present in the signature or not, but it doesn’t do more than that, the above mentioned DSS tool is still superior when it comes to do a full validation of a PAdES signature.

As usual, this works both with NSS and MS CryptoAPI. In the previous post I noted that one task was easier with CryptoAPI. Here I experienced the opposite: when writing the signing certificate hash, I could provide templates to NSS on how the ASN.1 encoding of it should happen, and NSS did the actual ASN.1 DER encoding for me. In the CryptoAPI case there is no such API, so I had to do this encoding manually (see CreateSigningCertificateAttribute()), which is obviously much more complicated.

Another pain was that the DSS tool doesn’t really separate the validation of the signature itself and of the certificate. The above screenshot was created using a non-self-signed certificate, hence the unclear part in the signed-by row.

If you want to try these out yourself, get a daily build and feel free to play with it. This work is part of both master or libreoffice-5-3, so those builds are of interest. Happy testing! :-)

December 20, 2016 11:08 AM

December 17, 2016

>Marius Popa Adrian

LibreOffice bug #103074 : Implement Boolean Type for Firebird driver is now fixed

Bunth Tamás committed a patch related to issue #103074 : Implement Boolean Type for FB driver . It has been pushed to "master": It will be available in 5.4.0. The patch should be included in the daily builds available at in the next 24-48 hours. More information about daily builds can be found at:

by Adrian Marius Popa ( at December 17, 2016 12:45 PM

December 16, 2016

Florian Effenberger

LibreOffice bei Telegram

Die LibreOffice-Community ist wie eine große Familie, die rund um den Globus verteilt an einem gemeinsamen Ziel arbeitet. So vielfältig die Aufgaben, so vielfältig sind auch die Mitwirkenden – vom Schüler und Studenten über den Angestellten bis hin zum freischaffenden Künstler und Rentner, sie alle sind bei uns vertreten.

Während Open-Source-Projekte klassischerweise über IRC und Mailinglisten, mitunter aber auch per Telefon kommunizieren, steht seit einigen Jahren das Thema Social Media hoch im Kurs – Facebook, Google+, Twitter, Instagram, wer neue Leute erreichen will, der muss auch neue Kanäle ausprobieren und so sind auch wir vielerorts vertreten.

Populär sind in der letzten Zeit die zahlreichen Handy-Messenger geworden, die die Kommunikation grundlegend verändert haben. Um dem Rechnung zu tragen, haben wir jüngst einen Versuch gewagt, und beim Messenger Telegram eine englischsprachige Gruppe sowie einen Kanal eingerichtet, die sehr gut angenommen werden. Entstanden aus der Gruppe zur LibreOffice Conference 2016 ist das erklärte Ziel, der Community eine Plattform zu geben um insbesondere diejenigen ins Projekt zu integrieren, die sich mit den bestehenden Kommunikationskanälen nicht anfreunden können.

Nach positiver Rückmeldung zahlreicher Sprachprojekte haben wir nun auch in Deutschland eine eigene Telegram-Gruppe ins Leben gerufen, die du unter
(alternativ per Direktlink:

findest. Ziel der Gruppe ist der Austausch der Anwender und Mitwirkenden untereinander. Für Supportanfragen sind andere Kanäle besser geeignet.

Gerade für ein Open-Source-Projekt ist das zweifelsohne ein ähnlicher Balanceakt wie die Nutzung sozialer Netzwerke: diejenigen, die populär sind, die sind in der Regel nicht komplett frei, und diejenigen, die als Open Source zum Selberhosten zur Verfügung stehen, werden meist nur von denjenigen Nutzern frequentiert, die man auch auf den bestehenden Kanälen bereits erreicht. Wichtig ist meiner Meinung nach, dass relevante Diskussionen und Entscheidungen stets auf den primären Kommunikationskanälen – insbesondere die Mailinglisten – stattfinden und Arbeiten innerhalb der Infrastruktur des Projekts erfolgen, die jeweils auf freier Software basieren. Plattformen bei Dritten können das Angebot stets nur ergänzen, jedoch nicht ersetzen.

Zur generellen Nutzung noch zwei Hinweise aus der Praxis:

  1. Jedes Gruppenmitglied kann bei Telegram standardmäßig anhand des Benutzernamens einem anderen Gruppenmitglied eine direkte Nachricht schicken, auch ohne dessen Handynummer zu kennen. Wenn ihr in einer öffentlichen Gruppe teilnehmt, besteht also die Möglichkeit, dass euch andere Teilnehmer direkt kontaktieren.
  2. Aufgrund der zu erwartenden Anzahl an Nachrichten empfehle ich, die Gruppe entweder komplett auf stumm zu schalten, oder aber die Benachrichtigung dezent zu konfigurieren. Telegram bietet zudem die Möglichkeit, sich innerhalb eines bestimmten Zeitraums nur einmalig über neue Nachrichten informieren zu lassen.

In diesem Sinne: Wir lesen uns! 🙂


by Florian Effenberger at December 16, 2016 02:14 PM

December 13, 2016

TDF Infrastructure Status

pootle upgrade starting Thu (16-12-15), 10:00 UTC

Starting Thursday morning at 10:00 UTC, our instance of pootle will be upgraded. The server will not be available for translators during that time.

While we plan for the upgrade to be done within a few hours, don't be alarmed if pootle is not available.

See also the announcement to the l10n list.

by The Document Foundation at December 13, 2016 11:00 PM