The Document Foundation Planet


June 21, 2017

Markus Mohrhard

Announcing automatically updating Linux LibreOffice builds

I’m finally ready to announce LibreOffice daily builds for Linux that integrate our new automatic updater. The work on the automatic updater has been going on for nearly a year now and is finally in a shape that we produce builds on TDF hardware that will automatically update using delta updates.

The current builds are 64-bit Linux builds created on SLES 12.2 and should run on most Linux distros. These builds are .tar.gz based archives that you can extract and just run. Note that we can’t update builds that are placed into locations that are not writeable by the current user (and due to missing support for signing executables and libraries on Linux there are no plans to change that).

Below you will find a short summary how the updating works and some of my open items until this feature can be shipped in release builds (hopefully already in the next major release). If you are not interested in the technical details, head to the daily builds directory and download the build (currently the only way to see that an update happened is through the version string in About dialog but future builds will open my test wiki page after a successful build).

Technical details

Our updater code is heavily based on the Mozilla updater code and was initially imported into the LibreOffice build system as part of GSoC 2015.

The update files are called mar files and contain bzip2 compressed update files. In addition to the update files (either complete or delta updates) mar files also contain signatures, version info and update channel information. We currently only use the signature support to ensure that the update files are valid LibreOffice update files produced by us and the version info to make sure that nobody can do a downgrade.

The update process is currently a two step process but I might change this to single step process later. The first step currently contacts our update server that knows about all available updater enabled builds and will tell the LibreOffice instance which update files to use and provide some additional information. Based on the response the LibreOffice instance will download the update file, verify that the file is correct (file size and hash), copy the existing installation and apply the update in the update directory. After the update has been applied the first stage is complete and we need to wait until the next start to replace the running LibreOffice instance with the freshly updated one. During the next start the updated build in the update directory replaces the existing installation.

We currently use a two step process to ensure that we are not blocking the user too long as downloading a complete update file can take several minutes (about 200 MB compared to around 2 MB for my current delta files) and ensuring that if one of the steps fails we still have a working build. However, anyone who has ever developed complex code on Windows knows that Windows prohibits access to files that are already open by another process. Therefore this approach does not work on Windows and I think the two step process has some potential for user profile corruption if the user profile is stored in the installation directory (e.g. by default in our archive based builds). The long term plan is currently to switch to an update process that first downloads the update file and during the next start applies the update in-place. This approach would work on Windows and should avoid all potentials for user profile corruptions.

Another huge problem of the automatic updater is how to handle the case that the user can not write to the installation directory (e.g. installed as a normal application on Windows). Mozilla handles this case on Windows through an additional updater service that elevates the privileges of the updater process. Currently my plan is to use the same concept for LibreOffice and the code for the updater service already compiles successfully on Windows. Using such a service requires us to make sure that the service can not be used by any executable that is not produced by the LibreOffice team which requires signatures checks during each step. As I could not find a way to reliably sign executables and libraries on Linux there is currently no supported planned for this feature outside of Windows.

The updater seems to work reliably on Linux already and many of the basic features that I have on my list are already implemented. Currently the one remaining feature that I still need to implement for all platforms is some form of an UI. The larger task is to get the updater working well on Windows, including the updater service and the MSI integration through MSP updates. In addition, I would like to implement some automatic tests that make sure that updates work and that updated builds and freshly installed builds are identical.

If you want to help with the work on improving the automatic updater and making it available in our next major release please talk to me. A good starting point might be tdf#108563, a simple easy hack in the online updater code.

As always I have to thank all developers working on LibreOffice, the TDF infrastructure team which provides all the services that are used to produce the builds and especially the Mozilla team for providing an awesome solution as open source that we can easily integrate.

by Markus Mohrhard at June 21, 2017 09:21 PM

Official TDF Blog

New items in our merchandise shop

As you may know, The Document Foundation has a merchandise shop with clothing, accessories, phone/tablet covers and various other items. Many of the designs feature the LibreOffice logo on its own, but we thought we’d update the shop with some items that highlight the benefits of LibreOffice.

But given limited space, what benefit should really stand out?…

The post New items in our merchandise shop appeared first on The Document Foundation Blog.

by Mike Saunders at June 21, 2017 02:41 PM

Michael Meeks

2017-06-21 Wednesday.

  • Mail chew; massaged priorities. Thrilled to see the great work from the team ship in Collabora Online 2.1.2 with avatars, and various other UI features; well worth an upgrade.

June 21, 2017 11:51 AM

June 20, 2017

Michael Meeks

2017-06-20 Tuesday.

  • Consultancy call, mail chew, built ESC agenda. Lunch. Commercial call; super hot - and 3x active building sites two next-door, and one across the road: wow.
  • Worked lateish and got my hash to wire-id conversion working nicely in online; more efficient and more readable.

June 20, 2017 09:00 PM

>Akshay Deep

Usability of Special Characters: GSoC 2017

Woah, Google Summer of Code with LibreOffice ( x2 ). This time, I’ll be working on improvement and rework of Special Characters feature in LibreOffice and adding some enhancements to it. I will be mentored by Samuel Mehrbrodt, Thorsten Behrens, and Heiko Tietze. I’ll encapsulate all the proposed changes with respect to the project in this blog.

The Idea

  • Create a way to quickly re-use recently-picked special characters, allowing the user to search in the whole character map, which has no filter to narrow down results.
  • Allow users to create their own ‘Special Characters’ subset (Individualization)
  • Sorting by last in, first out; items from the list of recently used characters are sorted to the beginning if selected.
  • Create a toolbar dropdown control to easily access recent symbols and the user-defined custom subset.
  • Have a preview along with the Unicode name.
  • Better UI for search (within font subsets) using Unicode name, hex and decimal code.
  • Different subsets within a font need a separation in the special character SvxShowCharSet custom widget.

Finalized enhancements for the dialog

Proposal for the toolbar dropdown for quick access to favorites and recently used characters.


Design for the toolbar dropdown.

A lot of challenges need to be addressed while working on this project. It’s about time to play with Unicode data and custom-widgets.

For other queries and discussions, please comment or ping me (IRC nick: Akki) on libreoffice-dev / libreoffice-design channel on Freenode.

by akkidevblog at June 20, 2017 06:52 PM

June 19, 2017

Michael Meeks

2017-06-19 Monday.

  • Mail chew, aborted team meeting; patch review, prodded leads. Lunch. Dug through older E-mail looking for gems. Partner call. Finally got around to de-bonging the online / slideshow unit test. Poked at a particularly fun unit test deadlock for good measure. Tried to unwind what is the same DNS lookup issue as this with unpleasant BT Home Hub. TDF board call.

June 19, 2017 09:00 PM

June 18, 2017

Michael Meeks

2017-06-18 Sunday.

  • Birthday - 40th' today; a fine clutch of presents over a continental breakfast to enjoy with the family - they're such a blessing.
  • Out to Louth Evangelical Church, good talk on Jesus' teaching's power to amaze & convict people from Mark 1:21-27 from Mark Plumb visiting from Huntingdon. Home for pizza lunch & more Spa'ing.
  • Drove home; un-packed, stories for babes; movie, sleep.

June 18, 2017 09:00 PM

June 17, 2017

Michael Meeks

2017-06-17 Saturday.

  • Up earlyish, out for a walk through the countryside around Louth; with the family - lovely; picnic lunch in a field. Back for a long swim together at the lodge Spa; lovely. Fine steak dinner, bed.

June 17, 2017 09:00 PM

LibreOffice Design Blog

Survey on LibreOffice features

Due to its long history, LibreOffice has accumulated a staggering amount of features. Maintaining these features is not free, and having a massive amount of features may blur the focus of the software. In order to steer the development and to focus on the more important aspects we prepared a survey that investigates how often some features are used.…

The post Survey on LibreOffice features appeared first on LibreOffice Design Team.

by The LibreOffice Design Team at June 17, 2017 09:36 AM

June 16, 2017

Official TDF Blog

LibreOffice Migration Workshop in Tirana

I have spent the last weekend in Tirana, the capital city of Albania, with a group of young members of the local LibreOffice/FLOSS community – Anxhelo Lushka, Augest Dalliu, Greta Doci, Jona Azizaj, Kristi Progri, Mariana Balla, Marinela Gogo, Redon Skikuli, Sidorela Uku, Silva Arapi and Suela Palushi – for a LibreOffice Migration Workshop.

As everyone can see from the picture, the LibreOffice/FLOSS community in Albania is different from any other open source community, as it has a large majority of women: in fact, the workshop was attended by seven women – Greta, Jona, Kristi, Mariana, Marinela, Sidorela, Silva and Suela (plus another two or three for a few hours) – and three men: Anxhelo, Augest and Redon.…

The post LibreOffice Migration Workshop in Tirana appeared first on The Document Foundation Blog.

by Italo Vignoli at June 16, 2017 02:01 PM

LibreOffice Design Blog

What motif for the next release do you prefer?

We asked recently for branding proposals for the upcoming release of LibreOffice. The task was also announced on the job board of the Open Source Design group and we got a couple of replies on their discourse forums. Below you we show the motifs embedded in the splash screen.…

The post What motif for the next release do you prefer? appeared first on LibreOffice Design Team.

by The LibreOffice Design Team at June 16, 2017 01:00 PM

June 15, 2017

Official TDF Blog

LibOCon 2017 Call for Papers

The Document Foundation invites members and volunteers to submit proposals for papers for the conference in Roma. Whether you are a seasoned presenter or have never stood up in public before, if you have something interesting to share about LibreOffice, we want to hear from you!

Proposals should be filed by August 15th, 2017 in order to guarantee that they will be considered for inclusion in the conference program.…

The post LibOCon 2017 Call for Papers appeared first on The Document Foundation Blog.

by Italo Vignoli at June 15, 2017 07:00 AM

June 13, 2017

Official TDF Blog

LibreOffice contributor interview: Daniel A. Rodriguez

Having concluded our video interviews from FOSDEM, we now return to our regular LibreOffice contributor interviews on the blog. Today we talk to Daniel A. Rodriguez, an Argentinian LibreOffice and Free Software supporter, who helps with marketing, translations and design.

Where do you live, and are you active on social media?

I live in Posadas, the capital of Misiones in the north-east of Argentina.…

The post LibreOffice contributor interview: Daniel A. Rodriguez appeared first on The Document Foundation Blog.

by Mike Saunders at June 13, 2017 01:47 PM

>Szymon Kłos

Watermark for LibreOffice Writer

Recently I was working on Watermark feature for LibreOffice Writer. In case of TSCP Classification it was possible to add "Confidential" watermark in the document background. I extended that with possibility to add custom text, font family, color, transparency level and angle. Additional dialog was introduced in the menubar under "Insert" > "Watermark...".

I improved also export and import for that kind of shapes from .dotx files. Now font-family is correctly loaded:

RTF import also was improved, before Watermark was visible as a plain text:

by Szymon Kłos ( at June 13, 2017 07:00 AM

June 12, 2017

Andreas Mantke

New Setup Of Website And Blog

I had to setup my website and my blog due to some issues again. I’ll restore the content manually during the next days.

by Andreas Mantke at June 12, 2017 09:09 PM

June 07, 2017

Official TDF Blog

LibreOffice Quality Assurance: six months in statistics (part 2)

This is the second part in our blog series about the LibreOffice QA (quality assurance) community – see here for the first part.


During the six month period from 23 November 2016 to 21 May 2017, 553 bugs were identified as regressions by 61 people. This means a feature behaved correctly in the past – but a change in the code made it work incorrectly.…

The post LibreOffice Quality Assurance: six months in statistics (part 2) appeared first on The Document Foundation Blog.

by Mike Saunders at June 07, 2017 12:04 PM

June 04, 2017

Eike Rathke

Subway Tooter, a Mastodon client for Android

Best Mastodon client that supports multiple accounts I found so far for Android is Subway Tooter (jp.juggler.subwaytooter). If you don't use Google Play but F-Droid it's also available from the IzzyOnDroid F-Droid Repository.

Unlike in the web client you can choose which account to use when you toot, boost, reply, follow, favourite or send a message, where otherwise the web client uses the account on the server you happen to be logged in.

by erAck (23@ at June 04, 2017 06:44 PM

May 31, 2017

Miklos Vajna

LibreOffice Perugia HackFest 2017

(via ogervasi)

Last weekend I attended the LibreOffice Perugia HackFest 2017, with the primary goal of mentoring students (together with Eike and Christian): provided they manage to contribute at least one non-trivial easy hack, they get university credits for their work.

I worked with Arianna, Claudio, Francesco and Gian, all of them managed to achieve something by the end of the third day.

When I was not helping others, I also fixed a few bugs:

  • tdf#107976 sw: let a view handle multiple transferables

  • tdf#107837 DOCX export: fix balanced multi-col section at doc end

  • tdf#107684 DOCX export: fix duplicated <w:outlineLvl> element for styles

  • tdf#106950 sw: support CharShadingValue property on paragraph styles

Some photos I took during the event are available.

Thanks the organizers for the great event, also kudos to Collabora, Red Hat and TDF for allowing mentors to come! :-)

May 31, 2017 08:07 AM

May 30, 2017

Lera Goncharuk

Variables and data types of LibreOffice Basic

I have promised for a very long time to start writing about the scripting language of programming Basic in LibreOffice and creating macros by this language. This article is devoted to the types of data is used in Basic and, to a greater extent, the rules of description and the possibility of using variables. As always, I will try to provide a maximum of information, and for this reason I hope that this simple topic will be useful not only for novice users. Separately, I would like to thank everyone who commented on the Russian article, gave their recommendations, and helped to deal with difficult questions.
Read more »

by Lera Goncharuk ( at May 30, 2017 05:55 PM

May 27, 2017

Tomaž Vajngerl

Pivot charts in LibreOffice: Final part 3

It has been a while when I posted an update on pivot charts. In the mean time I finished what was planned and iterated through cycles of needed fixes and polish. In the mean time we branched off the code for LibreOffice 5.4 and the pivot chart implementation is part of that too. If you want to try it out, you can get the LibreOffice 5.4 pre-release on the download page.

Pivot chart field button actions

Last time I explained about the buttons, but I didn't explain what action is performed when we click on them. The buttons generally have a similar function as in pivot table - to show the pivot table layout and to apply filtering of data. The filtering in the pivot table opens a non-modal windows where you can choose the filtering. For pivot charts I wanted to reuse that, so when clicking on the field button, the request is send from the Chart component back to the Calc, where the same window is shown (shown in Figure 1).

Figure 1: Pivot chart field filter

Improvements to pivot chart buttons

In previous post, the pivot chart field buttons were still very basic. Now I improved them, so they show a down arrow, so they look more like they have a pop-up action attached to them. If there is some filtering applied, then the arrow turns blue (similar to the pivot table), so it is easier to see when a field has any filter applied. 
For page fields we also show what is filtered: when nothing is filtered "- all -" is shown, when some all filtered, then "- multiple -" is shown and when only one value is not filtered, then we show that value.

ODF support and compatibility

A pivot chart is useless if we can't save it to a file and later reopen. For this it was needed to extend the ODF format. Luckily, this was relatively easy to do, as the only thing needed is the name of the pivot table that a chart links to (I added "data-pilot-source" attribute to "chart:chart" element). Everything else is already present in the existing import/export code so no additional elements were needed to recreate the exact state that was present when the document was saved. 

A bit related is also copy and paste, which uses the ODF as an intermediate format (copy saves parts to the ODF format and paste loads the format) so things like copy/paste between documents works. A difference here is that we can copy the pivot chart and paste to a different (empty) document, which doesn't have the pivot table. In this case I had to make sure that a normal chart is pasted, which uses the table internal data and not the pivot table. The table internal data is always written with the chart object even if it is not used, just for situations like this (another one is also when we copy from Calc document and paste in Writer document).


It would be really hard for me to implement this properly without tests, as they cemented the behaviour and, if they failed, I knew that probably I made a mistake or I have took a wrong approach to solve the problem. First I added a import / export tests, which just used an existing document to get the data, pivot table and already existing pivot chart. The purpose of these are to test the ODF import and export code. 
Later, I added tests which programatically add data into a sheet and create a pivot table from scratch as a set-up, then create the pivot chart and test various pivot table layouts, and assert what we expect to see in a pivot chart. This approach is better as a document is not needed, and it demonstrates that a pivot chart can be made from scratch with the available API.

Final demo

Finally, I want to show the complete demo of the pivot chart feature:

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


Many thanks to Nantes Métropole and Ville de Nantes for making this work possible.

Read more about Nantes deployment here.

by Tomaž Vajngerl ( at May 27, 2017 10:48 AM

May 24, 2017

Florian Effenberger

LibreOffice-Projektwochenende im Juni 2017 in Berlin

Im deutschsprachigen LibreOffice-Projekt ist es bewährte Tradition, mindestens ein Projektwochenende im Jahr abzuhalten. Ort und Termin stehen nun fest: Wir treffen uns vom 23. bis 25. Juni in Berlin und eines der Hauptthemen wird LibreOffice online sein.

Ein LibreOffice-Projektwochenende
Ein LibreOffice-Projektwochenende

Dieses Jahr treffen wir uns von Freitagnachmittag, 23. Juni bis Sonntagmittag, 25. Juni in Berlin. Vielen Dank an Endocode für die Unterstützung!

Alle Details und die Anmeldemöglichkeit findest du auf der offiziellen Wiki-Seite und im Blogposting.

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! Ich freu mich auf dich!

by Florian Effenberger at May 24, 2017 10:07 AM

May 23, 2017

Florian Effenberger

Interview zu meiner Arbeit bei LibreOffice und The Document Foundation

Während der diesjährigen FOSDEM hat mein Kollege Mike Saunders viele Mitwirkende an LibreOffice zu ihren Beiträgen im Projekt interviewt. Ich freue mich sehr, dass ich mit ihm über meine Arbeit als Geschäftsführer der Stiftung The Document Foundation und meine Erlebnisse mit der Community sprechen durfte.

Das Video steht nun auch in deutscher Sprache online.

Ich hatte während der FOSDEM leider mit einer starken Erkältung zu kämpfen, hoffe aber, dass ich trotzdem verständlich bin. 😉

by Florian Effenberger at May 23, 2017 10:22 AM

May 22, 2017

TDF Infrastructure Status

pootle maintenance on Wednesday (2017-05-24)

(17-05-22) Pootle will undergo maintenance on Wednesday and thus will not be available for translators for most of the day.

by The Document Foundation at May 22, 2017 10:00 PM

May 21, 2017

LibreOffice Design Blog

Please participate in a survey about page margins

Margins specify the amount of space to leave between the edges of the page and the document text. You can define it for the left/inner, right/outer, top and bottom side individually. Page margins are defined by default at 0.79″ respectively 2cm on each side in LibreOffice Writer (located under Format > Page).…

The post Please participate in a survey about page margins appeared first on LibreOffice Design Team.

by The LibreOffice Design Team at May 21, 2017 09:37 PM

May 18, 2017

Florian Reisinger

LibreOffice can open XLSX files Excel cannot

Just a quick heads up. I just created and saved an Excel file using Excel 2016, which cannot be opened again with it. Glad our swiss army knife LibreOffice can 😉

It’s funny to see Excel can open the ODS I created using LibreOffice (as source I used the XLSX file) better than it’s “native” format….

Here is a short “proof” video:

Tagged: Excel 2016, file open, fileopen, LibreOffice, problems

by Florian Reisinger at May 18, 2017 07:54 AM

May 17, 2017

Miklos Vajna

xmlsec improvements in LibreOffice 5.4

This post summarizes the plumbing work around ODF/OOXML digital signatures that I did on LibreOffice master after the 5.3 branch-off up to now. The big thing is the integration of the libxmlsec 1.2.24 release. Among other things, this contains 2 larger changes that I contributed upstream triggered by the needs of LibreOffice:

  • The ECDSA-SHA256 feature is something I already mentioned, but I did not bother to backport the SHA1 and the SHA256 part, so those now arrived to LibreOffice as well.

  • xmlsec’s XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS flag (while verifying signatures) was there, but its behavior was not clear (neither for nss nor for mscrypto). I’ve changed it to be in sync what you have in other commands to avoid certificate validation (like wget -k or curl -k), which means as a next step there will be one less xmlsec patch in LibreOffice that prevents us from using xmlsec from the system on Linux. (Adding tests also detected that in the nss case not using that flag also didn’t do verification by accident, this is now fixed as well.)

After the release I also noticed that creating signatures on Windows was broken, this is now fixed on xmlsec master and also backported to LibreOffice.

All this is available in LibreOffice master, towards 5.4.

May 17, 2017 07:09 AM

May 15, 2017

Florian Effenberger

Interview on my role at The Document Foundation

During this year’s FOSDEM, my colleague Mike Saunders has interviewed many LibreOffice contributors on their work and activities inside the project.

I’m proud of having been interviewed as well and I try to give some insight into my work as Executive Director of The Document Foundation.

Find the full video here.

I was heavily fighting with a flu during recording, but I hope I’m still understandable. 😉

by Florian Effenberger at May 15, 2017 11:38 AM

May 13, 2017

Andreas Mantke

Working With WordPress Theming

I currently looking into the theme development of WordPress. I already started with the work on a first version of a theme proposal for a local organisation in Duisburg. I’ll continue this work for the next weeks and it will consume a lot of my spare time.

by Andreas Mantke at May 13, 2017 06:46 PM

Further Work With Theming

I worked a bit further on the WordPress theme for a local organisation and got some nice pictures for the header of the site. I cropped them a bit with Gimp and combined them together with the logo in a new banner. We have some great places in Duisburg, like the ‚Landschaftspark Duisburg-Nord‘ (an former ironwork with a great light show) (, Tiger and Turtle (a Magic Moutan / a walkable sculpture on top of a hill) ( and the ‚Innenhafen‘ (a former part of the inner harbor) (

It’s always easy and fun to work with free software tools on nice pictures 😉

by Andreas Mantke at May 13, 2017 06:39 PM

May 11, 2017

Tor Lillqvist

Tracing IDispatch::Invoke calls in COM applications

At Collabora Productivity we recently encountered the need to investigate calls in a third-party application to COM services offered by one or more other applications. In particular, calls through the IDispatch mechanism.

In practice, it is use of the services that Microsoft Office offers to third-party applications that we want to trace and dump symbolically.

We looked around for existing tools but did not find anything immediately suitable, especially not anything available under an Open Source license. So we decided to hack a bit on one of the closest matches we found, which is Deviare-InProc. It is on GitHub,

Deviare-InProc already includes code for much of the hardest things needed, like injecting a DLL into a target process, and hooking function calls. What we needed to do was to hook COM object creation calls and have the hook functions notice when objects that implement IDispatch are created, and then hook their Invoke implementations.

The DLL injection functionality is actually "just" part of the sample code included with Deviare-InProc. The COM tracing functionality that we wrote is based on the sample DLL to be injected.

One problem we encountered was that in some cases, we would need to trace IDispatch::Invoke calls that are made in a process that has already been started (through some unclear mechanism out of our control). The InjectDLL functionality in Deviare-InProc does have the functionality to inject the DLL into an existing process. But in that case, the process might already have performed its creation of IDispatch implementing COM objects, so it is too late to get anything useful from hooking CoGetClassObject().

We solved that with a hack that works nicely in many cases, by having the injected DLL itself create an object known to implement IDispatch, and hoping its Invoke implementation is the same as that used by the interesting things we want to trace.

Here is a snippet of a sample VBScript file:

     Set objExcel = CreateObject("Excel.application")
     set objExcelBook = objExcel.Workbooks.Open(FullName)

     objExcelBook.SaveAs replace(FileName, actualFileName, prefix & actualFileName) & "csv", 23


And here is the corresponding output from tracing cscript executing that file. (In an actual use case, no VBScript source would obviously be available to inspect directly.)

Process #10104 successfully launched with dll injected!
Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. All rights reserved.

# CoGetClassObject({00024500-0000-0000-C000-000000000046}) (Excel.Application.15)
#   riid={00000001-0000-0000-C000-000000000046}
#   CoCreateInstance({0000032A-0000-0000-C000-000000000046}) (unknown)
#     riid={00000149-0000-0000-C000-000000000046}
#     result:95c668
#   CoCreateInstance({00000339-0000-0000-C000-000000000046}) (unknown)
#     riid={00000003-0000-0000-C000-000000000046}
#     result:98aad8
#   result:95dd8c
# Hooked Invoke 0 of 95de1c (old: 487001d) (orig: 76bafec0)
95de1c:Workbooks() -> IDispatch:98ed74
98ed74:Open({"c:\temp\b1.xls"}) : ({"c:\temp\b1.xls"}) -> IDispatch:98ea14
95de1c:Application() -> IDispatch:95de1c
95de1c:Application() -> IDispatch:95de1c
95de1c:Application() -> IDispatch:95de1c

Our work on top of Deviare-InProc is available at

Binaries are available at (for 32-bit applications) and (64-bit). The zip archive contains an executable, injectdll.exe (injectdll64.exe in the 64-bit case) and a DLL.

Unpack the zip archive somewhere. Then go there in Command Prompt, and in case the program you want to trace the IDispatch::Invoke use of is something you know how to start from the command line, you can enter this command:

injectdll.exe x:\path\to\program.exe “program arg1 arg2 …”

where program.exe is the executable you want to run, and arg1 arg2 … are command-line parameters it takes, if any.

If program.exe is a 64-bit program, instead download, and run injectdll64.exe, otherwise similar.

if you can’t start the program you want to investigate from the command line, but you need to inspect it after it has already started, just pass only the process id of the program to injectdll.exe instead. (Or injectdll64.exe) This is somewhat less likely to succeed, depending on how the program uses IDispatch.

In any case, the output (symbolic trace) will go to the standard output of the program being traced, which typically is nowhere at all, and not useful. It will not go to the standard output of the injectdll.exe program.

In order to redirect the output to a file, set an environment variable DEVIARE_LOGFILE that contains the full pathname to the log file to produce. This environment variable must be visible in the program that is being traced; it is not enough to set it in the Command Prompt window where you run injectdll.exe.

Obviously all this is a work in progress, and as needed will be hacked on further. For instance, the name "injectdll" is just the name of the original sample program in upstream Deviare-InProc; we should really rename it to something specific for this use case.

by Tor Lillqvist ( at May 11, 2017 10:10 AM

May 08, 2017

LibreOffice Design Blog

Results from table styles survey

Table styles have been introduced in LibreOffice Writer 5.3 as the successor to the AutoFormat feature. The table designs from this old feature were used as the initial set of table styles, so we asked on the design mailing list to submit proposals for new table designs and finally ran a survey to include the entire community in the process.…

The post Results from table styles survey appeared first on LibreOffice Design Team.

by The LibreOffice Design Team at May 08, 2017 09:26 PM

May 06, 2017

LibreOffice Design Blog

Welcome, GSoC’17 students!

Google Summer of Code (GSoC) is a global program focused on bringing more student developers into open source software development during their holiday break. The Document Foundation and LibreOffice participate every year, and we are happy to announce three accepted projects aimed to improve usability.…

The post Welcome, GSoC’17 students! appeared first on LibreOffice Design Team.

by The LibreOffice Design Team at May 06, 2017 01:32 PM

May 05, 2017

Gülşah Köse

Code Reviewers

In my opinion code reviewing has lower motivation than writing code but important necessary for good/correct upsteram. At this stage, person who write the code, can learn new things and see different perspectives but we can not talk about such a situation for the code reviewer. She/He has to understand what you are trying to do from the very beginning. And most probably code reviewer will not learn a new thing from that.

Gerrit is perfect code reviewing tool used by LibreOffice. But more perfect thing are code reviewers who spare their time for code reviewing and write your mistake. Every effort is valuable for keeping alive a free software but I also want to thank to code reviewers.

by Gülşah Köse ( at May 05, 2017 09:03 AM

May 04, 2017

>Szymon Kłos

AutoText import from .dotx and .dotm files

In the LibreOffice Writer user can prepare some pieces of documents which can be reused later. That feature is called AutoText and is accessible using menubar (Tools - AutoText). In the AutoText dialog it is possible to manage existing entries and also import new ones from files.
So far only *.dot and *.doc file formats were supported for importing AutoText. Here was my first task at Collabora: to add .dotx and .dotm format support.

One template document can contain multiple AutoText entires. Each entry has own name and can consist of formatted text, text with graphics, tables or fields. To import new templates user need to open AutoText dialog (Tools - AutoText), select according category and from the "AutoText" menubutton choose "Import". File explorer will appear. In the file format listbox new entries were introduced: "Microsoft Word 2007-2013 XML" and "Microsoft Word 2007-2013 XML Template" for *.docx and *.dotx or *.dotm.

AutoText has own long name and shortcut. It is possible to insert AutoText after typing shortcut name into document and pressing F3.

Following GIF shows *.dotx import with complex content (table, shape, formatted text and fields):

by Szymon Kłos ( at May 04, 2017 04:29 PM

May 02, 2017

TDF Infrastructure Status

Disruption in CI and related services (internal router not reachable)

(17-05-03) Right now one of our internal routers has connectivity/routing issues. This causes problems with non-public-facing services not being reachable, and this includes various tinderboxes for CI use and intranet traffic used by jenkins. (So bottom line is that right now now gerrit builds are processed) We try to solve this issue with our hosting provider.

by The Document Foundation at May 02, 2017 10:00 PM

Markus Mohrhard

LibreOffice crash reporting – An update

Nearly a year ago I wrote a blog post describing the LibreOffice crash reporting setup and how the crash reporting code works. Since then we have released two minor versions with the crash reporter enabled (5.2 and 5.3) including many bug fix releases and release candidates. According to the crash reporting server a total of 27 versions are recognized and it is time to list some of the statistics surrounding the crash reporter.

During the one year of operation we had about 900,000 uploaded crash reports with around 152,000 of them reported in the last 30 days. The number of crash reports might sound like a lot, but a huge amount (around 430,000) have been reported for the release. We introduced a regression in the shutdown code during the development window which resulted in a crash if the clipboard was not empty during shutdown. Due to the crash reporter we were able to fix the crash quickly and release a fixed 5.2.5 version ahead of schedule. Without the crash reporter we would not have noticed the problem that quickly.

During the early 5.3 releases we saw a spike of random crashes in the window generation code that we could not really explain. After some careful analysis, it was concluded that these crashes happen as a result of GDI resource leaks. Amazingly, on windows you are only able to hold references to 10,000 GDI handles (fonts, bitmaps, …). Some of the GDI leaks have been fixed ([1][2]) already but we are still chasing some more. At the time of writing, running out of GDI handles is still the number one source of crashes in the 5.3 releases. In an attempt to make it easier to spot these crashes the number of open GDI handles are now reported as part of the metadata by the crash reporter (example in a recent crash). Starting with the 5.3 release the metadata also contains the localization of the installation as we found a few crashes that appear to be locale dependent.

As the transformation from a stack and memory dump to a human readable stacktrace happens on the server we need symbol information to map stack information to source code files, method names and line numbers. These symbol information currently occupy 97GB of data on the server with many of the symbol information being for system libraries. Despite this large amount of symbol information we have still recorded around 100,000 libraries without associated symbol information. These range from system libraries without corresponding debug information, libraries for multimedia codecs, OpenGL and OpenCL drivers to antivirus solutions that inject code into LibreOffice. As part of the symbolization we received around 11,000 different signatures for crash reports. However many of them are actually crashes caused by the same problem and just crash in different places. As an example the crash during shutdown is known with many dozens if not even hundreds of different crash signatures.

Additionally, 179 bug reports have been connected to the crash reporter and 42 commits to the LibreOffice master branch reference the crash reporter. Most of these are attempts to fix reported crashes. Sadly we don’t have a common way to reference the crash reporter yet so there are surely more commits that I could not find with a quick search.

With the next minor release (5.4), it is expected that the Linux version of our signal handler allows crash report generation even when the LibreOffice signal handler overwrites our crash reporting signal handler. All in all the crash reporter works amazingly well and we have been able to fix a number of of serious crashes already. With more time we hope to be able to fix more of the reported crashes and therefore improve the quality of LibreOffice even more.


As always, help in fixing and researching some of the reported crashes is highly appreciated. Especially the more obscure crash reports require detective work to trace them back to their cause.

Additionally help with the crash reporting server is always welcome. The server is written in python with django and some javascript. No C++ or LibreOffice code knowledge required 😉

by Markus Mohrhard at May 02, 2017 06:23 PM

May 01, 2017

Andreas Mantke

Anleitung zum Erstellen von LibreOffice Extensions

Meine Freizeit in den letzten Wochen habe ich häufig dazu genutzt, eine Anleitung für das Erstellen von LibreOffice Extensions (Erweiterungen) zu schreiben. Eine erste Version dieser Anleitung, die zunächst die grundsätzliche Struktur und den Bau von Extensions behandelt, die weitere Inhalte LibreOffice hinzufügen, beispielsweise weitere Vorlagen oder AutoTexte (Textbausteine). Die Anleitung wird in den nächsten Wochen um weitere Abschnitte ergänzt werden. Sie können die erste Version von meiner Homepage hier  herunterladen. Die Anleitung steht unter der Creative Commons Lizenz 4.0 ohne kommerzielle Nutzung.

by Andreas Mantke at May 01, 2017 06:48 PM

Markus Mohrhard

cppunit 1.14 released

It has been quite some time since the last cppunit release – about 3.5 years according to wikipedia – despite having enough changes for quite some time. After seeing some recent LibreOffice commits that would have benefited from the existing unreleased commits I finished the work. Here is a short summary of the changes to cppunit 1.14:

Removed features and platform support

  • Removed special support for BeOS
  • Removed QT test runner
  • Removed MSVC6 test runner
  • Removed MSVC6 plugin
  • Removed support for pre-C++11 compilers
  • Removed support for compilers that don’t support RTTI and default template arguments in standard containers


New features

  • Support for enum class in template<typename T> CppUnit::assertEquals, and therefore in CPPUNIT_ASSERT_EQUAL
    • An example can be found in the internal examples directory
    • Examples for the new assertion macros can be found in the internal examples directory
    • Note that the first argument is always the reference value, so CPPUNIT_ASSERT_LESS(x, y) will check that y is less than x. Sadly this confusing behavior is required to keep compatibility with CPPUNIT_ASSERT_EQUAL.
  • TestCaller now takes as a constructor argument any callable that can be put into std::function<void()>
  • Based on the TestCaller change, CPPUNIT_TEST_PARAMETERIZED has been added that works similar to CPPUNIT_TEST but takes as a second argument an iteratable whose items can be passed to the test function. std::bind of the test method with each element of the iteratable needs to result in an object that can be stored in std::function<void()>.
    • An example can be seen in the examples directory.
  • Various warning and bug fixes
  • New and improved build system (thanks to Tomas Chvatal and David Tardon)


With the removal of the old features the code now much smaller and the next release will most likely move into the directory of modernizing the code base. Thanks to all contributors who provided patches for this release.

As always bug reports are welcome at the LibreOffice bug tracker.


by Markus Mohrhard at May 01, 2017 06:46 PM

April 26, 2017

>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

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