Welcome to The Document Foundation Planet

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

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

19 March, 2018


The free and open source software world is known for being inclusive and open: anyone can get involved, regardless of age, location or background. In the LibreOffice community, we value the input from experienced community members who bring valuable knowledge and ideas to the table. Today we talk to Italo Vignoli, who has been with LibreOffice since day one and is responsible for marketing and public relations. He describes what led him to open source, along with the challenges and opportunities in marketing LibreOffice.

1. Your background is probably a bit unusual in the free software world. Why did you decide to become an advocate for free software and OpenOffice.org (the predecessor to LibreOffice) at age 50?

In the late nineties, I started to look for Microsoft Office alternatives but I was not happy with “clones” as they were clearly missing a vision. Then, in 2002 I stumbled on OpenOffice.org, and I was fascinated by the potential of the application (although version 1.0 was still very “young”).

I was completely new to open source software, but I decided to learn. During 2003 I started trying to understand the community, and then – in early 2004 – I sent a message to the leaders of the Italian NLP (Native Language Project) and the marketing project, offering my help to raise the awareness of OpenOffice.org within the media.

I met the OpenOffice.org community in September 2004, at the conference in Berlin, and I decided to stay because I loved their ethical values and the passion for innovation. Thirteen years have gone by since that time, and I still have the same enthusiasm and motivation to be part of a community that changes the world of software.

2. What was your background beforehand – and what led you into open source?

I was born in 1954, so I am 63. I have always been extremely curious, and this has helped me in going beyond my background in humanities.

In fact, after my degree in human geography, I started working at the Italian Touring Club as editor-in-chief of the cartographic department. At the same time, I was volunteering as an assistant professor of geography at Milan State University, and a journalist covering metropolitan areas development in Europe.

In late 1981, I moved to Honeywell – at the time a large computer company – to increase the awareness of printers for PCs (the IBM PC had just been launched that year). I soon discovered a passion for information technology which I could not even suspect, given my background and my lack of understanding of mathematics.

Having worked as global marketing director for peripherals and UNIX computers, I realized that communications of high-technologies was my dream job. So, in 1987 I left the company to join a large Italian PR agency, and worked with several agencies throughout my career path. Having founded two own agencies before, these days I work as a freelancer and helped several international companies to set up or grow their operations in

16 March, 2018


Document Freedom Day is planned for March 28, 2018. If you are organizing an event to celebrate it, please remember to register it on the website.

14 March, 2018


Berlin, March 14, 2018 – The Document Foundation will present LibreOffice Certification to Free Software Foundation Members and free software advocates attending LibrePlanet in Boston. Lothar Becker, co-chair of the Certification Committee, will talk about migration projects and training activities related to LibreOffice, with the objective of helping enterprises to achieve the freedom associated with free software and open document formats.

Lothar Becker will present LibreOffice Certification on Saturday, March 24, during LibrePlanet, and will host a certification focused workshop on Monday, March 26, from 9:30 AM to 1:30 PM.

LibreOffice Certification has been extended to FSF Members in 2017, based on the same professional pre-requisites of TDF Members. The workshop will offer a thorough overview of the skills requested and a summary of TDF’s migration and training protocols. Participation is free but must be booked in advance by sending an email to certification@libreoffice.org.

In addition, on Sunday, March 25, there will be an international certification review session for applicants for migration and training based in South America and Spain. Reviewers and applicants will join Lothar Becker, chairing the session, using a video conference system based entirely on free software from end to end.

For additional information, please write to certification@libreoffice.org.

13 March, 2018


Google Summer of Code (GSoC) is a yearly programme in which Google funds university students to work on free and open source software projects. LibreOffice has benefited from this – last year 10 students were accepted into GSoC to do various programming jobs, helping to improve the software.

GSoC students are assisted by experienced “mentors” in the LibreOffice community, as 2016 student Jaskaran Veer Singh explains:

For 2018, LibreOffice is again an organisation in the GSoC programme, so if you’re a university student and want to get experience working on a well-known free software project, while also being paid for your efforts, get involved! But don’t delay: the application period runs until March 27, so it’s not far off.

To get started, check out some ideas for projects you can work on. Each project describes what’s involved, the skills required, and the mentor you can contact to get help. If you see something you’d like to work on, contact the mentor as soon as possible! Then you can discuss how to proceed.

After that, read the general GSoC 2018 page on our wiki, which provides more information on the GSoC programme and tells you how to apply. So, check out the ideas, talk to the mentors, and good luck with your projects!



Over the past months, we have been able to make some resources available to look into the most urgent Mac-specific bugs in LibreOffice, thanks to people purchasing LibreOffice Vanilla on the Mac App Store.

We addressed all the high priority Mac regressions

A few bugs were related to use of various 3rd-party fonts on macOS. The system APIs used by LibreOffice to enumerate installed typefaces and their styles indicate the weight of the font as a floating-point number between -1.0 and 1.0, with zero being “regular” weight. That number needs to be converted to an integer (with just ten separate values) used in LibreOffice. The mapping is heuristic, and it turned out that tweaking the mapping just a little bit made it possible to distinguish between some weights of a typeface that had previously mapped to the same weight in LibreOffice.

Another issue was that for some other 3rd-party fonts, the system API claimed that the weight of the “Regular” style was non-zero and positive (0.23 to be exact), i.e., a bit on the bold side. LibreOffice trusted that, which lead to the bold style always being selected for those typefaces, even when asking for a non-bold, regular (medium) weight. The fix for this was to simply handle these special cases separately. If resources allow and more similar problematic fonts are identified, some more generic fix would be needed.

Another set of bugs were related to notifications for screen parameter changes (like when changing the size of the Dock, or attaching or detaching monitors). On some Macs, the system sent these notifications quite eagerly for no obvious reason. LibreOffice was asking to receive such notifications too early before it was prepared to handle them. This lead to a crash. The fix was to request notifications only once being prepared to receive them.

Also, the handler for this notification did not check whether anything had actually changed that LibreOffice would want to know but just went through all the motions of re-calculating layouts of GUI and sizes of text and whatnot, totally in vain. This took a considerable amount of time when you had a lot of document windows open and several of these notifications were received. The fix here was to add a check if anything actually had changed that would be of interest to LibreOffice, and if not, just don’t proceed to do any re-calculations of layouts etc.

Finally, there was a problem with inserting videos in Impress presentations. When doing that LibreOffice (for some reason) copies the video file first into a temporary copy. That copy was given a name without file name extension. The system APIs used to open and display the video did not like that and displaying even an initial grabbed frame from the video failed. The fix was simply to make sure the copy of the video file had the same file name extension as the original one.

We’ll be addressing more Mac issues as when as we


It's been some times from my last blog post and in that time I continued with refactoring the code to get rid of use of GraphicObject uniqueID being passed around and stored in the model. The state of the code now is looking fine as we almost don't use the uniqueID anymore, which means that I can start with the next step of Graphic and GraphicObject improvements. 

There is a thing I forgot to clarify in the last blog post and this is that the GraphicObject uniqueID is usually passed around in the form of a URL string. The string has the prefix "vnd.sun.star.GraphicObject" and followed by the GraphicObject uniqueID. Using that URL it is possible to re-create a GraphicObject by passing the unique ID as the construction parameter (see constructor with OUString parameter on GraphicObject or UNO serviceGraphicObject::createWithId).

Usage in filters

The most "heavy" users of the uniqueID were the document format filters (xmloff, oox & writerfilter) which generally use it to read the images from the storage (usually ZIP) and convert the GraphicObject and pass GraphicObject uniqueID around. At writing it does the reverse, get the GraphicObject URL and "resolve" the URL to the package URL. At conversion the GraphicObject is created and the image is stored into the storage. To do this there XGraphicObjectResolver published UNO interface which has only resolveGraphicObjectURL which converts a GraphicObject URL to the Package URL and back. 

Resolving the URL is not the correct approach anymore so I had to do it in a different way. The result of that is XGraphicStorageHandler, which has explicit method to load and save an XGraphic from the package URL, which does everything without the need to use the GraphicObject unique ID.

In addition a graphic can also be external - somewhere on the disk or internet, identified by an external URL. For this case I implemented a GraphicLoader, which is generally just uses XGraphicProvider to load the graphic (in one of the next steps this will be reversed so that XGraphicProvider is just a UNO interface that uses GraphicLoader).

The special case with external URLs is also that we need to remember the URL, which was used to load the graphic, so that we can later just save the URL and not the Graphic into the storage. Previously the URL was always passed along as string so this wasn't a problem, but now we pass XGraphic. So for this I had to extend the Graphic in VCL with an origin URL attribute, to solve this use case. In a next steps the URL loading will be extended even more so the Graphic itself will handle URL completely transparently to the outside.

UNO properties

Usually the filters used the UNO API to set the GraphicObject unique ID into the document model. This was mostly implemented as a properties on various interfaces in UNO. Mostly used name of the properties was GraphicURL (used in different places), but there were also other properties

12 March, 2018

  • Practice with E. scales decaying over the weekend; hmm. Mail chew, sync with Miklos. Lunch with J. Sync with kendy, call with Jeroen. TDF call. Stories in the evening - Asimov for E. Max Lucado for H.


I worked on a notebook of colleague with a broken hard disk during the weekend. I removed the old disk and added a solid state drive to it. I installed also operating system to the new disk and in addition she got some free software on it, particularly the new LibreOffice 6.

11 March, 2018

  • Up, cooked breakfast in bed for J. with M. - presents, cards, a banner, etc. for the sweetheart. Out to All Saints, played bass; enjoyed Max's sermon. Home for roast lunch.
  • Slugged; digested; played guitar much of the afternoon while babes played lego (a break from minetest), and Smash-Up. Julie over for tea.

10 March, 2018

  • Poked mail, took H. to practice the Organ & got a bit of hacking done. Back for lunch. Watched Lost in Space (with not much to recommend it) in the afternoon.

09 March, 2018

  • Out for a run; mail, customer calls, poked at projections.
  • Poked at EC2 hosting of minetest again in the evening with N.; SLE12 too stale, and/or games not compiled for it; decided to try flatpak having played with snap the other day. Far from ideal for a head-less server use on a remote machine; the app store gives .ini files rather than a simple command-line to install. Installing files demands a server to install from rather than noticing I have just one, and the app is in it. The command-line demands very.long.qualified.names rather than being helpful. I assume this works beautifully from the GUI, and I'm a victim of a corner-case.
    Running a new OS underneath chews enough RAM to require a more expensive instance too - upgraded that, it works; hmm.



I have not talked mich about SI-GUI statistics lately so here some numbers 😉

Since logging every action (this can be turned off)…

  • 6990 parallel installation have been started (and 6022 of them finished successfully)
  • 6327 downloads have been started with 4833 fining their way in the download statistics [if someone has problem downloading LibreOffice, please tell me]
  • Most people use English (4338), French  (1669), Spanish (1251) and German (1327)

There have been SI-GUI version with bugs in reporting, which could hint to the numbers are not 100% accurate (to low and not to high BTW)

I hope it is still useful for the 33 people, which used this tool in the last week. Do you think it will stay relevant when auto updating nightly builds are implemented?



08 March, 2018

  • Customer call at breakfast; fun. Sync with Miklos. Call with Eloy. ESC call, posted minutes. Out with Richard Wood in the evening for a pleasant drink / catch-up.


Our inclusive global community celebrates March 8, International Women’s Day, with a tribute to LibreLadies, the group of female volunteers who contribute to the LibreOffice project in different areas. The picture was shot In Rome during the LibreOffice Conference. Marina Latini, first right, has been recently confirmed as TDF Chairwoman (and as such is the longest running BoD Chair since the birth of The Document Foundation in February 2012). Katharina “Bubli” Behrens, first left, is a leading developer. Sophie Gautier, middle (grey hoodie), is a key member of TDF Team, and one of the oldest members of the community. Together with them, a large group of young Albanians who will be involved in the organization of the next LibreOffice Conference in Tirana, and other volunteers from other European countries.

We would like to see more women involved in the LibreOffice and the Document Liberation projects, following the leading example of the Albanian community, where over 50% of volunteers involved in free open source software – including technical roles – are female.

07 March, 2018


I’m currently busy with my payed day work and thus have only very small ressources for voluteer work. I met with some friends today to work on a new WordPress site. We finished some tasks and talked about the future steps and the lauch of the site. We also launched a NextCloud instance and I showed a bit of the features to my friends.

Because I’ll on another meeting they will show the site and the NextCloud instance to the whole group of local volunteers during the next weekend.

  • Mail; sync with Andras, admin, lunch; chat with Thorsten, poked at projections.

06 March, 2018

  • Mail chew, more text review; built ESC proto-agenda. With a number of friends dying of Cancer near and far, I was encouraged to watch Death is not dying; serve, with joy - what a great reminder; the serving is easy - the joy is often hard for me.
  • Got some AWS / EC2 instance setup in the evening with N. to backup family photos & minetest onto; fun.

05 March, 2018

  • Mail chew; admin, call with Mike K, lunch. Great swathes of admin; people like to send me 60 pages of legal boiler-plate at a time it seems.
  • Interested to see in the news that the Royal Mail can spot bogus clairvoyants these days - I wonder if they use AI for that.
  • Pleased to discover that after some upgrades removing nouveau.modeset=0 from my kernel parameters (while adding nopti) gives me some accelerated X goodness again; nice.

04 March, 2018

  • To church early, played bass, E.H & self did prayers for the family service. Back home for lovely family Italian food extraveganza - with S&C, J&A, B&A.
  • Played Vive, with J.&A, Clive gave bass advice; listened to Odyssey over tea together; put babes to bed with stories. Reading N. Sustainable Energy without the Hot Air.


In LibreOffice 6.1, when the GTK3 backend is in use, the message dialogs are now native GTK3 message dialogs rather than vcl message dialogs using GTK theming.

So they are now true GTK dialogs and they look like...

while before they looked like...

We have 475 message dialogs directly instantiated in LibreOffice and 89 indirectly instantiated via GtkBuilder .ui files.

We've changed the format our dialog, etc. translations are stored in from our own legacy custom format to the more commonplace gettext .mo format. In the case of a message dialog described via a GtkBuilder .ui file, we now use GTK's own GtkBuilder to load the .ui, and GTK's own gettext integration to localize it from our new .mo format translations.


Die Project Gutenberg Literary Archive Foundation (PGLAF) sperrt jetzt den Zugang zu allen Büchern des Project Gutenberg für IPs die Deutschland zugeordnet sind, aufgrund eines Gerichtsurteils das in Deutschland ergangen ist, weil Werke von Heinrich Mann, Thomas Mann und Alfred Döblin in USA zwar bereits gemeinfrei sind, aber noch dem deutschen Urheberrechtsschutz (Tod + 70 Jahre) unterliegen.

Es lohnt sich, die Q&A im PGLAF statement zu lesen. Money quote:

PGLAF's legal advisors disagree that any foreign Court or entity has jurisdiction over its actions regarding copyright. The Court in Germany has promoted a theory that it has jurisdition, mainly because the www.gutenberg.org site has some content in the German language. The view of PGLAF is that it is up to the rights owner in Germany to identify people there who are infringing on its copyrights, and pursue remediation there.

Q: So the court thinks that the presence of content in German means that courts in Germany have jurisdiction, regardless of the fact that PGLAF is entirely in the US?
A: Yes, that was the original basis of the claim for jurisdiction, which the Court accepted in their judgement. Since then, there some more recent decisions in the European Court of Justice, and other German courts, that support this theory based on a Web site being accessible from a country.

Wenn ich irgendwelche Abos beim S. Fischer Verlag, GmbH oder anderen der Verlagsgruppe Georg Holtzbrinck GmbH (Holtzbrinck Publishing Group, Holtzbrinck Publishers LLC) hätte, würde ich die jetzt kündigen, und zwar mit Angabe genau diesen Grundes. Wer derartigen kulturellen Kahlschlag auslöst verdient es nicht anders. Auf jeden Fall werde ich in Zukunft vermeiden Bücher von angehörigen Verlagen zu kaufen. Obwohl das schwierig werden könnte, denn es sind eine ganze Reihe von Verlagen unter Holtzbrinck: Macmillan Publishers mit den deutschen Publikumsverlagen S. Fischer Verlag, Rowohlt Verlag, Kiepenheuer & Witsch, Droemer Knaur, Argon Verlag, [Quelle Wikipedia]. Leider sind die Dieter von Holtzbrinck Medien (DvH Medien), denen der Zeitverlag gehört, der Georg Holtzbrinck GmbH eng verbunden.

Gerüchtehalber gibt es wohl einige Unstimmigkeiten bei der Geo-Zuordnung von IPs bei verschiedenen deutschen Internet-Providern und ob IPv4 oder IPv6.

03 March, 2018

  • Snow-ball fight in the morning in the road & built a snow-man. Christina over for lunch & making cookies with H. - out to sleep-over with Charlotte; watched Evan Almighty. Stories with babes; bit of work; Man in the High Castle in the evening.

02 March, 2018

  • E. home for another snow-day, while H.N.M. go to school in Soham. Mail chew, sync with Andras & Kendy, updated some docs. More mail.
  • Pleased to see the team produce a great Collabora Online 3.1 release with lots of fixes & improvements.
  • Hannah, Nick & Joni over for dinner, and an art lesson drawing still-life; terrible tonal shading from yours truly.


I worked on improving the ODT ↔ XHTML conversion performance for simple documents in LibreOffice recently. First, thanks to Vector for funding Collabora to make this possible.

ODT → XHTML conversion


The focus here was really simple documents, like just one sentence with minimal formatting. The use-case is to have thousands of these simple documents, only a minority containing complex formatting, the rest is just that simple.

Performance work usually focuses on one specific complex feature, e.g. lots of bookmarks, lots of document-level user-defined metadata, and so on — this way there were room for improvements when it comes to trivial documents.

I managed to reduce the cost of the conversion to the fifth of the original cost in both directions — the chart above shows the impact of my work for the ODT → XHTML direction. The steps that helped:

  • Recognize XHTML as a value for the FilterOptions key in the HTML (StarWriter) export filter, this way avoid the need to go via XSLT, which would be expensive.

  • Add a new NoFileSync flag to the frame::XStorable::storeToURL() API, so that if you know you’ll read the result after the conversion finished, you can avoid an expensive fsync() call for each and every file, which helps HDDs a lot, while means no overhead for SSDs.

  • If you know your input format already, then specifying an explicit FilterName key for the frame::XComponentLoader::loadComponentFromURL() API helps not spending time to detect the file format you already know.

Note that the XHTML mode for the Writer HTML export is still a work in progress, but it already produces valid output for such simple documents.

XHTML → ODT conversion


The chart above shows the results of my work for the XHTML → ODT direction. The steps to get to the final reduced cost were:

  • The new NoFileSync flag, as mentioned previously.

  • A new NoThumbnail flag, which is useful if the ODT will be part of a next step in the pipeline and you know that the thumbnail image won’t be used anyway.

  • The default table autoformat definitions in Writer are now lazy-loaded. (This is my favorite one, you don’t have to opt-in for this, so everyone benefits.)

  • A new HiddenForConversion flag for frame::XComponentLoader::loadComponentFromURL(), which means we don’t lay out the UI elements (toolbars, sidebar, status bar, etc.) when we know the purpose of the document load is only to save the document model in an other format.

All this is available in master (towards LibreOffice 6.1), or you can grab a daily build and try it out right now. :-)

01 March, 2018

  • Early call with Martin & Miklos, mail, snow sweeping, call, lunch.
  • Somewhat irritated to get "Your exclusive invitation - The new Porsche Cayenne" through the door - presumably sent to company directors; I guess we need to have some reply options:
    "[X] I invested my money into Free Software not silly cars" or perhaps -
    "[X] When your car is a plucky start-up leading the battery vehicle and self-driving future, then I might look again (cf. Tesla)"
    Then again - a junk-mail fuelled heating-system is an attractive option with snow outside; perhaps I should install another forty-two letter-boxes in my door to feed it.
  • ESC call, chat with Daniel, mail. Dinner, read stories. Contract review, financial projections.

28 February, 2018


Last time I wrote a blog post about the challenges of some Firebird bugs in LibreOffice, and the main concept of implementing the schema import of HyperSQL databases inside a Base document.

Since lately, I continued working on the tender published by TDF with Collabora. Next step was to create a way of importing table rows from a HSQL database. Base creates tables as CACHED tables – meaning in HSQL terminology that data is stored on disk, and pulled up to memory in demand – which implies that the data is stored in a binary file near the schema description.

To interpret the binary file, we get some help from the “script” file, which contains metadata for the database. For each table there is a statement which pairs a set of numbers to them (SET TABLE … INDEX … ). These numbers are file pointers to the root element of AVL trees. Each node of the tree stores a row.

In order to read a row from the table, it is necessary to know the ordered set of its column types, because the row does not contain this information. Fortunately, the column types are known from the schema import.

The next step is to read the data of each column in a row. The data is stored continuously in the file and each type has its own format. For example, the VARCHAR type is stored as follows: The first 4 bytes can be interpreted as an (unsigned) number, which tells us the size – number of unicode characters – of the string. The next array of bytes contains the string itself.

Finally, we have to adopt the data with the new DBMS. For that I use the sdbc layer’s PreparedStatement. By calling the appropriate setXXX method, and executing the statement, the data is finally migrated to the new database.

For those, who were enthusiastic enough to read this post so far, this is the related commit on gerrit:

The job is not done yet. There are some type interpretations which are not implemented yet (e.g. Date/Time, Numeric/Decimal). Also I intend to write unit tests for the whole library, and I expect some upcoming problems while testing it with different databases.

  • Mail triage; swept snow off the drive, played with E. and J. a little. Community call, CP team call, sync with Dennis, two customer calls, partner call; called out ... more admin & beating back the falling snow.


Sometimes you may find galimatias in the user interface such as quirky captions, misleading descriptions, too long or to short texts, and strings that are not compliant to the guideline. Why not take this as the perfect start into easyhacking?


As explained in the posting on How to set up your environment, you can always search for unique strings.…

The post Easyhacking: All about terminology appeared first on LibreOffice Design Team.

27 February, 2018

  • Poked mail, slide work; into Cambridge - to the office to talk with a potential partner; good meetings - out for lunch and a quick tour of Cambridge (in the cold). Bus back, mail chew, picked up by J. and E. (a quick office tour for E.), and home again; more mail & admin to catch up on the day's business.

26 February, 2018

  • Mail, mattermost, patch review, contract execution, etc. First TDF BoD meeting of the new BoD.
  • Reflecting on the non-profit/charity sector post- Oxfam & Save The Children and many other instances where (it appears) that in some cases aid was used for sexual exploitation. The assumption that companies (particularly large ones) are and must always be treated as uniformly evil always looked rather thin to me; but the idea that non-profits are intrinsically whiter-than-white in comparison also starts to look increasingly unlikely.
  • Up late preparing slides.

Older blog entries ->