The Document Foundation Planet


April 28, 2017

Official TDF Blog

Help keep the Calc guide up to date

The Documentation Team Meeting will

take place in May 10th at 17:00 CET

The Calc module of LibreOffice is one of its most complex and extensive applications and one of the most in-demand for documentation, as our measurements of the documentation website clearly show.

Documentation website daily visits over time, since January 1st, 2017.

The latest published Calc Guide is connected to LibreOffice release 4.1. The gap between this guide and the most recent Calc developments has widen and the current publication is outdated.


Unique downloads


All guides
























It is clear that the six-month time release of LibreOffice is very fast and poses a challenge to all guide authors. Documenting and writing books will never slow the pace of development, but must adapt to follow the pace.

So action is necessary to update the guide, but we must go ahead and plan for the future releases.

We want to think about a flexible workflow, to think about contents instead of formatting, to ease authoring process, to gather more authors and contributions.

The documentation team (DT) is resuming its periodic meeting to talk about documentation issues, on Wednesday May 10th at 17:00 Berlin time (CET). All community members are invited and we will minute our discussions in the doc pad at which will contains a preliminary agenda and the connection links for the meeting.

Helping out with documentation is a great way to get involved in open source. You can build up valuable experience working with a community, and it could pave the way for a technical writing career in the future.

The post Help keep the Calc guide up to date appeared first on The Document Foundation Blog.

by Olivier Hallot at April 28, 2017 02:34 PM

April 27, 2017

LibreOffice Design Blog

Please participate in a survey about table styles

Some users were desperately Waiting for LibreOffice Table Styles, so this feature was implemented in one of the last year’s GSoC projects and released with version 5.3 as announced in the release notes and release videos. Although not all features have been implemented yet and, for instance, the editing dialog is missing, we want to continue with the design work and revise the inbuilt table styles.


Please vote

Please vote to make this not happen.

For this purpose we asked on the mailinglist for proposals and received a number of nice ideas. Together with the existing styles we want to bring these now up to your decision. Please rate the images on a scale from strongly disagree, over disagree, neither agree nor disagree, agree, to strongly agree.

Of course we are interested in your first impressions. So feel free to comment here, or at the second page at the survey.

The post Please participate in a survey about table styles appeared first on LibreOffice Design Team.

by The LibreOffice Design Team at April 27, 2017 10:38 PM

Official TDF Blog

News about the migration to ODF in Taiwan

Plan of National Chi-Nan University to Stop Purchasing Microsoft Office from 2018 Raises Heated Discussions in Taiwan

April 23, 2017, Taiwan – The migration of ODF keeps going in many different fields in Taiwan. Since 2016 the Ministry of Education in Taiwan entrusts the Information Service Association of Chinese Colleges (ISAC) and Software Liberty Association Taiwan (SLAT) with the task of promoting and migrating ODF/LibreOffice in universities in Taiwan. Among all the university, National Chi-Nan University (NCNU) is the earliest one, which started migrating LibreOffice since 2014 and has been working on it for three years.

Then on April 20, 2017, a student from NCNU posted an article on Dcard forum saying that, according to her teacher, NCNU “Will not use Microsoft Office anymore due to the budget issue. LibreOffice will be used to replace Microsoft Office.” The student strongly questioned, “LibreOffice is totally unknown to everyone. I don’t know what the administrative staffs of our school are thinking about. Microsoft’s software is a very basic skill for enterprises to recruit people. This decision will make students lost their core competitiveness.”

This article raised heated discussion on the Internet. Some people questioned the NCNU about the usage of the budget, saying that such a big national university may never lack the budget to buy Microsoft licenses. Also, there were still a number of people questioning about the interoperability between LibreOffice and OOXML. However, more people disagreed with the student’s thoughts about “Microsoft equals core competitiveness.”

Ben Jai, a famous entrepreneur and public opinion leader in Taiwan, said on his Facebook page: “For a student, it should be more important to actively explore new things rather than waiting for someone to teach him. If he just waits for teachers to teach him how to use a tool and plans to use the tool all his life, he will be very easily eliminated.”

Matthew Lien – a.k.a. BlueT in open source communities in Taiwan – who was one of the main promoters of LibreOffice in NCNU, explained the policy on Facebook: “The budget is just one of the reasons but not all. The budget of schools should invest on students and education, but the Microsoft’s license fee is going higher and higher and starts to supplant budgets of other items. Therefore, we’ve worked on promoting ODF and LibreOffice for three years. It’s not an impulsive decision. BTW, we won’t forbid anyone to use Microsoft Office, just that NCNU won’t purchase Microsoft Office anymore.”

Another article on The Inside Media discussed this topic and gave a conclusion by asking this question: “Maybe Microsoft Office has been the basic skill of many enterprises. However, why our education only teaches our students a single tool, instead of training our students to learn and adopt new skills actively?”

The post News about the migration to ODF in Taiwan appeared first on The Document Foundation Blog.

by Italo Vignoli at April 27, 2017 11:33 AM

Tender to Implement Accessibility Improvements (#201704-01)

The Document Foundation (TDF), the charitable entity behind the world’s leading free office suite LibreOffice, seeks for companies or individuals to

implement accessibility improvements into LibreOffice

to start work as soon as possible. TDF is looking for an individual or a company to design and implement, as a turnkey project, a tool to find and flag new glade widgets that are added without accessibility (a11y) markup.

  1. That includes any new label without a relation for the widget it relates to, which should cause a compile/tinderbox warning, except in the case that it is used as a hidden string placeholder to avoid the resource files.
  2. The tool has to catch the common cases and blacklist all the existing dialogs and/or widgets without these. The goal of the implementation is to avoid future a11y regressions in the markup that we can scan.

Wherever possible, we exclusively use free, libre and open source (FLOSS) software for development, and the resulting work must be licensed under the Mozilla Public License v2.0.

Other Skills

English (conversationally fluent, in order to coordinate and plan with other TDF and project members).

TDF welcomes applications from all suitably qualified persons regardless of their race, sex, disability, religion/belief, sexual orientation or age.

As always, TDF will give some preference to individuals who have previously shown a commitment to TDF, including but not limited to TDF members. Not being a member, or never having contributed before, does not exclude any applicants from consideration.

The task offered is a project-based one-off, with no immediate plans to a mid- or long-term contractual relationship. It is offered on a freelance, project basis. Individuals and companies applying can be located anywhere in the world.

TDF is looking forward to receiving your applications, your financial expectations (name the final price for the turnkey project), and the earliest date of your availability, via e-mail to Florian Effenberger at no later than May 26, 2017. You can encrypt your message via PGP/GnuPG.

Applicants who have not received feedback by June 30, 2017, should consider that their application, after careful review, was not accepted.

The post Tender to Implement Accessibility Improvements (#201704-01) appeared first on The Document Foundation Blog.

by Italo Vignoli at April 27, 2017 12:00 AM

April 26, 2017

Michael Meeks

2017-04-26 Wednesday.

  • Mail chew, chat with Tor, sync with Miklos, then Eloy. Lunch. Poked at new ESC stats generation pieces from JanI and built ESC agenda. Sync. with Lenny.

April 26, 2017 02:40 PM

Official TDF Blog

Coming up on 1st May: the next Month of LibreOffice

Last year we had two Months of LibreOffice, in May and November. These celebrated contributions all across the project, from development and documentation through to translations and QA. Everyone who got involved was awarded a badge to use on websites and social media.

This year, though, we’re taking it up a notch. For the first Month of LibreOffice, starting on Monday 1st of May, we’re giving out real printed stickers to all contributors! And they look like this (printed versions on the way):

Yes, if you help the LibreOffice project during May, you’ll be able to claim a shiny sticker for your laptop, desktop or other kit at the end of the month. You’ll just need to let us know your address and we’ll pop a sticker in the post. Then you’ll be able to show the world not only that you love LibreOffice, but that you’re a proud contributor as well!

So, how do you get a sticker? Stay tuned to this blog – on Monday we’ll provide all the details and the campaign will get started. See you then…

The post Coming up on 1st May: the next Month of LibreOffice appeared first on The Document Foundation Blog.

by Mike Saunders at April 26, 2017 01:19 PM

>Marius Popa Adrian

HSQLDB binary format import

Tender approved in the budget by the TDF board In order to remove the legacy Java / HSQLDB database completely, and move fully to Firebird in LibreOffice 5.4 it is necessary to be able to import old document data with high fidelity from the HSQLDB binary file format which we have used (for performance) inside so many of our existing ODB files. This task involves reading the existing (reasonably

by Adrian Marius Popa ( at April 26, 2017 11:46 AM

April 25, 2017

Michael Meeks

2017-04-25 Tuesday.

  • Mail chew; code review; call with JanI; QA / smoke-testing etc. Lunch. Long overdue commercial call. Plugged away at admin and calls much of the afternoon. Up late making thread safe socket transfer easier to maintain in online.

April 25, 2017 09:00 PM

Eike Rathke

LibreOffice in The Matrix [m]

If you use the Riot App (or any other) to connect to the Matrix and communicate, there's now a LibreOffice room that is bridged with the #libreoffice IRC channel on IRC channels are bridged to the matrix already for some time, but so far you had to type
in your matrix mobile app, or in the browser app know the bridge exists and select from the list, now you can just search in the available matrix rooms for LibreOffice and join. This should be a convenient method to join a chat with other LibreOffice users for people who otherwise don't use IRC or don't want to install an IRC app just for this on their mobile, smartphone, tablet..

The #libreoffice IRC channel and thus the LibreOffice matrix room is dedicated to user questions around all LibreOffice applications. Join and enjoy, get help and help others.

by erAck (23@ at April 25, 2017 08:45 PM

Official TDF Blog

LibreOffice contributor interview: Alex Arnaud

The LibreOffice community tries to make the software as accessible as possible – in other words, usable for people with special needs or requirements. Alex Arnaud is working to make the suite more accessible for users with visual impairments, and discusses his experiences and the challenges ahead in our latest interview…

LibreOffice contributor Alex ArnaudWhere are you from, and if you’re active on IRC, what’s your nickname?

I am French, and my IRC nickname is “alexarnaud”.


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

Alongside the Hypra team, I am based in Paris. I am visually impaired and I use my computer with a screen magnifier and a screen reader. I use, on a daily-basis, the Universal Accessible OS (UAS) based on Debian GNU/Linux both for my professional and personal needs. I used GNOME before (and its magnifier), but given the important efforts that Hypra has poured into this project and the constant improvement of the, I have decided to switch about a year ago.

I’ve been working at Hypra since September 2015 as a project manager, leading the development of the visual-assistance stack (Compiz). I soon intend to join the company as a shareholder as I feel now totally involved in the startup’s ambition: making accessibility a key competitive advantage for Linux, and ultimately expanding the benefits of free software to the general public, beginning with visually impaired people. LibreOffice being one of the cornerstones of free software, I am contributing to the LibreOffice community inside the quality assurance (QA) team, mostly on my working time.


How did you get involved with LibreOffice?

When joining Hypra, my blind friends and colleagues Jean-Philippe and Raphael kept telling me: “Since version 4.3, LibreOffice is regressing on accessibility for blind people”. So far so good – we provide version 4.2 for our customers because it is actually the latest version usable for blind and visually impaired people. But we deem such an evolution is not sustainable on the long-run.

That is why we have decided to get involved, beginning with an accessibility audit on the user side. I’ve looked into all the LibreOffice bugs related to GNU/Linux and accessibility, and checked their validity and updated them as a consequence.

After that I started to become an accessibility bug hunter for the LibreOffice QA team and I have reported lots of bugs related to Writer, Calc and Impress. I see myself as a kind of “whistle-blower” about accessibility inside the community. Most of the sighted-users do not know that software has to be accessible for all people, so my job is raising awareness and hence trying to be a driver of change.


What was your initial experience of contributing to LibreOffice like?

My initial experience with LibreOffice was in 2011. I reported bugs about the accessibility of LibreOffice for Windows – I sent them directly in a mailing list. In 2011, on Windows, it was completely impossible to use LibreOffice with a screen magnifier so I chose to use IBM Lotus Symphony, which was usable for a low-vision person.


What areas of the code do you normally work on? Anything else you want to tackle?

I am a user of the Orca screen reader (the screen reader being also useful for large array of people from the elderly to the visually impaired), so I can easily check if something is accessible for everyone. I focus on the user interface and the communication of LibreOffice with assistive technologies through the AT-SPI2 protocol.

I’m only working on the user side because I don’t know how to compile and how to debug LibreOffice – I just know QA-related things like how to check which version introduces a regression, for example. Testing and reporting bugs is huge work that requires attention and patience. I spent most part of my time tracking features and verifying whether they are usable for disabled people.


What is your vision for the future, or what would you most like to see improved in LibreOffice?

Free software entails a huge ethical and philosophical promise. It drives many expectations and hopes for average users in terms of social inclusion and privacy. It also provides enormous opportunities to reshape the relationships people have with technologies, focusing more on training and support, rather than on the cost of technologies themselves. This is a driver for social change. But to cope with these expectations, I believe we have to make sure that LibreOffice, being one of the cornerstones of free software, enables social inclusion.

Why should we keep adding features if we haven’t them usable for all? Can we accept it if a mainstream project such as LibreOffice keeps excluding people? As a matter of fact, I’ve noticed that there are accessibility bugs, originally coming from the code, that were reported more than 5 fives years ago… We can’t let the status quo prevail!


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

I spend most of my spare time reading books and listening to radio podcasts to discover more in depth about how the world works. I’m fascinated by Noam Chomsky’s point of view about democracy and information. I find his famous book “Manufacturing Consent – The Political Economy of the Mass Media” extremely clarifying about the role of the media industry in a democratic country.

I also appreciate spending time with other people, with my family and with my friends.


What was the very first program you wrote?

If my memory serves me well, it was a very little social network.


Which is your preferred text editor? And why?

I’ve been using Emacs as my primary text editor since the day I discovered it. It’s really a pleasure for me to work with it because it help me to overcome my vision troubles.

In fact, I use a screen magnifier program that follows the cursor position. In some programs like “man”, “less” and “more” I can’t move the cursor inside the text – and that forces me to use the mouse, which makes my work more difficult.

With Emacs I can read manual pages inside a buffer, and I can use a command-line and move inside it – it is so convenient for me!


Why would you say there are few bug reports related to accessibility on GNU/Linux?

I would forward you to an interesting message posted years ago by Samuel Thibault (main contributor of the Debian accessibility team). For a blind person, if an application is not accessible enough it is completely impossible to report a bug.

Regular users that have disabilities spend more time than people without them, just to do things in their life. Information technology is a bridge between inaccessible hard things (newspaper, administrative things, TV programs, etc) and the accessible digital world.

It is really indispensable for blind people – for example – to be efficient in their lives when finding information related to their city, communicating with people by e-mail (letters are inaccessible), finding their path with GPS, producing and reading documents, finding a job of course – and so much more!

I have a dream: we work on free software, especially in this case LibreOffice, and everyone can work on the accessibility side and improve the life of everyone else. We need more manpower! Here’s a link to the meta-bug related to accessibility stuff on GNU/Linux.

I’m often available on IRC (Freenode network) on the channel of the libreoffice-design team (#libreoffice-design). Please ping me if you have questions relating to accessibility.

Thanks to Arnaud for his time and in-depth answers. For those reading this who want to get involved and help to make LibreOffice more accessible, join us today!

The post LibreOffice contributor interview: Alex Arnaud appeared first on The Document Foundation Blog.

by Mike Saunders at April 25, 2017 01:07 PM

April 24, 2017

Michael Meeks

2017-04-24 Monday.

  • Mail chew, consultancy call with Miklos. Submitted a brief paper for GUADEC deadline today. Plugged away at backlog of admin tasks, code review etc. Poked at plain-text import performance here & there for a customer.
  • Nicolas over in the afternoon, great to see him - caught up, dinner, made some nail-blocks to avoid cat sitting on M's bird-box. Soldered new relay into the fridge & re-assembled: working again. Talked until late happily.

April 24, 2017 09:00 PM

April 23, 2017

Michael Meeks

2017-04-23 Sunday.

  • Fine breakfast, checked-out, swam & sauna-ified; off to pick up the babes - who had had a fine time with B&A. Lovely lunch, drove home. Picked up H. from Lynn's, back for some songs & bible study together - tea, put H. and others to bed. Watched Line of Duty - gripping.

April 23, 2017 09:00 PM

April 22, 2017

Michael Meeks

2017-04-22 Saturday.

  • Up rather early; room a bit light (despite otherwise being lovely) cooked breakfast; took a turn around the fine lawns, out together to Sutton Hoo for a walk around the bluebell woods & fine views. Back for a snacky lunch.
  • Enjoyed the pool, sauna, spa, massage, relaxing. Idly poked at fixing and merging my DelaySocket development implementation for Online some more in the evening - it works.
  • Fine dinner in the evening together, Parks & Recreation later; bed.

April 22, 2017 09:00 PM

Eike Rathke

Tooting with Mastodon

Trying Mastodon at with my usual username, also on,, and, no idea yet if or where I'll stay. It has potential. Will it survive longer than
Pick your instance.

by erAck (23@ at April 22, 2017 04:30 PM

April 21, 2017

LibreOffice Design Blog

New branding for LibreOffice 6.0

The next release cycle of LibreOffice is scheduled for Q1/2018. And as known from past updates we want to introduce a unique branding for the release. This time it is planned to collaborate with the Open Source Design group.

Open Source Design

This group is a community of designers and developers pushing more open design processes and improving the user experience and interface design of open source software. They provide a job board where projects can ask for support, and that’s what we did for the new branding at Branding for LibreOffice 6.0.

While the job has been announced at the Open Source Design board that does not mean your contribution is not possible or not required. On the contrary, we want you to submit proposals – and maybe also to join the community of designers.

Banner used in LibreOffice 5

Figure 1: Banner used in LibreOffice 5.


The task is to create a new motif that will be used at the splash screen, the about dialog, the Windows installer, and for banners/flyers/stickers outside the program. We like to get variants of the design with and without the sub-line according the logo policy (the logo itself must not change). And nice to have are variations with labels for alpha/beta/daily builds. The design can be based on the metaphors transparency, sustainability, freedom, community, MUFFIN, green, hexagon, circular. But we are open for creative ideas. Ideally we get some interesting proposals and let the community decide which one to use finally.

As a community-driven Open Source project we have a few prerequisites:

  • Deliverables must be done in an Open Source license, e.g. CC-by-SA
  • The concept should work globally
  • The design process has to be fully transparent and the community should get involved
  • Task should be finished until end of July 2017 so that we can run a survey with the proposals


We have several resources to start off:

Now it’s your time to be creative. We are looking forward your ideas.

The post New branding for LibreOffice 6.0 appeared first on LibreOffice Design Team.

by The LibreOffice Design Team at April 21, 2017 09:31 AM

April 20, 2017

>Marius Popa Adrian

LibreOffice bug #106866 is now fixed : When I change the field length of the result is multiplied by 4 each time (firebird, varchar)

Bunth Tamás committed a patch related to issue #106866: query character size instead of bytesIt 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 April 20, 2017 12:58 PM

April 18, 2017

Miklos Vajna

Improved rountrip of PDF images in LibreOffice

This is a follow-up to the previous post that described how it is now possible to insert a PDF file as an image in LibreOffice and export that back to PDF, while keeping the original PDF contents. I’ve recently improved this feature so the resulting file is smaller and the vector image can be viewed in more viewers. First, thanks to PMG who made this work possible.

Let’s look at the previously mentioned front page of a magazine sample when it’s viewed in okular. (A KDE pdf viewer, i.e. something that’s not Adobe Acrobat). The previously used reference XObject PDF markup is not handled by it, so the bitmap fallback was displayed:

Compare it with the new result:

Notice the sharp text in the first line.

Also the size of this sample is smaller now, since we don’t write a large bitmap, and the not shown second page of the PDF image: 2 385 984 → 1 605 558 bytes (about one third of the output is avoided).

Both techniques have pros and cons, here is a summary:

  • The reference XObject approach allows you to preserve the full PDF data of the image: if it was of multiple pages, even that. Also, the LibreOffice code for this is simple: we just preserve a byte array — that can hardly go wrong. The problem is that no non-Acrobat PDF viewer implements this, including e.g. your printer most probably.

  • The new approach uses the tokenizer I originally wrote for PDF signature verification purposes — it extracts the page stream of the first page from the original file and uses it as a form XObject in the export result — this is the same as how e.g. pdfcrop works. This markup is handled by almost all PDF viewers and also the resulting size is smaller, since the data of other pages is dropped and there is no fallback bitmap. The problem may be that this is a much more complex scenario, so it may go wrong (as usual, bugreports are welcome).

Nevertheless, the new approach seems like a much better default, so LibreOffice no longer writes the reference XObject approach unless you explicitly request it in the PDF export dialog.

Some perhaps interesting details:

  • PDF page streams may be provided by multiple objects, but form XObjects must have a single stream, so it we handle the case when different parts of the page stream are compressed in different ways.

  • LibreOffice writes PDF-1.4 by default, in case you insert a PDF image that uses PDF-1.5+, we use pdfium to downgrade that markup to 1.4, and only then insert it.

  • Copying the page stream of the image is not enough, we also recursively copy all referenced objects from the source PDF, while rewriting all contained references, since the objects IDs in the old and new files differ. We also take care of proper scoping of named references in the resource dictionary, so you can use this feature recursively (insert a document as a PDF image, even if that document itself contains PDF images already). :-)

All this is available in LibreOffice master, towards 5.4.

April 18, 2017 07:13 AM

April 17, 2017

TDF Infrastructure Status

Odfauthors currently unavailable

(17-04-28) We're moving odfauthors site to a new hosts and thus it is unavailable at the moment. Sorry for the short notice and inconvenience.

by The Document Foundation at April 17, 2017 10:00 PM

April 16, 2017

Dennis Roczek

Nabble interface…

Since a few months I’m also an administrator of our Nabble archives. I started to check the posts and removing spam and banning the spammer. Slowly I get one archive cleaned after another.

From time to time I realize that the interface is missing some bits, so I change the interface in the Nabble’s “NAML macro language”. I added access keys to places where I think it is useful or where I use it on my own.

This weekend I had my fight with the NAML to get web feeds placed to the html head-tag for a few hours as their macro language is not documented and not really intuitive. 😦


If you have any improvement requests, simply drop me a line. 😉


by dennisroczek at April 16, 2017 10:31 AM

April 12, 2017

Andreas Mantke

LibreOffice Extensions and Templates Site: New Plone Add-On Releases

The LibreOffice extensions and templates site runs on the Content Management System Plone 5 with some add-ons. I added together with our service provider some fixes and improvements to this add-ons during the last weeks. I made new releases of this Plone add-ons and uploaded them to the Python Cheeseshop:

by andreasma at April 12, 2017 06:32 PM

April 10, 2017

LibreOffice Design Blog

The new standard color palette

With the latest update of color palettes announced in New Color Palettes in LibreOffice, we also introduced a new standard palette that had room for improvements. Users complained about supersaturated colors, insufficient differences, and missing bright colors. So we asked for input on the design mailing list, and received three new palettes, which are shown below.

Three suggestions for the new standard color palette.

Figure 1: Three suggestions for the new standard color palette.


We ran a survey with the three palettes shown in figure 1 and received 488 votes, with almost a 50/50 split for variants 2 and 3. People obviously appreciate the better organized layouts.

Results from the survey.

Figure 2: Results from the survey (raw data are available here).

Users were also given the chance to comment on their choices, which revealed interesting insights. First of all it, was suggested to not have fully saturated colors on top in order to foster good design with less strong colors. However, others recommended to go with exactly this layout. Well defined pastel colors were requested as well as dark variants and from the comments it was clear that a good organization of colors is wanted.

Standard color palette

We decided to go with variant 3, which is based on the RYB color model. Some small changes were applied to realized user requests.

The palette starts with a black to white row, followed by the base RYB colors row – yellow, gold, orange, brick, red, violet, purple, indigo, blue, teal, green, and lime. After that, there are four rows with brighter colors and then four rows of darker variants.

Having the full-saturated base colors at the top or middle of the palette was debated, and retaining them at the top was preferred, as it is the same with most competitors.

Since this new standard palette as well as the tonal palette have 10 rows, we increased the number of visible rows shown in the color picker from being dependant on the system theme to always show 10. The final layout from figure 3 will be available in the next version 5.4.

The evolution of the ‘standard’ color palette - from the past, at release 5.3, and how it will look like in the future.

Figure 3: The evolution of the standard color palette – from the past, at release 5.3, and how it will look like in the future.

Many thanks to Thibaut Brandscheid and Yousuf Phillips for the contributions.

The post The new standard color palette appeared first on LibreOffice Design Team.

by The LibreOffice Design Team at April 10, 2017 09:15 PM

April 09, 2017

Andreas Mantke

LibreOffice Extensions and Templates Site: Fix For Listing Releases

The listing of LibreOffice extension and templates releases and linked releases had an issue. The newest final release was not shown to the user. This issue was caused from the custom URL for the releases. The new releases and linked releases get an URL that placed them at the top of a list, which lead in the reverse order to getting them to the bottom of the list.

I fixed this issue with a new sorting key. The releases are listed in reverse order by the date they were created. The current final release is choosen by its release date in reverse order.

I contributed this fix to the TDF Github repository and delivered it to the LibreOffice extensions and templates website today.


by andreasma at April 09, 2017 03:55 PM

April 04, 2017

Florian Effenberger

LibreOffice-Projektwochenende 2017 – Terminfindung

Im deutschsprachigen LibreOffice-Projekt ist es bewährte Tradition, mindestens ein Projektwochenende im Jahr abzuhalten. Derzeit laufen die Planungen für das erste Treffen in 2017 – und du kannst dabei sein!

Neben den regelmäßigen Telefonkonferenzen sind persönliche Treffen durch nichts zu ersetzen, ermöglichen sie uns doch, gemeinsame Aktionen, Projekte und Veranstaltungen zu koordinieren, uns gegenseitig besser kennenzulernen – und natürlich auch neue Projektmitglieder und Interessierte herzlich willkommen zu heißen.

Ein LibreOffice-Projektwochenende
Ein LibreOffice-Projektwochenende

Für gewöhnlich treffen wir uns von Freitagnachmittag bis Sonntagmittag. Um die Terminplanung zu erleichtern, haben wir eine Umfrage aufgesetzt. Schreib in den Kommentar auch gerne dazu, aus welcher Gegend (nächst größere Stadt) du kommst, damit wir einen idealen Treffpunkt finden können. Bislang waren wir unter anderem im Linuxhotel in Essen und an der Fachhochschule für öffentliche Verwaltung in Hof.

Wenn du Lust hast, in eines der großen Open-Source-Projekte hineinzuschnuppern, die „Macher“ hinter dem Programm kennen zu lernen und selbst bei uns mitzumachen, dann ist das die ideale Gelegenheit dazu! Anhand der Umfrage bestimmen wir den Termin und auch die Örtlichkeit.

by Florian Effenberger at April 04, 2017 07:47 AM

April 03, 2017

Andreas Mantke

Gerechtigkeit im digitalen Bürgerdialog

An vielen Orten wird seit einiger Zeit der Dialog mit dem Bürger auch auf digitalem Kanal für wichtig gehalten und es wird über Open Government und (digitale) Partizipation gesprochen. Es werden Daten aus der öffentlichen Verwaltung bzw. aus dem Besitz der öffentlichen Verwaltung unter einer speziellen Lizenz (Datenlizenz Deutschland 2.0) zur freien Nutzung zur Verfügung gestellt.

Schaut man allerdings auf einige der zur Verfügung gestellten Datensätze, dann werden diese nicht in einem offenen standardisierten Datenformat angeboten, sondern nur in einem proprietären binären oder in einem nicht von der ISO zertifizierten Format, wie beispielsweise in den Formaten xls, xlsx oder doc.

Bei solchen Dateiformaten ist nicht sicher gestellt, dass sie mit lizenzkostenfreier Software vollständig korrekt dargestellt werden können, wenn dies auch häufig gelingt. Durch das Verwenden dieser nicht offenen und / oder nicht zertifizierten Datenformate wird also potentiell ein Teil der Bevölkerung an der Partizipation gehindert, nämlich die weniger bemittelten Bürger, die sich nicht in regelmäßigen Abständen einen neuen leistungsfähigeren PC sowie kostenintensiv lizensierte Betriebssysteme und Bürosoftware leisten können. Auch  diese Bürger müssen sich einbezogen (inkludiert) erleben, als gleichwertiger Teil der Bürgerschaft.

Nur mit dem Setzen auf offene und standardisierte Datenformate für Office-Dateien, wie das ODT-Format, ist es auch einkommensschwächeren Bürgern gut möglich, sich die im Rahmen von Open Government bereit gestellten Datensätze und Dokumente anzuschauen und im Bürgerdialog mit der öffentlichen Verwaltung und den Institutionen komplett dabei zu sein. Es ist daher eine Frage der sozialen und bürgerschaftlichen Gerechtigkeit, im Rahmen von Open Data wie auch sonst in der Kommunikation zwischen Bürgern und Verwaltung im digitalen Zeitalter allein auf offene standardisierte Formate zu setzen.

by andreasma at April 03, 2017 09:22 PM

April 02, 2017

Andreas Mantke

Editing GPS-Tracks

If I track my trainings with my GPS clock, I get sometimes a too long track, e.g. because I forget to stop the recording or the clock concatenate two training sessions. Thus I need to edit the tracks that I get from the clock.

There is a free software program available to do this work: GpsPrune. But this program is not able to import and work with the file format ‚*.tcx‘. It needs tracks in the file format ‚*.gpx‘.

But there exists a solution for this issue, the free software program ‚gpsbabel‘. Because I already got the track file from the clock, I need to convert the tcx-track with the option -i gtrnctr (= ‚Garmin Training Center (.tcx)‘):
gpsbabel – i gtmctr -f inputfile.tcx -o gpx -F outputfile.gpx

by andreasma at April 02, 2017 07:30 PM

March 31, 2017

Andreas Mantke

Creating LibreOffice Extensions

I’m currently working on some content for a howto or handbook about making LibreOffice extensions. I want to cover the usual boilerplate and write about examples of different sorts of extensions. There is already some content available distributed all over the internet. Thus it is  not often not always easy to find, because it lives in seperate areas. Furthermore the existing content is regularly only available in English, a language that a lot of people in my and other countries doesn’t read and speak fluently (although things getting better this days). On these grounds I decided to write my document in German language. It’s work in progress and the ’source code‘ is public on my Github account:

by andreasma at March 31, 2017 06:18 AM

March 29, 2017

LibreOffice Design Blog

LibreOffice Extension: How to Export the Custom Palette

Good usability means keeping software simple by supporting only those use cases that are relevant for the majority of users. But not everyone is happy with changes and misses functions for special workflows. That happened for the color palette, which was revised in the last release of LibreOffice – we reported here about color palettes. In particular the ability to save and load palettes was removed intentionally. The function has been superseded by the custom palette and the possibility to install palettes as an extension. What we can do to help the few users who need easy means to export a palette is to provide a special extension.

If you are just interested how the extension itself works, jump over to the last chapter.

Basic first

LibreOffice Basic is an easy to learn programming language. There are a plenty of good resources on the Internet, for example at the Apache OpenOffice wiki. To learn how the code works, Basic has the function to set a breakpoint (F9) where your can run the code (F5) until this position and analyze variables (aka watch F7). Be careful with the editor. It has no auto save functionality, and the workflow is not always clear.

We start with a new library per Tools > Macro > Organize dialogs… > Libraries > New (a macro could also be written with the Standard library but we want to export the code later). With edit you enter the editor where a friendly “Sub Main .. End Sub” welcomes you.

The idea is to a) read values from the custom palette, b) save it to a simple .soc files, and c) pack it into a zip file with the needed overhead for extensions.

Save data to a file

Let’s start with simple file access. Looking for the topic with your preferred search engine reveals how it works in general:

'create an object the has all methods from the class SimpleFileAccess
oSFA = createUNOService ("")
'assign a file
oOutStream = oSFA.openFileWrite(“c:\hello.txt”)
'connect an output stream to write data 
oOutText = createUNOService ("")
'write data
oOutText.WriteString("”Hello World”)
'close the stream

Pretty easy, isn’t it. The extension requires xml files, for example the description.xml, which can be done by this simple method (although we need to deal with xml later). Values are typically double-quoted, and since this character is reserved in Basic we have to concatenate the string using “& Chr(34) &”.

Read values

Normal palettes such as html.soc are stored in a separate path – but not the user-defined values. To find out how these colors are handled we can save a custom color under a certain name and grep the user directory; searching with your file browser does the trick as well. It turns out that we have to process the file registrymodifications.xcu, an XML file.

<item oor:path="/org.openoffice.Office.Common/UserColors">
  <prop oor:name="CustomColor" oor:op="fuse">
    <value>7512015 958228</value>
<item oor:path="/org.openoffice.Office.Common/UserColors">
  <prop oor:name="CustomColorName" oor:op="fuse">

LibreOffice Basic has the simple API for XML (SAX) implemented, however not really simple for non-developers. But with help of the AOO Fastparser page we only need to listen for the right line and collect the values. Two functions are interesting:

Private ColorValues() As Long
Private ColorNames(0) As String
Dim aColorEntry As Integer

Sub DocHandler_startElement( cName As String, oAttributes As )
  'we are looking for nodes with the keyword item
  If cName = "item" Then
    aName = oAttributes.getNameByIndex(0)
    aValue = oAttributes.getValueByIndex(0)
    if aValue = "/org.openoffice.Office.Common/UserColors" Then
      aColorEntry = 1 'the current line should be analyzed
      aColorEntry = -1
    End if
  End If
  'and nodes with the keyword prop
  If cName = "prop" And aColorEntry = 1 Then
    aName = oAttributes.getNameByIndex(0)
    aValue = oAttributes.getValueByIndex(0)
    if aValue = "CustomColor" Then
      aColorEntry = 2 'key contains a custom color value
    End If
    If aValue = "CustomColorName" Then
      aColorEntry = 3 'key contains the color names
    End If
  End If
End Sub

Sub DocHandler_characters( cChars As String )
  If Len(cChars)>1 Then 'no empty strings
    If aColorEntry = 2 Then 'it’s the custom color values, separated by spaces
      ColorValues = Split(cChars," ")
    End If
    If aColorEntry = 3 Then 'it’s a custom color name, one of the sequential items
      z = UBound(ColorNames)
      ColorNames(z) = cChars
      ReDim Preserve ColorNames(z+1)
    End If
  End If 'empty String
End Sub

So we have all together to read out the custom colors and write it to external files. Packing into a zip is the last piece.

Pack the files

That’s surprisingly easy, compared to the other tasks.

'create a package
oZipPackage = createUnoService("")
'define the package to be a standard zip since we create our own manifest.xml
Dim aArg As New
aArg.Name = "PackageFormat"
aArg.Value = False 'plain Zip format
'add files to the package

Sub addToZip(oZipPackage As Object, ByVal sPath As String, ByVal sFile As String)
  Dim aArgs(0) As Variant
  aArgs(0) = False
  'connect a stream with simple, read-only file access
  oZipPackageStream = oZipPackage.createInstanceWithArguments(aArgs())
  oSimpleFileAccess = createUNOService("")
  oInputStream = oSimpleFileAccess.OpenFileRead(sPath & sFile)
  'insert the file
  oZipPackageFolder = oZipPackage.getByHierarchicalName("")
End Sub

User input

Finally we need to define the variables. They are the name of the exported palette, the filename of the extension, an identifier in order to allow more than one exported palette, and a version number for updates. Not to forget the publisher info. For most flexibility we ask the user in a simple dialog.

Open Tools > Macros > Organize Dialogs…, select the current library at the dialog tab and add a dialog per New. With Edit (or double clicking the node) you go into the edit mode. Controls can be placed freely on the new dialog using the dropdown at the toolbar. Some controls have properties that are set here, like the caption of label fields (“label” in the properties editor).

But we can also do that from the code. Assuming we named the library Test and the dialog MyDialog and we have a label with the name lbTest the code could be

'Load dialog
'assign it to a variable
oDlg = CreateUnoDialog(DialogLibraries.Test.MyDialog)
'insert some values
oDlg.getControl("lbTest").setText("Hello World")
'show the dialog

The command to gather the user input would be oDlg.getControl(<name>).getText(), which of course makes sense only for input controls.

Another property of controls are events that execute a procedure on focus change, modification of values, execution, and key or mouse events – available depending on the type of control. Create a new procedure in your code, e.g.

Sub OnExecuteFile()
  'create file dialog
  oFileDialog = CreateUnoService("")
  'show dialog
  If oFileDialog.Execute() Then
    aFileName = oFileDialog.Files(0)
  End If
End Sub

…and assign the execute method of a button with this procedure to show a file picker when the button is pressed.

Create an extension

Once the code is fully functional you may want to share it with others. LibreOffice has the option to export the code as an (rudimental) extension via Tools > Macro > Organize dialogs… > Libraries > Export… as extension. The file is a zip packed container of the code, the dialog, and a manifest. You need to add the description.xml and some other files such as icons (side note: you need to use magenta for transparent pixels), license etc. If the extension should be assigned automatically to a menu entry and/or a toolbar button you may also want to add the file Addons.xcu, an xml file where at the menu and/or toolbar the new item is placed, for what modules it should be available, and what procedure should be executed on click.

<!-- Place it at the Tools menu under Macros -- >
<prop oor:name="MergePoint">
<!-- Available for Writer, Calc, Draw, and Impress -- >
<prop oor:name="MergeContext" oor:type="xs:string">
<node oor:name="MenuItems">
  <node oor:name="M1" oor:op="replace">
  <!-- Label of the menu entry -- >
    <prop oor:name="Title" oor:type="xs:string">
      <value>Export Custom Palette...</value>
    <!-- Run Sub Main() in Module1 from the CustomPaletteExport macro -- >
    <prop oor:name="URL" oor:type="xs:string">
… (content shortened)

Extensions are shared at Just follow the more or less obvious steps on this platform.

Custom Palette Export

You can download the extension at and add it via extension manager (ctrl+alt+E / Tools > Extension Manager…). The Custom Palette Exporter adds a menu item to the Tools menu under Macros. On click you are presented with a dialog where you have some choices to made:

User dialog to export the custom palette

Figure 1: User dialog to export the custom palette.

  • Name: The name of the palette that will be used in the color picker and at the extension manager
  • Version: Extensions have a version number.
  • Identifier: Every extension is identified by this value and not the name. Enter a unique string here to install more than one color palette on the target system. Of course, if the extension is updated with a new version number you should keep the same name.
  • Publisher and publisher link: These information will be shown in the extension manager.
  • Export to: Select path and filename of the extension itself. Click the button right of the input field to modify the default value. Existing files are overridden.

When started without any custom color a message box pops-up that nothing is to export. Keep in mind that you have to restart LibreOffice after modifying the custom palette to actually store the changes in the registry.

Many thanks to Niklas Johansson for his contributions to the code.

The post LibreOffice Extension: How to Export the Custom Palette appeared first on LibreOffice Design Team.

by The LibreOffice Design Team at March 29, 2017 01:00 PM

March 27, 2017

Tomaž Vajngerl

Pivot charts in LibreOffice: Part 2

This time I'll present some necessary changes to make pivot charts actually useful and one unique feature that pivot charts have and normal charts don't - field buttons.

Pivot chart creation

If you watched the first video, you should notice that I showed the pivot chart was already created from the start. The reason for this was that the functionality to create a new pivot chart from the pivot table wasn't implemented yet. I have fixed this, so it is now possible to create a new pivot chart if you position the cursor on the pivot table, and select from the menu to create a new chart. The chart creation code will detect the pivot table and create a pivot chart instead of a normal chart.

Pivot chart wizard

When we want to create a new chart, we first get the chart creation wizard, where we can select the chart type, define the ranges for labels and data, define data series ranges, and add some additional chart elements like title, subtitle,...

For the pivot chart we get a similar wizard now, where we can select the chart type and additional data. The wizard step to add data ranges and the step to define the data series is however disabled as these steps are not needed when we get the data from the pivot table.

Pivot chart creation wizard

Pivot chart buttons

This time the biggest change are the pivot chart buttons, which are unique to pivot charts (normal charts don't have them). The purpose of the buttons is to show the layout of the pivot table, so it shows the pivot table fields. On the top it shows the buttons that represent the page fields (if present) and the data fields of the pivot table. At the bottom it shows buttons for row fields next to each other, and in the legend it show the buttons from column fields stacked.

Field buttons in a pivot chart

As they are buttons, there is an action performed when clicking on them, but this is not implemented yet and I'll described this next time in more detail.

From the implementation point of view, the most challenging thing with the buttons was to position them correctly inside the chart as they are part of the chart structure, and to position everything else accordingly (and not breaking the normal charts in the process).


This is an updated video of the current state of pivot charts:

You can find the video on YouTube at the following URL:


Again, many thanks to Nantes Métropole and Ville de Nantes for making this work possible.

Read more about Nantes deployment here.

To be continued...

by Tomaž Vajngerl ( at March 27, 2017 08:32 AM

March 20, 2017

Miklos Vajna

LibreOffice now uses pdfium to render inserted PDF images

pdfium is the rendering library used in Chromium’s pdf viewer. It’s based on the foxit pdf renderer and its rendering quality is much better compared to the pre-existing "convert PDF to ODG, then to an image" code when it comes to just viewing a PDF file. First, thanks to PMG who made this work possible.

Let’s look at a few samples that compare the old pdfimport rendering result and the new pdfium-based one. One important feature is that embedded fonts are handled. This is how this inserted PDF looked like previously:

Compare it with the new result:

Now let’s see the front page of a magazine, you can see 4 unexpected artifacts:

New result:

Finally a problem with pdfium was that LibreOffice got bitmaps from it, so in case you re-exported to PDF, the quality of these PDF images were worse than in the original PDF file. The PDF specification has a reference XObject feature that helps in this case: it allows the PDF export to still write the bitmap to the exported PDF, but in case the reader supports this feature, the vector-based original file will be shown, not the bitmap.

Here is a simple hand-crafted star in a PDF file, as it looked initially:

This is how it looks after LibreOffice’s PDF export learned to emit reference XObjects:

All this is available in LibreOffice master, towards 5.4.

March 20, 2017 09:00 AM

March 19, 2017

Naruhiko Ogasawara

LibreOffice Kaigi 2016.12 Videos

Time is passing too fast.  And I'm sorry not to mention here that LibreOffice Japanese community had published presentation videos at LibreOffice Kaigi 2016.12.

You can enjoy Mr. Franklin Weng's awesome keynote "LibreOffice/ODF Migration in Taiwan."

Any other videos in the Kaigi have been published at "LibreOffice Kaigi 2016.12" playlist at YouTube.  This list is provided by LibreOffice Japanese Team (LibreOffice Japanese NLP) official channel.  The channel also provides videos at another event "LibreOffice mini Conference 2016 Osaka/Japan."

Every talks except the keynote has been in Japanese (because Kaigi is a "Japanese-local" event), but I hope you all enjoy the videos.

by Naruhiko Ogasawara ( at March 19, 2017 04:20 AM

March 15, 2017

Tomaž Vajngerl

Pivot charts in LibreOffice: Part 1


Pivot tables are a powerful tool to reorganise, manipulate and summarise the data set in spreadsheets to get the valuable information from it. To get a quick visual representation of the information, pivot charts can be used. A pivot chart can be created from the output of the pivot tables, and if the pivot table gets changed, so does the pivot chart.

Support for pivot tables in LibreOffice is available for a long time, but there was no support for pivot charts until now. For the past week I was working on pivot charts in a feature branch (feature/pivotcharts) and I got to a first milestone. Pivot charts will be released in LibreOffice 5.4.

Pivot chart data provider

From development point of view, pivot charts are just like normal charts but with a different data provider (source of data), so this was the task with which I started. Normal charts use a data provider which is based around reading from cell ranges, but for pivot charts I created a new data provider, which reads the output data from the pivot table and prepares it for the chart. The data columns are mapped to data series and the data rows become the number of data series in chart (See Figure 1).

Figure1: Pivot table to pivot chart data mapping
Now what is left is naming of each axis and data series in chart. The y-axis categories are mapped to row field names in the pivot table and the data series names, which are shown in the chart are combined names of all column field names of the pivot table.

Each data point and row or column field name also has an associated number format, which needs to be assign to chart data, otherwise the the number format would not the values correctly as in pivot table (this is especially important with date and time).

Updating a pivot chart

Once I managed to do the mapping correctly, the pivot chart showed up as expected, but the pivot chart wasn't updated when I update the pivot table. So to solve this, I had to implement a listener of pivot table updates in the pivot chart data provider, and for every update send the signal to chart to update the data again (which it gets from the pivot chart data provider). The whole update procedure sounds like a ping-pong play between components, but it works quite well.


In the following video you can see the current status of development:


One of the real privileges here is working on LibreOffice for a Collabora Productivity customer who funds significant feature work. Many thanks to Nantes Métropole and Ville de Nantes for their investment here, and making this feature available to all LibreOffice users. You can read more about Nantes deployment here.

To be continued...

by Tomaž Vajngerl ( at March 15, 2017 11:19 AM

March 13, 2017

Miklos Vajna

ECDSA support in xmlsec-nss, bundled by LibreOffice

Last month a LibreOffice bugreport was filed, as the ODF signature created with Hungarian citizen eID cards is not something LibreOffice can verify. After a bit of research it seemed that LibreOffice and NSS (what we use for crypto work on Linux/macOS) is not a problem, but xmlsec’s NSS backend does not recognize ECDSA keys (RSA or DSA keys work fine).

The xmlsec improvements happened in these pull requests:

After this the xmlsec code looked good enough. I had to request an update of the bugdoc in the TDF bug twice, as the signature itself looked also incorrect initially:

  • an attribute type in the signature that had no official abbreviation was described as "UNDEF" instead of the dotted decimal form

  • RFC3279 specifies that an ECDSA signature value in general should be ASN1-encoded in general, but RFC4050 is specific to XML digital signatures and that one says it should not be ASN1-encoded. The bugdoc was initially ASN1-encoded.

Finally a warning still remains: while trying to parse the text of the <X509IssuerName> element, the dotted decimal form is still not parsed (see this NSS bugreport). The bug is confirmed on the mailing list, but no other progress have been made so far.

Oh, and of course: Windows is still untouched, there a bigger problem remains: we use CryptoAPI (not CNG) there, and that does not support ECDSA at all. Hooray for open-source libs where you can add such support yourself. ;-)

March 13, 2017 08:57 AM

March 12, 2017

LibreOffice Design Blog

Please participate in a survey about the standard color palette

With the latest update of color palettes published in New Color Palettes in LibreOffice we also introduced a new standard palette that has room for improvement. We asked for input on the design mailing list and received three new variants. Now it’s up to you to decided which one you like most.

The survey is run on our new Limesurvey platform at

(Survey closed at Mar/19th; result report is in preparation)

The results from this survey will be reported here as soon it has been analyzed.

The post Please participate in a survey about the standard color palette appeared first on LibreOffice Design Team.

by The LibreOffice Design Team at March 12, 2017 10:10 AM

March 06, 2017

Tamas Zolnai

New chart test suit

It's good to see that LibreOffice project has more and more tests improving the functional quality of the software. In this post, I also write about a new test suit added to the project. At Collabora, we are working on a project about a new chart functionality and as a preparation we decided to add a test suit which covers the chart layouting code better than the tests LO already had. With this we can map the actual state of the chart code to test cases and so make sure it's functionality remains intact.

Different kind of automatic tests in LO

There are different forms of automatic tests in the project. The question was which one is the most effective for testing a bigger part of the code (chart layout) not only a small functionality. One form of testing is when we use CppUnit assertions to compare some properties of the actual test case with the expected values. These tests used to test a very specific test case. For example it can check whether one test document has 2 pages when it is imported into LibreOffice. This kind of tests can lead to code duplication when we test the same thing (e.g. page number) on different test documents. That's why this kind of CppUnit test is not effective when we need to test one bigger part of the software sistematically, which may need to test the same thing (e.g. page number) on different test documents, which documents might be important use cases.

Other tests use an XML dump functionality to dump the test document's layout to an XML file and use this file as a reference with which the test document can be compared later. Adding new test cases to this kind of test suits is easier, needs lesser code change compared to first form of tests. However this kind of tests checks the whole layout of the document in general. So when one of these tests fails, you need to check the XML file, understand it's structure and find out why the pointed difference is there. It's clear that this kind of test failures might be more difficult to understand compared to the first form of tests where the test failures point to a very specific document property not to a reference XML file.

New chart test suit

An important difference between these two forms are the generality level of what it tests. First form tests some specific properties of one specific test case, while second form test the whole layout of the test document. To avoid the issues of these two forms I chose to write a test suit designed to test the software functionality on a middle level of generality.

I added a test suit which contains similar tests as the first form, comparing some specific document properties to extected values using CppUnit assertions, but the expected values are not hard coded, but they are written into and read from a simple structured reference file. It's implemented on a way which makes easy to add a new test document for an existing test case and generate the reference file without extending the test code. On the other hand we get a helpful error message when one test failes, since the test case is more specific than an XML dump test.

Testing chart functionality

After I had the form I spent some time on adding the most common use cases to the test suit. I added test cases for different components of charts (axis, chartwall, legend, grid, data series, etc.) and also for common chart types (columnchart, barchart, piechart, etc.). All test cases contains more subcases, testing functionally distinctable use cases. The sistematic testing of the chart functionality also pointed out some issues of the software:

Future possibilities

Now with the new chart test suit bigger part of the chart functionality is covered with tests, but there are still use cases which are not tested. For example some exotic chart types have no tests yet, like bublechart, netchart or 3D charts. Tested document formats are also limited to LibreOffice native formats (ODS, ODP), but these tests are easy to extend to Microsoft Office file formats too, for compatibility testing. You can find new test suit at chart2/qa/extras/chart2dump/ in case you need to add new test cases.

by Zolnai Tamás ( at March 06, 2017 11:28 AM

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 March 06, 2017 09:02 AM

February 27, 2017

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 17, 2017

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

February 16, 2017

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