The Document Foundation Planet


August 27, 2015

Official TDF Blog

LibreOffice 5.0.1 released, to keep the momentum going

libreofficsplashBerlin, August 27, 2015 – The Document Foundation (TDF) releases LibreOffice 5.0.1, the first minor release of the LibreOffice 5.0 family, with a number of fixes over the major release announced on August 5. So far, LibreOffice 5.0 is the most popular LibreOffice ever, based on the feedback from the marketplace.

LibreOffice 5.0.1 is targeted to technology enthusiasts, early adopters and power users. For more conservative users, and for enterprise deployments, TDF suggests the “still” version: LibreOffice 4.4.5. For enterprise deployments, The Document Foundation suggests the backing of professional support by certified people (a list is available at:

People interested in technical details about the release can access the change log here: (fixed in RC1) and (fixed in RC2).

Register for the LibreOffice Conference

Registration for LibreOffice Conference 2015, which will be hosted by the Danish city of Aarhus from September 23 to September 25, is open at the following page:

The LibreOffice community is growing, and the conference is the best opportunity to join the fun by meeting a large group of the people that have contributed to the project: developers, and volunteers who have localized the suite, chased the bugs, written the manuals, spoken at conferences, and advocated LibreOffice at global and local levels.

Download LibreOffice

LibreOffice 5.0.1 is immediately available for download from the following link: LibreOffice users, free software advocates and community members can support The Document Foundation with a donation at

by Italo Vignoli at August 27, 2015 01:49 PM

August 26, 2015

Michael Meeks

2015-08-26 Wednesday.

  • Early up, team meeting, interview , mail; hacking; wrote up a spec. Sync'd with Niall before his holiday. Plugged away at vile non-rendering menu problem; turns out it is rendered, but we're missing a glFlush - fun, it seems GDI has a similar issue with a GdiFlush() call for similar purposes.

August 26, 2015 09:00 PM

August 25, 2015

Michael Meeks

2015-08-25 Tuesday.

  • Early up, mail chew; hackery. Early meeting. Hacking. Lunch. E. frenetic cycling, fell off her bike but ok. Plugged away at bits of hackery and admin.

August 25, 2015 09:00 PM

Official TDF Blog

Behind the scenes at TDF: Marketing and Communications

Italo VignoliThe months between April and the first half of August have been rather busy, as I have been working – together with the other members of TDF staff and several volunteers – at different projects: the first TDF Annual Report, the final development stage of LibreOffice 5.0, including two bug hunting sessions, the announcement of the publication of ODF 1.2 by ISO, and the launch of LibreOffice 5.0. In addition, I have worked at smaller tasks such a announcements of minor releases.

The bigger task, as everyone can imagine, has been the launch of LibreOffice 5.0, as we wanted to make a real impact with this new major release.

First of all, I started to update the mailing lists for the distribution of press releases, which are a fundamental tool for the success of the launch. Since January, TDF is using a dedicated open source tool – phpList – which is saving a lot of work, especially when keeping mailing lists updated. In fact, phpList keeps track of all bounces, which are stored in each record, making it easier to spot old or wrong email addresses.

Journalists move around quite frequently, and only a small percentage remembers to update their record. For all the others, you have to chase them using a combination of search engines and other tools such as LinkedIn and About.Me. It is a rather tedious activity, but is key to ensure the success of each press release.

Since TDF has a combined mailing list of over 13,000 journalists worldwide, I have had to review and update around 10% – or over 1,000 email addresses – between May and July. To avoid being burned by this task, I have done a few each evening, while watching TV.

In early July, I have started to work at the launch documents, by looking at new features and trying to identify those which were more important. I have also set the announcement date at August 5. In addition, together with Jan Holesovsky and Charles Schulz, and the graphic designer Barak Paz, we have worked at a new identity for LibreOffice 5.0, with a new splash screen and a new start center.

In mid July, I have started to “leak” some news to a selected number of journalists, to start getting coverage on the upcoming major release. I have sent short messages to all the editors who clicked on our previous announcements, showing some interest on our press releases. I have also invited these editors to pre-release conference calls on August 3, or to 1to1 interviews on August 3 or August 4.

In late July, I distributed the final draft of the press pack, which was based on a press release, a feature backgrounder, and a “road to LibreOffice 5.0” document highlighting the major features of all the previous LibreOffice releases since January 2011. I also developed a timeline infographics, to explain the three stages of LibreOffice development: 3.x for code cleaning, 4.x for code refactoring, and 5.x for UI and feature innovations. This document was published on TDF blog as a teaser release on July 29.

I also prepared a short slide show to introduce LibreOffice 5.0 to journalists, with some visuals which were supposed to be used also to embellish the articles.

On August 3, I hosted pre-announcement conference calls for journalists based in Europe and in the US, for a total of 8 journalists (Extension Media, Genbeta, Golem, IDG News, ITWeb, PC World, The Inquirer and V3). I also sent the Press Kit under embargo to Betanews, ECT News, Liliputing, IT World and Network World.

On August 4, together with Michael Meeks, I hosted the pre-announcement 1to1 interview with InfoWorld. In addition, I have provided some quick answers to questions raised by journalists who received the press kit.

On August 5, I published the announcement message and the blog post, and distributed the press release to over 4,000 journalists worldwide. Over 30% viewed the announcement and clicked on the link, and half of them – around 600 journalists – published an article. As a consequence, we had a spike of visits to the blog and a spike of donations (which are proportional to downloads). All in all, a very successful announcement, thanks to the work of our developer community who has been able to put together a fantastic product, and of the other volunteers who have contributed with ideas and comments to make LibreOffice 5.0 stand out from the office suite crowd.

by Italo Vignoli at August 25, 2015 10:00 AM

August 24, 2015

Michael Meeks

2015-08-24 Monday.

  • Up early, team meetings & 1:1's much of the day; mail chew, hacked on polishing up the software watchdog thread for busted OpenGL drivers that hang. Lunch. Really enjoying the CI infra. and it's ability to catch my stupid mistakes.
  • Chat with Philippe, more fixing, built ESC bug stats.

August 24, 2015 09:00 PM

Official TDF Blog

LibreOffice Conference 2015 will open in a month

03b_schmidt hammer lassen architects_small 03c_schmidt hammer lassen architects-smallBerlin, August 24, 2015 – LibreOffice Conference 2015 will open in a month from now, on September 23, at the Dokk1 in Aarhus, Denmark. The Dokk1 is the brand new Mediaspace of the city, featuring the Main Library and Citizens’ Services

LibreOffice Conference 2015 will be hosted in the Auditorium and in the Meeting Area of the beautiful building, designed by Schmidt Hammer Lassen Architects and part of the conversion of Aarhus inner harbour to city space.

Pictures by Adam Mørk, courtesy of the City of Aarhus.

Registration is open at, while the program will be announced in late August.

The conference will be hosted by the City of Aarhus, and will be jointly organized by the Danish LibreOffice community together with local F/OSS groups and the Aarhus municipality. Logistics are managed by the not-for-profit organisation “Foreningen Dansk LibreOffice Konference 2015”.

LibreOffice Conference 2015 will be sponsored by:

Main: Canonical, CIB, Collabora.
Large: Google, Magenta, Prosa.
Medium: RedHat.

Local Contacts:
Carsten Agger (Open Space Aarhus)
Line Dybdahl (Aarhus Municipality)
Leif Lodahl (LibreOffice Denmark)
René Lagoni Neukirch (LibreOffice Denmark)

IRC: @libocon on FreeNode
hashtag: #libocon

by Italo Vignoli at August 24, 2015 02:03 PM

August 23, 2015

Michael Meeks

2015-08-23 Sunday.

  • NCC, family church, Tony spoke; caught up with the other Tony & Anne. Back for lunch, quartet practice in the garden - suprisingly good after a big gap. David & Allison over for the afternoon - good to see them. Bed earlyish.

August 23, 2015 09:00 PM

Markus Mohrhard

Help for the VBA export work

So Rosemary has been working on one of my core hacks (actually she is the first to work on any of our core hacks, so congratulations for that), namely the VBA export to OOXML.

The missing VBA export is one of the old limitations of our OOXML filter. While we are able to save the unchanged stream back to an OOXML file we can’t save any modifications at the moment. With Rosemary’s work this will hopefully change in 5.1 and we will no longer loose macro changes when saving to OOXML.

To make sure that we deliver a good new feature it would be awesome if some of you who have real VBA documents can send a few to libreoffice.vba.export !at! gmail dot com. Currently we are using a few simple self generated documents but they surely miss a lot of the real world corner cases. This includes especially Excel functions defined in VBA and their use case. While I’m reading the VBA and the OOXML spec I ha to discover that MSO documents don’t completely follow the spec.

I’ll write a more detailed blog post once this feature hits master and I have an idea which features we can preserve during our export.

by Markus Mohrhard at August 23, 2015 06:38 PM

Charles Schulz

A word to the Wise…

I have been recently reminded that while it may be hard enough to discuss the role and importance of communities for Free and Open Source Software, it is equally important to understand the complexities and the challenges that a Free and Open Source Software foundation has to meet.
It may come as a surprise that the objectives and the issues faced by a FOSS foundation sometimes takes its members (its directors, board members or employees) to places and into discussions that they never would have imagined. It shouldn’t. A foundation may have its own set of challenges and issues that are distinct from the very members whose interests it is supposed to protect; and perhaps it is for the best.

A foundation cannot be a subsitute or an ersatz of a community. The community itself is the very thing without which the foundation has no purpose. However, the foundation exists both to protect assets (tangible or intangible) and to plan ahead into the future. The foundation therefore tries to have an insight into what lies ahead for its community. It “thinks” in strategic terms, which is precisely what a community cannot do under its usual form and because many in that community are simply not interested about these matters. Yet these matters must be addressed.

I realize that this could be seen as a slippery slope towards a situation where a foundation would be cut off from its community, from its project(s), and ultimately from its very roots. It is not. It is much easier -despite the amount of work the daily tasks represent- to get dragged down into the minutiae and the busy humdrum of everyday. One week is a release, the other day there’s some quarterly meeting; yet another day and the infrastructure has some hardware problems that must be dealt with immediately. Since days only last 24 hours, the day is quickly over, regardless of one’s talent. But when a foundation is only doing this, it is also not reaching outside its own boundaries, its own comfort zone. It refuses to acknowledge that while its role is to protect the community and enforce healthy principles across its projects and teams, it blinds itself from its very role in the broader industry. It does not look at the public policy landscape, even though digital policies directly impact the adoption of Free Software. It sees anything coming its way as yet another problem, and never as an opportunity. Anything that may threaten the status quo of the daily routine quickly becomes a problem that has to be shot down before it becomes even real.

All this is done in the name of the community. But the community, to paraphrase the famous movie, the community will be just fine. FOSS communities rely on foundations to fulfill a broad range of needs. But a community can very well work without a foundation. At least for 5 days; for the time required to do something that matter to the foundation as a foundation.

I know of no Free and Open Source Software foundation that has not been founded by thinking out of the box. Mozilla, Apache, the Document Foundation, etc. are no exception. A foundation that invokes its own principles to justify its lack of vision and its lack of prospective will ultimately turn the very community it was supposed to protect in the first place into something it has not wished, something that could be very much the opposite it was founded for. Ultimately people move on, things change and nothing ever stays the same; to think things can remain the way they are is foolish; they never will.

Serious literature about FOSS foundations may be found in a few places around the Net; these are three selected locations interested readers may wish to visit :

by Charles at August 23, 2015 02:56 PM


LibreOffice 5.0

The Document Foundation has announced LibreOffice 5.0, bringing new features including the following useful LibreLogo extension: now it’s possible to join arbitrary number of points using the command POINT with CLOSE and FILL in PENUP mode. For example, drawing a chord is quite easy:


or drawing a “flat” star:


    FORWARD 100
    BACK 100
    RIGHT 360/10
    FORWARD 70
    BACK 70
    RIGHT 360/10

and drawing nice sheriff badges:

TO star n m
    BACK n
    RIGHT 360/m/2
    FORWARD n*0.6
    BACK n*0.6
    RIGHT 360/m/2
CIRCLE 2*n*0.6-n/m/3

POSITION [130, 200]
    star 70 2+REPCOUNT
  RIGHT 90
  LEFT 90
  IF REPCOUNT % 3 = 0 [
    BACK 160
    RIGHT 90
    BACK 160*3
    LEFT 90

by Németh László at August 23, 2015 01:25 PM

August 22, 2015

Michael Meeks

2015-08-22 Saturday.

  • Up earlyish; bid 'bye to Leanne, and off to Bruce & Annes. Tackled a bug in the car while J. drove - a 'VclPtr' bug turned out to pre-date LibreOffice 4.2 - good to stimulate more bug-hunting in lots of areas.
  • Tried to hunt down how to return a phone found on the beach to it's owner; called EE. to help out: "take it to a shop". Lunch. Out to the beach ourselves near the Aldeburgh shell. Lots of lying on the beach with Sue, Clive, B & A.
  • Back for some tea; hacked on another couple of issues on the way home, one real, one non-reproducible. Mail chew.

August 22, 2015 09:00 PM

August 21, 2015

Cor Nouws

Microsoft uses controversial publication to promote Office 365

The giant from Redmond must be desperate since it has to use a controversial story from a relatively small Italian city to combat open source software, as in the mean time many larger deployments also in Italy are happy with LibreOffice and the numbers produced by Provincia di Perugia prove the opposite of the Microsoft-publication.

Microsoft writes about the switch of the city of Pesaro from OpenOffice to Office 365. There are however many questions around the publication that should provide backing for the switch. Yet Microsoft uses that publication on it's website for promotion goals.
There are several facts that make the publication controversial. It mentions, for example, the sum of € 300.000 for migration and training costs and extra phone costs of € 85 a year without any data to back that. Sonia Motegiove, an Italian IT consultant, comments that an extensive training for 600 people would cost € 25.000 maximum.
The publication also claims that the interface would cause problems, but apparently the new 365 environment is not considered to cause users any problems.. When a lack of compatibility of OpenOffice is mentioned, Motegiove asks why Pesaro didn't choose for LibreOffice, with a much improved exchange of documents.
In another publication Italo Vignoli from LibreOffice-Italy points to the fact that Pesaro ignores facts such as the security issues that come with the use of Microsoft Office but in stead chooses wording to explain the migration that read as Microsoft propaganda.
All questions to the city of Pesaro or the project manager however, have remained unanswered.
Sources around Pesaro tell that the whole migration project was broken. First the involved IT company could not finish the project, and also half way there was a new IT-director with less focus on the project.

All this does not prevent Microsoft from using a 'study' to make false claims.
This situation looks similar to what happened with a Microsoft sponsored HP publication regarding the city of Munich, that works with Linux and LibreOffice. The HP publication 'proved' high costs in Munich coming with the open source solution. Yet the reality is that during the migration alone, 13 million was saved. That apart from the million or more license fees that ware saved every year since 2013. Savings that are partly spend to support the development of the open source software that Munich uses, and that also stimulate local/regional IT-firms.
Does these actions from Microsoft look so desperate because now also it's office-business faces serious competition?

by Cor & OfficeBuzz ( at August 21, 2015 12:12 PM

>Pranav Kant

GSoC Wrapup Report

This is a GSoC wrap up report of everything I did this summer. Though, my official GSoC organization was LibreOffice, the work also involved GNOME directly, and Mozilla indirectly. Some of you, who are already familiar with my work might find this post repetitive since I would be repeating many of the things here that I have already talked about in my earlier posts.

Initial state of the widget

Before I started working on it as a summer of code project, the widget:

  • used to render all tiles in the loaded document
  • used to make calls to the LibreOffice core in the same UI thread
  • was not introspectable
  • was gtk2
  • and needed such minor fixes here and there

Tiled Rendering

I started with implementing tiled rendering in the widget. First plan was to reuse the Mozilla tiled rendering code. After analyzing this and discussing it, we scraped that plan as it was quite infeasible. Better approach was to understand how tiled rendering is implemented and write our own class that handles the tiles for you. We took ideas from Mozilla tiled rendering code, and GeglBuffer.

We started with a small TileBuffer class, and it gradually improved as widget started to demand more from it. There is still some scope of improvement in TileBuffer class which is already on my radar. At the moment it exposes enough API for the widget to work smoothly.

Only render visible tiles

Aforementioned, the widget used to render all of the tiles even if they are not visible on the screen. This was a huge bottleneck to the widget performance. Why render millions of tiles in a large document if most of them are not even visible to the user?

We changed this to demand-based model. Only render tiles when there is a demand for them, that is, when the user wants to see them. Also keep caching these tiles with the help of TileBuffer so that next time user asks for these tiles, it doesn’t have to render the tile again.

Free the main thread

All the LibreOffice operations, like, rendering new tiles, selecting a paragraph, bold the selected text etc. is a lot of work and if done in the main thread would not give a very smooth user experience. So, we decided to move all such heavy operations (all libreoffice calls) to a new dedicated worker thread whose job is to perform the libreoffice calls and return the result to the main thread. As a further optimization, we used a thread pool with a single thread so that we don’t have to create a new thread everytime. It is to be noted here that we used a thread pool of single thread because libreoffice is almost single-threaded, and it would be useless to create multiple worker threads calling to the same libreoffice core instance. Further, thread pool with a single thread would automatically queue the LibreOffice operations for us, and execute them when thread becomes free.

As of this writing, we have moved all LibreOffice calls but one to the worker thread. This has signficantly improved the widget performance.

GObject friendly/introspectable widget

One of the aim of this project was to integrate it with gnome-documents. GNOME Document is written in javascript, and the widget is in C++. GObject Introspection came to our rescue here. We started making this widget more GObject friendly, added necessary comments/annotations, and finally we were able to use this widget from any of the language bindings including javascript.

Gtk3 port

Since we wanted to integrate the widget with gnome-documents (gtk3), we modified the widget to use gtk3. This also gave a new look and feel to the widget.

Ship introspection files with LibreOffice

Installing the introspection files (.gir/.typelib) into their standard location on user’s computer is something that doesn’t fit well into the LibreOffice installation model. The current plan is to let the distributions execute a script ( provided by LibreOffice that would generate and install the introspection files (.gir/.typelib) into their standard location. You would most likely see this script being used by distributions with LO 5.1

Integrating it with GNOME Documents

For few days, I used a sample javascript application that uses this widget to show and edit documents. This was useful for debugging. Gradually, I started to write code for gnome-documents to use this widget. I had to change the integration model a few times. Finally, I ended up writing a new class to handle the libreoffice widget, and the integration works quite well now.

If you are interested in trying this widget out, you can checkout my gnome-documents feature branch here. However to make this work, you have to generate the introspection files manually. I have created a (wiki page)[] that should help you in this regard.

ETA in GNOME Documents

All the work on the widget is already in LO master which will become LibreOffice 5.1 to be released around January 2016. This means we still got some time to make improvements in widget, if any, till LO 5.1 freeze in November 2015. My hope is that we should be able to see the widget integrated in gnome-documents in 3.20, if everything goes well.

Here is the screencast I made where gnome-documents is using the libreoffice widget to show open documents, while still using evince view to show the pdf documents.

<iframe allowfullscreen="" frameborder="0" height="315" src="" width="560"></iframe>

Overall, this was the best project that I ever worked on till now. I learnt a lot this summer. I would like to thank my GSoC mentors - Michael Meeks, Miklos Vajna for their continous support and ideas throughout the summer. I would also like to thank Debarshi Ray and Cosimo Cecchi for their invaluable suggestions that helped me finally integrate the widget with GNOME Documents. Its still not in master, but it works well, and I hope to see it soon in master. Also thanks to Mozilla community for helping me with tiled rendering concepts.

August 21, 2015 12:00 AM

August 19, 2015

Official TDF Blog

The Document Foundation announces LibreOffice in Guarani, to offer the free office suite in yet another native language

Berlin, August 19, 2015 – Following the announcement of LibreOffice 5.0, The Document Foundation (TDF) announces the availability of LibreOffice in Guarani, the language spoken by 80% of the population in Paraguay, and the official second language of the country.


Guarani is spoken in the area in yellow

Guarani is spoken in parts of northeastern Argentina (Corrientes, Formosa,Misiones, eastern parts of the Province of Chaco, and at isolated points of Entre Rios), is the second official language of the Argentine province of Corrientes since 2004, is the co-official language of Bolivia, and is spoken in several cities of the eastern state of Mato Grosso do Sul in Brazil. Guarani is also one of the official languages of Mercosur (source: Wikipedia).

LibreOffice in Guarani has been be presented on August 13 at OEI (Organización de Estados Iberoamericanos) facilities in Asunción, Paraguay, to a selected audience. TDF and LibreOffice have also been presented in the Centro Nacional de Computación of UNA (Universidad Nacional de Asunción) in San Lorenzo Campus.

The localization to Guarani was carried by a single volunteer: Giovanni Caligaris. LibreOffice in Guarani is immediately available for download from

“Back in 2011, I started discussing with the CIO of a Paraguayan corporation at the LibreOffice Conference in Paris, and we envisioned how to get the office suite in Guarani”, said Olivier Hallot, a founding member of TDF, and a LibreOffice advocate. “Unfortunately, the project stalled, until Giovanni Caligaris picked up the task, and managed to localize LibreOffice in Guarani in a rather short timeframe”.

“With the availability of LibreOffice in Guarani, Paraguay positions itself at the same level of more developed countries, and represents an incentive for countries in Latin America, Africa and Asia to conduct a localization project for their native languages”, said Giovanni Caligaris. “The next task is to increase the LibreOffice awareness in Paraguay, with the help of the LibreOffice community”.

With the addition of Guarani, LibreOffice gets closer to the vision of the founding members of the project, to bring the free office suite in their native language to 100% of the world population, to reduce the digital divide based on the familiarity with one of the languages spoken in the richest countries. Today, close to 90% of the world population can use LibreOffice in their native language.

by Italo Vignoli at August 19, 2015 08:30 AM

August 18, 2015

Miklos Vajna

8884 VirtualDevices

(via teq)

If you are into C++ programming, you probably know that smart pointers are not just literally strange things like the above ones. ;-) LibreOffice 5.0 got VclPtr, which is smart pointer specialized to VCL’s needs.

Such refactorings are good things, except that there is no huge rework without regressions. In this case the WMF filter had 3 places where we were leaking VirtualDevices due to a misconversion to the new VclPtr API. The problem was that the document had 135 images, WMF files to be exact. Now given that the leaks were during parsing of WMF records (a WMF file consists of multiple WMF records), at the end we leaked 8884 VirtualDevices. At first the problem was seen as Windows-specific, as at least X on Linux has no problem with creating that many VirtualDevices, but Windows' default resource limits are hit in this case.

A note about testing this bugfix effectively, so it never happens again. The problem was that I wanted to create a minimal reproducer, but I also needed a document with lots of WMF images, each complex enough to trigger the resource limit. At the end I manually created a DOCX file that had the same image copy&pasted multiple times: that way we really imported them multiple times (normally we notice that they’re the same, and only save the image to the file once, and put multiple references to it), and because DOCX is also a ZIP container, the test file can be still only 99KB instead of the original 17MB RTF.

Thanks to the 4.4 → 5.0 Windows bibisect repo, it was immediately obvious that this is a VclPtr problem, and then it was possible to identify the root cause, and finally see that the bug title mentioning RTF was just container of the WMF images in this case, the problem had nothing to with with RTF and the leak wasn’t Windows-specific, either.

August 18, 2015 07:09 AM

August 17, 2015

Eike Rathke

Open HUB is dead — or worse, it's a zombie

Some may recall it as Ohloh, then it was taken over by Black Duck Software and now runs under the name of Open HUB, the open source network to Discover, Track and Compare Open Source. What a laugh. Since Black Duck took over things continuously have gotten worse, spinning repository updates became infrequent, and now OpenHUB simply can't catch up with all projects, their engine for months was months behind with updating source code, and now completely fails on big repositories.

For example, take a look at the statistics for my commit accounts (which today, 2015-08-17, are said to be Analyzed 9 days ago).
Most recent commit 6 months ago — yeah, sure
Has made 178 commits — seriously? used to be in the thousands
and ... all commits of the entire LibreOffice project are missing.

So let's dig into the LibreOffice project statistics. In the Activity section there's a 30 Day Summary Jul 9 2015 — Aug 8 2015 which lists — tadaaa ... — 2 Commits of 2 Contributors, and for the 12 Month Summary it says 124 Commits by 12 Contributors. Of course that's nonsense. Compare with the LibreOffice repository clone pulse at GitHub, which is updated with every commit.

But, there may be people who think OpenHUB delivers accurate numbers, and for smaller projects the numbers may look "not so wrong in a non-obvious way". Or they were used to (half) accurate numbers from Ohloh, and may trust those numbers and quote them in publications or even make decisions based on those numbers. That's why I think OpenHUB is more than dead, a zombie delivering false data is worse than no data at all.

by erAck (23@ at August 17, 2015 01:32 PM

August 12, 2015

Eike Rathke


Deppenzepter - ein köstlich treffender Begriff. Nicht bekannt? Hier lesen.

by erAck (23@ at August 12, 2015 06:44 PM

Official TDF Blog

LibreOffice 5.0, one week later

LibreOffice 5.0 has been announced on August 5. So far, results have been astounding!

150,000 donations, and counting

Following the announcement, donations have doubled in comparison to the previous weeks. As a consequence, we have reached the threshold of 150,000 donations since May 2013, when we started keeping track of the numbers. A huge thanks to all donors! With their money, they make LibreOffice sustainable, supporting the costs of the entire organization.

35,000 unique IPs visited the blog

blog-fromaug4toaug11In one week, the blog has got 46,068 pageviews from 34,935 unique IPs, four times as many as the previous week (clicking on the thumbnail, you can view a higher resolution image).

Over 1,000 articles

LibreOffice 5.0 has been covered by all major IT publications worldwide (only PC Magazine has ignored the announcement so far). Over 1,000 articles have mentioned LibreOffice 5.0, with over 500 covering the subject in depth based on the press kit, a conference call or an interview. If you are interested in the list of in depth articles, you can download a PDF file with all the relevant links.

by Italo Vignoli at August 12, 2015 09:46 AM

August 11, 2015

Stephan Bergmann

LibreOffice in a Box

I had the pleasure of presenting my initial work on packaging LibreOffice as a sandboxed xdg-app bundle at GUADEC over the weekend.

Additionally, I dumped my experimental xdg-app repo for my LibreOffice build at now.  It is built off the current libreoffice-5-0-1 branch, with an autogen.input consisting of


and some local patch

diff --git a/external/redland/ b/external/redland/
index eaffcf1..dbc0649 100644
--- a/external/redland/
+++ b/external/redland/
@@ -48,7 +48,7 @@ $(call gb_ExternalProject_get_state_target,raptor,build):
 			$(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
 			$(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \
 			$(if $(filter IOS ANDROID,$(OS)),--disable-shared,--disable-static) \
-			$(if $(SYSTEM_LIBXML),,--with-xml2-config=$(call gb_UnpackedTarball_get_dir,xml2)/xml2-config) \
+			$(if $(SYSTEM_LIBXML),--without-xml2-config,--with-xml2-config=$(call gb_UnpackedTarball_get_dir,xml2)/xml2-config) \
 		&& $(MAKE) \
diff --git a/fpicker/ b/fpicker/
index c109dce..7ce952d 100644
--- a/fpicker/
+++ b/fpicker/
@@ -13,6 +13,7 @@ $(eval $(call gb_Library_Library,fps_office))
 $(eval $(call gb_Library_set_componentfile,fps_office,fpicker/source/office/fps_office))
 $(eval $(call gb_Library_use_external,fps_office,boost_headers))
+$(eval $(call gb_Library_use_external,fps_office,gio))
 $(eval $(call gb_Library_use_custom_headers,fps_office,\
 	officecfg/registry \
diff --git a/fpicker/source/office/OfficeFilePicker.cxx b/fpicker/source/office/OfficeFilePicker.cxx
index 6fd28ed..40698aa 100644
--- a/fpicker/source/office/OfficeFilePicker.cxx
+++ b/fpicker/source/office/OfficeFilePicker.cxx
@@ -43,6 +43,8 @@
 #include "osl/mutex.hxx"
 #include "vcl/svapp.hxx"
+#include <gio/gio.h>
 // using ----------------------------------------------------------------
 using namespace     ::com::sun::star::container;
@@ -504,29 +506,71 @@ void SAL_CALL SvtFilePicker::setTitle( const OUString& _rTitle ) throw (RuntimeE
 sal_Int16 SAL_CALL SvtFilePicker::execute(  ) throw (RuntimeException, std::exception)
-    return OCommonPicker::execute();
-// XAsynchronousExecutableDialog functions
-void SAL_CALL SvtFilePicker::setDialogTitle( const OUString& _rTitle ) throw (RuntimeException, std::exception)
-    setTitle( _rTitle );
-void SAL_CALL SvtFilePicker::startExecuteModal( const Reference< ::com::sun::star::ui::dialogs::XDialogClosedListener >& xListener )
-    throw (RuntimeException,
-           std::exception)
-    m_xDlgClosedListener = xListener;
-    prepareDialog();
-    prepareExecute();
-    getDialog()->EnableAutocompletion( true );
-    getDialog()->StartExecuteModal( LINK( this, SvtFilePicker, DialogClosedHdl ) );
+    GError * err = nullptr;
+    GDBusProxy * proxy = g_dbus_proxy_new_for_bus_sync(
+        "org.freedesktop.portal.ContentPortal",
+        "/org/freedesktop/portal/content",
+        "org.freedesktop.portal.ContentPortal", nullptr, &err);
+    if (proxy == nullptr) {
+        assert(err != nullptr);
+        SAL_DEBUG("GError " << g_quark_to_string(err->domain) << " " << err->code << " " << err->message);
+        g_clear_error(&err);
+        std::abort();
+    }
+    assert(err == nullptr);
+    GVariant * ret = g_dbus_proxy_call_sync(
+        proxy, "Open", g_variant_new("(as)", nullptr), G_DBUS_CALL_FLAGS_NONE,
+        G_MAXINT, nullptr, &err);
+    bool cncl = false;
+    OUString id;
+    if (ret == nullptr) {
+        assert(err != nullptr);
+        cncl = g_error_matches(err, g_io_error_quark(), G_IO_ERROR_DBUS_ERROR);
+        if (!cncl) {
+            SAL_DEBUG("GError " << g_quark_to_string(err->domain) << " " << err->code << " " << err->message);
+            std::abort();
+        }
+        g_clear_error(&err);
+    } else {
+        //TODO type check
+        GVariant * v = g_variant_get_child_value(ret, 0);
+        gsize len;
+#if 0
+        gchar const * s = g_variant_get_string(v, &len);
+        gconstpointer p = g_variant_get_fixed_array(v, &len, 1);
+        char const * s = static_cast<char const *>(p);
+        if (s == nullptr) {
+            SAL_DEBUG("nullptr");
+            std::abort();
+        }
+        if (!rtl_convertStringToUString(
+                &id.pData, s, len,
+                RTL_TEXTENCODING_UTF8,
+        {
+            SAL_DEBUG("not UTF-8");
+            std::abort();
+        }
+        g_variant_unref(v);
+        g_variant_unref(ret);
+    }
+    g_object_unref(proxy);
+    SAL_DEBUG("CHOSE "<<int(!cncl)<<" <"<<id<<">");
+    if (cncl) {
+        return RET_CANCEL;
+    } else {
+#if 0
+        URL_ = "document:" + id;
+        URL_ = "file://" + id;
+        return RET_OK;
+    }
@@ -588,6 +632,10 @@ OUString SAL_CALL SvtFilePicker::getDisplayDirectory() throw( RuntimeException,
 Sequence< OUString > SAL_CALL SvtFilePicker::getFiles() throw( RuntimeException, std::exception )
+if(true) {
+    SAL_DEBUG("getFiles <"<<URL_<<">");
+    return {URL_};
     SolarMutexGuard aGuard;
diff --git a/fpicker/source/office/OfficeFilePicker.hxx b/fpicker/source/office/OfficeFilePicker.hxx
index fa8313e..685e40c 100644
--- a/fpicker/source/office/OfficeFilePicker.hxx
+++ b/fpicker/source/office/OfficeFilePicker.hxx
@@ -19,7 +19,7 @@
-#include <cppuhelper/implbase5.hxx>
+#include <cppuhelper/implbase4.hxx>
 #include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
 #include <com/sun/star/ui/dialogs/XFilePreview.hpp>
 #include <com/sun/star/ui/dialogs/XFilePicker3.hpp>
@@ -50,11 +50,10 @@ typedef ::com::sun::star::uno::Sequence< OUString >  OUStringList;   // can be t
 // class SvtFilePicker ---------------------------------------------------
-typedef ::cppu::ImplHelper5 <   ::com::sun::star::ui::dialogs::XFilePicker3
+typedef ::cppu::ImplHelper4 <   ::com::sun::star::ui::dialogs::XFilePicker3
                             ,   ::com::sun::star::ui::dialogs::XFilePickerControlAccess
                             ,   ::com::sun::star::ui::dialogs::XFilePreview
                             ,   ::com::sun::star::lang::XServiceInfo
-                            ,   ::com::sun::star::ui::dialogs::XAsynchronousExecutableDialog
                             >   SvtFilePicker_Base;
 class SvtFilePicker :public SvtFilePicker_Base
@@ -103,14 +102,6 @@ public:
     virtual sal_Int16 SAL_CALL execute(  ) throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
-    // XAsynchronousExecutableDialog functions
-    virtual void SAL_CALL setDialogTitle( const OUString& _rTitle ) throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
-    virtual void SAL_CALL startExecuteModal( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XDialogClosedListener >& xListener )
-        throw (::com::sun::star::uno::RuntimeException,
-               std::exception) SAL_OVERRIDE;
     // XFilePicker functions
@@ -224,6 +215,8 @@ private:
     void                prepareExecute( );
     DECL_LINK(          DialogClosedHdl, Dialog* );
+    OUString URL_;

which on the one hand works around the xml-config problem I mention in the presentation and on the other hand hacks in some initial demo support for the document portal.

The latter works by replacing the LibreOffice-internal file picker (“Tools – Options… – LibreOffcie – General – Open/Save Dialogs – Use LibreOffice dialogs”) with the xdg-content-choser (you need the latest git revision of the chooser, along with the latest git revision of xdg-app for that to work). Once you select the LibreOffice-internal file picker, you can open a document from outside the sandbox, read-only for now. Read-write and saving back is next on the agenda…

by stbergmann at August 11, 2015 08:19 AM

August 10, 2015

>Pranav Kant

GUADEC 2015 in Gothenburg

This year GUADEC was organized in the wonderful city of Gothenburg in Sweden. It was my pleasure attending this conference for the second time, and meet several awesome contributors in FOSS community again. Discussions with several contributors helped me get a wonderful insight of various important topics in both GNOME, as well as the LibreOffice project.

As a Summer of Code student this time for LibreOffice, I also gave a talk about my (project)[] with Markus Mohrhard. You can download the slides (here)[].

I would like to thank whole of the GUADEC organizing team for organizing this event smoothly. Last but not the least, a many thanks to TDF for sponsoring my travel and accomodation without which all of this would not have been possible. I am looking forward to have a long and exciting journey ahead with GNOME and Document Foundation.

August 10, 2015 12:00 AM

August 09, 2015

Charles Schulz

LibreOffice, and the ODF legacy

Common wisdom has it that sleeping dogs are better kept snoring and I tend to agree. I’m going to do what may seem to be understood as the contrary. I believe it is not the case, as prejudice is something that is hard to fight and tends to stick around dark corners and circles of people with little knowledge of the matter.

LibreOffice has deeply hurt the ODF ecosystem
As more and more European countries deploy Free and Open Source Software for their governmental I.T., the question of open standards becomes more important. This is particularly true of the Open Document Format (ODF). There are of course several FOSS implementations of ODF: LibreOffice, Calligra and Apache OpenOffice.LibreOffice_external_logo_200px
Oddly enough the choice between these suites (and MS Office and its own ODF implementation) brought back an old meme: LibreOffice is hurting ODF global adoption by creating some sort of instability vis-à-vis Apache OpenOffice.
This is actually an old idea, and one that goes all the way back to the very creation of the LibreOffice project. The core team behind the Document Foundation was told by many people that we were breaking what seems to have been an “unified front” of the ODF implementors vs. Microsoft.
We were practically becoming the objective allies of Redmond by displaying the instability that is supposedly inherent to Free and Open Source project, which really amounted to say that we should never have forked.
Anyone thinking this is misguided, as I will show in this post; anyone willfully spreading this meme is actually being disingenuous.

** ODF does not equate OpenOffice
The first and perhaps rather obvious rebuttal to these allegations is that ODF does not equate OpenOffice. Of course, the standard and this office suite share a special relationship. But the point of ODF remains that it should not be the format of a particular office suite; as such it is used by Calligra, Apache OpenOffice and LibreOffice today, alongside Corel WordPerfect an Microsoft Office which support it yet do not use ODF as their default file format.
Moving beyond office suites you will find a rather diverse ecosystem of tools that handle and generate ODF files for various purposes. My point here is perhaps already made; but it is also important to note that ever since 2010 there isn’t any particular vendor leading the ODF technical committee at the OASIS – don’t get me wrong, things are going quite smoothly, but we’re no longer in a situation where ODF is spearheaded by one office suite and one vendor. On top of that, it is fair to say that ODF is both a quite acceptable file format which is pushed by the recent and ongoing migrations to LibreOffice.
Look at what’s happening in 5 specific European countries – there are others of course: the United Kingdom, the Netherlands, France, Italy and Hungary: these five countries have to some extent mandated the use of ODF across their administration, be it on a regional or national level. This creates both demand and offer, and increases the use and the creation of ODF documents.
The use of ODF is thus correlated to the use of LibreOffice these days even though ODF has several implementations. Other European countries are not less interesting but may not have a national mandate to use ODF despite having real migrations cases: Spain, Greece and Germany.

Another important rebuttal is that is no more. That ship sailed years ago. Besides the forks existing at the time of its demise (NeoOffice for instance), has two offsprings: LibreOffice and Apache OpenOffice. Despite the name of the latter, it would be quite difficult to support the view that Apache OpenOffice drives the momentum of ODF anymore than LibreOffice: there is a reality in terms of actual deployments as well as ongoing development and resources that would make that case rather difficult.
And yet, that is somehow AOO4_website_logowhat can be heard here and there in Europe. It is the same critic that was made against LibreOffice in 2010 and 2011, but more than a critic this argument increasingly looks like an implicit admission of weakness, if not failure. Failure to what? By whom?
Failure to have kept little but the “OpenOffice” brand alive, and to have lived up to the promise that the dump of the assets of OpenOffice without any meaningful community backing them into the Apache Software Foundation would be an astounding success.

The rather counterproductive twist to it is that instead of pushing LibreOffice, a few are attempting to dance around potential ODF adopters claiming LibreOffice brought confusion.
Certainly, confusion was a byproduct of what the Document Foundation did to save the main Free Software office suite project in 2010. But confusion happens all the time, even for proprietary software and vendors: some get bought, others change names, a few even go bankrupt. Confusion may be a nuisance but it tends to be part of a bigger picture. I’m sorry to see that some would better stick to whining.

 By forking, LibreOffice has destroyed OpenOffice
That one was heard as well in 2010 and 2011 and now it is rather difficult to make that claim: first, LibreOffice is a success and if anything it has grown the reach of the former project. The legend that LibreOffice is the actual culprit in the fall of OpenOffice is however present, alive, albeit in an unconscious or unspoken way. This myth needs to be put to rest.
LibreOffice was born precisely because OpenOffice *was going down*. The project was living off borrowed resources from its new overlord, and its new overlord was not only interested in keeping it alive insofar as it was generating revenue in a rather short timeframe. That’s not an unreasonable expectation, and it was the same for every asset acquired from Sun Microsystems. The cost structure and business model of the former StarDivision unit, however, made it a goal that was close to impossible to reach. Realizing that a small but rapidly growing portion of the community worked at the “plan B”. Anybody thinking OpenOffice could have survived otherwise is delusional and needs to come to terms with that issue. In the words of a great french writer of the 18th century, Maximilien de Chamfort, “to have expected that things could have carried on the way they had before means one expects to clean the stables of Augias with a feather duster”.

LibreOffice’s only problem is that it exists.
I dare to say it: LibreOffice’s is a wonder as it is both one of the most serious attempts to create a true and exemplary Free and Open Source project and is at the same time an unwanted child for some. To them, no matter how handsome or smart the child is, she is still unwanted.
It is unfair and mean to be angry at the child: he is only the fruit of a physical act, not the act itself. After some time, the child has grown up; he’s handsome and healthy, rides horses and is quick to learn; yet a few people will still be mumbling and talking behind closed doors against him. Of course they cannot speak in the open, out loud against him. But they will speak behind his back, and attempt to cast just as much doubt necessary to make some people question the obvious. Just like with this example, one should not have a problem with LibreOffice’s existence and success: LibreOffice is the consequence, the sequel to a rather long story. It is not the cause, nor the original sin.
If you believe I’ve been beating a dead horse in this post, you may perhaps be right: to me however, I have heard and seen this horse neighing often these past 4 years: I had to clarify the matter.

by Charles at August 09, 2015 04:02 PM

Markus Mohrhard


So I had the pleasure of attending GUADEC for a second time and was allowed to give a talk about LibreOffice.GUADEC is always a nice conference and it was located this year in the beautiful city of Gothenburg.

My talk was shared with Pranav Kant as the talk that I handed in was about his GSoC project. So we shared the talk and he talked half of the time about the integration into Gnome Documents. I then took over and talked a bit about new LibreOffice 5.0 features and the work that the other GSoC students are doing.

As always the slides for our talk can be downloaded here.

by Markus Mohrhard at August 09, 2015 03:03 PM

Caolán McNamara

crash testing, 80000 documents, 0 export failures, 0 import failures

The last LibreOffice crashtesting run reports our goal of 0 import/export crash/asserts. This is on a refreshed up to date 80000 docuent corpus from various bugzillas and other sources.

Earlier runs had been over a static collection of 76000 documents, hopefully now we have zeroed the dials we can refresh the corpus far more frequently, perhaps on every run, and actively trawl for crasher documents.

by Caolán McNamara ( at August 09, 2015 01:14 PM

guadec 2015 porting LibreOffice to gtk3 slides

Presented our porting LibreOffice to GTK3 presentation at GUADEC yesterday. Here, as hybrid pdf, are those slides with a rough guide to our architecture there and current wayland progress.

It was pointed out after the presentation (by jrb), that our gtk3-themed spinbuttons had the up and down buttons in +,- order instead of the correct -,+ order. So that's fixed now.

by Caolán McNamara ( at August 09, 2015 01:14 PM

August 06, 2015

>Marius Popa Adrian

Let's go back to the c , Firebird embedded backup service works

I have used an c based example for services api and seems that it works without a need for auth user gcc backup_service.c -lfbembed ./a.out employee.fdb employee.fbk Attach succeed Start succeed gbak:readied database employee.fdb for backup gbak:creating file employee.fbk ... gbak:writing SQL roles gbak:writing names mapping gbak:closing file, committing, and finishing. 74752 bytes

by Adrian Marius Popa ( at August 06, 2015 05:50 PM

August 05, 2015

Charles Schulz

LibreOffice 5 has just been released!

Readers of this blog will notice a nice touch to it

Thanks to everyone who made this possible!


by Charles at August 05, 2015 10:40 AM

August 01, 2015

Charles Schulz

Surprises, claws and various articles

Dear readers, something nice but unexpected came up recently. As you can imagine, preparations for the release of LibreOffice 5 are keeping many people busy these days. Among the things that need to be found is the choice of collaterals and various elements for communication. It could very well be that readers of this blog will have a nice surprise the day LibreOffice 5 is released!

But that’s only one of the various newsbits I wanted to share with you. The official blog of the Document Foundation has added two very interesting new posts lately. One is about the work taking place at the level of quality assurance for LibreOffice; the other one is a synthetic overview of the technical evolution that made LibreOffice 5 possible. I can only recommend to take some time to go through these two articles, as they are quite enlightening and answer in details about some frequently asked questions, ranging from “why didn’t you fix the bug XYZ707832?” to “has LibreOffice changed much since was ever created?“.

Last but not least, I wanted to talk a little bit about Claws Mail. While my email workflow is increasingly relying on Emacs and somewhat more on Evolution, I still use Claws as it is the primary default email client on my (aging) workstation. It turns out that the team behind Claws released a new version after 9 months, a span of time that is a bit of a stretch if you look at the project’s release history. The amount of new features and bugfixes is quite impressive and it is quite a meaningful release. I upgraded and it worked smoothly for me; however it will not curb the current trend in my workflow and as I had explained previously on this blog, what Claws is really missing is a calendar plugin that works with Caldav. So far that has unfortunately not happened. But for anybody who does not rely too much on calendar syncing other than Google Calendar and is not interested in non graphical email clients, you should give Claws a serious try.

by Charles at August 01, 2015 08:03 AM

July 28, 2015

Miklos Vajna

Mail merge embedding

If you ever used the mail merge wizard with a Calc data source, then you know how it worked in the past: you’ve got 3 files: the .odt mail template, the .ods data source and a .odb data source definition that defines how to access the .ods.

The target of this LHM-funded project was to get rid of the .odb file and just embed it into the .odt mail template. Why?

Here is the problem description from a user’s point of view: "When a mail merge document is being saved a separate database file is being automatically created. It links the Writer file to the spreadsheet (ODS, XLS, XLSX etc.) as data source. This additional 2kB ODB file confuses users, they might delete it without knowing to break the connection to the data source." An additional problem is that because the non-embedded data source definition is part of the user profile, you can’t just move the three files to an other machine, as .odb registration will be missing there.

If you are interested how this looks like, here is a demo (click on the image to see the video):

That’s it for now — as usual the commits are in master, so you can try this right now with a 5.1 daily build. :-)

July 28, 2015 07:34 AM

July 27, 2015

Markus Mohrhard

New fill property names in chart2

So a quick note for all users of the chart2 UNO API.

The data point objects support now the service similar to the other chart objects. This finally allows to access all chart2(not chart1) objects with the same fill property set names.

For the data points we now have the additional property names:

  • FillColor
  • FillTransparence
  • FillTransparenceGradientName
  • FillGradientName
  • FillGradientStepCount
  • FillHatchName

This change will be available in LibreOffice 5.1, currently scheduled for the beginning of February 2016.

I also filed an EasyHack to support FillTransparenceGradient, FillGradient, FillHatch and FillBitmap which would simplify handling of the fill properties even further.

by Markus Mohrhard at July 27, 2015 11:28 PM

July 23, 2015

Charles Schulz

Software Commons

An attentive reader of this blog made this private comment about software commons to me a few days ago: There are no real software commons, because you cannot compare these with actual, material commons such as air or water. One should treat software proprietary or free as in freedom, as existing in a legal context made of intellectual property laws such as copyrights, patents, trademarks and the like.

This comment is spiked my interest for two reasons. First, not a lot of people know about the theories around digital commons and second, this reader is actually right. Software is not just immaterial unlike water, ground or air (yes, air is material, just not like in the usual sense people think of the definition of material). Software does not exist in a vacuum – pardon the pun- it exists as a technical, legal, economical, philosophical, social and political reality. In other words, software relies on a series of existing norms, factors and agents such as laws, industries, capital, people to exist, to be distributed and developed. One does not just “find” software under a rock. Even downloading Free Software is possible because there’s a license attached to it that regulates the various conditions for the software to be downloaded and shared.

Does this mean I do not buy in the idea of the software commons? Quite the contrary, and readers of this blog may see from time to time that I’m a great supporter of the theories of Yochai Benkler. Benkler is the first author and scholar who has developed and popularized the theory of software commons, and probably the first to have coined them as commons. Predecessors obviously include Richard Stallman, Bruce Perens, Eric Raymond and several others. But Benkler was the first one to theorize them as such and a list of publications on his site may help provide more background to interested readers.

Software commons do however exist. My reader may be right – but I believe that his assessment is made on “positive” grounds, meaning that his frame of analysis does not attempt to question the existing norm. Hence his opinion is based “on reality” as one would say. Software commons are disruptive as a theory and as a vision. They do not deny the entire apparatus that makes software what it is today in our society. The theory acknowledges all this but goes beyond by highlighting other factors. For instance, software no longer requires millions of investment by teams of lead researchers to exist. Of course, this kind of investment exists today and may still happen but it is only one possible way to develop software. Depending on the business model, on the initial investment, on the particular strategy and inclination of its authors, software may indeed be expensive and sold as an on-the-shelf product. Or it may be sold as a subscription. Or as a service. Or monetized or valued differently, like Free and Open Source Software. The point of software commons is that creating software is possible without high barriers, as most of them are either artifical (legal constraints such as patents) or vanishing, like the high price for developing software. In the case of Free and Open Source Software, the rights and freedom attached to the software create a reality analogous to what commons were in medieval Europe: a shared resource that is created, maintained, grown and consumed by a community. This type of commons was not something that was ever thought as a black market or a side show: it would feed pretty much every peasant and its family. Commons had various legal standing and recognition: my point is that they were integrated inside a broader national, regional and economic framework.

In this sense, software commons make sense, and because these commons do not effectively exist in some village somewhere in Europe during the Middle Ages, but much rather all over the Internet, they are of primary importance for software and for the world we live in.

Several conclusions could be drawn from this. I will only keep two that matter for this post:

  • Commons cannot really create a product, but they create more or less finite materials that one can turn into a product
  • Commons rely on a community: without it they cannot exist and they must be run based on that notion. There cannot be any expectation as to who else may help or do something for you if you’re part of the community or at least a downstream user of the software.

The theory fo software commons is an important, yet often overlooked theory that bridges together software freedom, culture and economics. I can only urge anyone interested to read about them and make up your own mind.


by Charles at July 23, 2015 08:41 PM

Caolán McNamara

RHEL 6.7 upgrades LibreOffice from to

The freshly announced RHEL 6.7 upgrades LibreOffice from to RHEL 7.2 will upgrade from to Fedora 23 will have 5.0.0 in it.

by Caolán McNamara ( at July 23, 2015 09:37 AM

July 19, 2015

Thorsten Behrens

FOSDEM 2015 and the OpenDocument Editor Devroom

This is the fourth (and last) in a series (1, 2, 3) of quick updates on travel and meetups I attended this year, for or because of LibreOffice / The Document Foundation. The next LibreOffice event you’ll definitely meet me will be the annual LibreOffice conference, this time in Aarhus, Denmark, on Sep. 23-25th.

As I keep saying every year, FOSDEM is really the FLOSS event to go for me. If I could attend only one, I’d be hard pressed to choose between LibOCon and FOSDEM – it is that great. Fortunately, that hard choice is not upon me. The TDF board therefore uses FOSDEM for one of the two in-person board meetings (the other one being during LibOCon) per year, and also tries to have a hackfest adjacent to it. Which is rather economic on travel, since lots of people are around already.

The LibreOffice project was again co-running the Open Document Editors devroom, and this time, we hit some true home runs. Especially for the mobile topics, the room was full to the gunwales. I was looking after our own small lightning talks track, with the following talks (slides linked):

  • Jos van den Oever about font embedding in ODF (slides/demo)
  • Asheesh Laroia about ODF support in EtherCalc (slides)
  • Your truly with the Nice Slides in Seconds! pitch (slides, /code)

Next to looking after LibreBaby and socializing with tons of people on the hallways, I attended only a few talks myself. Beyond our own dev room stuff, I recall a home-made GPS watch talk, and one about making your tests fail via randomized parameterization, which were both great.

The monday after, we had a full day of TDF board meetings (good progress there on annual budget planning, and a number of smaller items), and the UX hackfest in parallel. I used the opportunity to corner both Michael M. and Michael S. on ODF topics, with now hopefully much better mutual alignment. On the actual hacking front, I spent most of the time finishing up my markdown slide generator project, the result of which was mentioned on this blog already.

Pair programming, UX hackfest

Pair programming, UX hackfest

Filed under: LibreOffice Tagged: libreoffice, Pictures, travel

by thorstenb at July 19, 2015 08:55 PM

German LibreOffice meetup in Essen

This is the first in a series of quick updates on travel and meetups I attended this year, for or because of LibreOffice / The Document Foundation.

Thanks to Florian, the German LibreOffice community again had the opportunity to meet in person, to work and plan activities for the coming 12 months. As usual, this meetup took place in the Linux Hotel in Essen, a lovely location, and conveniently placed in the middle of Germany. The event took place a few weeks ago already, during the weekend June 19-21st. Bubli went first, since I could only join Saturday evening due to a conflicting family event.

The meeting was a blast, and with a virtual group like the LibreOffice community, a most welcome (and far too seldom) opportunity to connect in person. The agenda was packed, and a number of activities identified there got started already (IT & Business trade fair, updated flyers).

Martin and Italo, cooking

Martin and Italo, cooking

Sunday morning plenary session

Sunday morning plenary session

Was great to be there, and very encouraged by the newly-invigorated German LibreOffice community spirit! On that account, and if you’re able to read German: there’s a very nice and in-depth special edition of the iX computer magazine available, covering Office productivity in general and LibreOffice in particular.

Filed under: LibreOffice Tagged: libreoffice, Pictures, travel

by thorstenb at July 19, 2015 08:53 PM

LibreOffice Cambridge Hackfest 2015

This is the second in a series of quick updates on travel and meetups I attended this year, for or because of LibreOffice / The Document Foundation.

On invitation by Michael and his Collabora crowd, this year saw the first LibreOffice hackfest ever on English soil, conveniently located, and helpfully scheduled in parallel to the annual Cambridge beer festival.

Attendees and host were great, my attention this time evenly split between hacking, personal talks, and very well-organised and entertaining evening activities (see below). I even fixed a bug! :-)

Hacking in Cambridge Trying some real ale River Cam punting
Filed under: LibreOffice Tagged: libreoffice, Pictures, travel

by thorstenb at July 19, 2015 08:49 PM

LibreOffice Gran Canaria Hackfest 2015

This is the third in a series (1, 2) of quick updates on travel and meetups I attended this year, for or because of LibreOffice / The Document Foundation.

On March 19-20th already, the 2nd LibreOffice hackfest in Las Palmas, Gran Canaria took place at the ULPGC. Thanks to Fran Santana and the team from the university for hosting us, and my new company CIB for sponsoring food & drinks and diners – and a very significant infusion of people into the LibreOffice ecosystem!

Scheduling was perfect, we reportedly had the worst weather of the year thus far, so sitting down & hacking really was the only alternative. Accordingly, a number of things got done, bugs fixed, and stuff/folks bootstrapped.

There were a few encouraging contacts to local LibreOffice users, and very interesting conversations with students, some of them really new to the ideas, concepts & the way of life inside a FLOSS project.

Las Canteras, stormy 16 deg, centigrade Friendly signage Bubli and Benni Hacking in full swing Static code analysis explained

On a personal note, I’m very happy to report that travelling, and working, with a 1.5 year-old is very much possible in FLOSS land. Both university and hackfest attendees were lovely, understanding, and forgiving LibreBaby the occasional cries of joy (and anger). :-)

Filed under: LibreOffice Tagged: libreoffice, Pictures, travel

by thorstenb at July 19, 2015 02:35 AM

July 18, 2015

Björn Michaelsen

Blast from the Past: the Pimpl?

They sentenced me to twenty years of boredom
For trying to change the system from within
— Leonard Cohen, I’m your man, First we take Manhattan

Advance warning: This blog post talks about C++ coding style, and given the “expressiveness” (aka a severe infection with TimTowTdi) this is bound to contain significant amounts of bikeshedding, personal opinion/preference. As such, be invited to ignore all this as the ramblings of a raging lunatic.

Anyone who observed me spotting a Pimpl in code will know that I am not a fan of this idom. Its intend is to reduce build times by using a design pattern to move implementation details out of headers — a workaround for C++s misfeature of by default needing a recompile even for changing implementation details only without changing the public interface. Now I personally always thought a pure abstract base class to be a more “native” and less ugly way to tell this to the compiler. However, without real testing, such gut feelings are rarely good advisors in a complex language like C++.

So I did some testing on the real life performance of a pure abstract base class vs. a pimpl (each of course in a different compilation unit to prevent the compiler to optimize away what we want to measure) — and for reference, a class with functions that can be completely inlined. These are the three test implementations, inline:

-- header (hxx) --
class InlineClass final
		InlineClass(int nFirst, int nSecond)
			: m_nFirst(nFirst), m_nSecond(nSecond), m_nResult(0)
		void Add()
			{ m_nResult = m_nFirst + m_nSecond; };
		int GetResult() const
			{ return m_nResult; };
		const int m_nFirst;
		const int m_nSecond;
		int m_nResult;

Pimpl, as suggested by Effective Modern C++ when using C++11, but not C++14:

-- header (hxx) --
#include <memory>
class PimplClass final
		PimplClass(int nFirst, int nSecond);
		void Add();
		int GetResult() const;
		struct Impl;
		std::unique_ptr<Impl> m_pImpl;
-- implementation (cxx) --
#include "pimpl.hxx"
struct PimplClass::Impl
	Impl(int nFirst, int nSecond)
		: m_nFirst(nFirst), m_nSecond(nSecond), m_nResult(0)
	const int m_nFirst;
	const int m_nSecond;
	int m_nResult;
PimplClass::PimplClass(int nFirst, int nSecond)
	: m_pImpl(std::unique_ptr<Impl>(new Impl(nFirst, nSecond)))
void PimplClass::Add()
	{ m_pImpl->m_nResult = m_pImpl->m_nFirst + m_pImpl->m_nSecond; }
int PimplClass::GetResult() const
	{ return m_pImpl->m_nResult; }

Pure abstract base class:

-- header (hxx) --
#include <memory>
struct AbcClass
	static std::shared_ptr<AbcClass> Create(int nFirst, int nSecond);
	virtual ~AbcClass() {};
	virtual void Add() =0;
	virtual int GetResult() const =0;
-- implementation (cxx) --
#include "abc.hxx"
#include <memory>
struct AbcClassImpl final : public AbcClass
	AbcClassImpl(int nFirst, int nSecond)
		: m_nFirst(nFirst), m_nSecond(nSecond)
	virtual void Add() override
		{ m_nResult = m_nFirst + m_nSecond; };
	virtual int GetResult() const override
		{ return m_nResult; };
	const int m_nFirst;
	const int m_nSecond;
	int m_nResult;
std::shared_ptr<AbcClass> AbcClass::Create(int nFirst, int nSecond)
	{ return std::shared_ptr<AbcClass>(new AbcClassImpl(nFirst, nSecond)); }

Comparing these we find:

implementation lines added for GetResult() source entropy added source entropy for GetResult() runtime
inline 2 187 17 100%
Pimpl 3 316 26 168% (174%)
pure ABC 3 295 (273) 19 (16) 158%

So the abstract base class has less complex source code (entropy)1, needs less additional entropy to expand and is still faster in the end on common hardware (Intel i5-4200U) with common compiler optimization switches (-O2)2.

Additionally, in a non-trivial code base you might actually need to use virtual functions for your implementation anyway as you are deriving from or implementing an existing interface. In the Pimpl case, this means using two indirections (resolving the virtual function and then resolving the m_pImpl pointer in that function on top of that). In the abstract base class case thats not happening and in addition, it means that you can spare yourself the pure virtual declarations in the *.hxx (the virtual ... =0 ones), as those are already declared in the class derived from. In LibreOffice, this is true for any class implementing UNO interfaces. So the first numbers are actually biased against an abstract base class for real world code bases — the numbers in parathesis show the results when an interface is already defined elsewhere.

So unless the synthetic example used here is some kind of weird cornercase, this suggests abstract base classes being the better alternative over a Pimpl once the class goes beyond being a plain value type with completely inlineable accessor member functions.

Thanks for bearing with me on this rant about one of my personal pet peeves here!

1 entropy is measured as cat abc.[hc]xx|gzip|wc -c or cat pimpl.[hc]xx|sed -e 's/Pimpl/Abc/g'|gzip|wc -c.
2 Here is the code run for that comparision:

constexpr int repeats = 100000;

int pimplrun(long count)
//int abcrun(long count)
        std::vector< std::shared_ptr<PimplClass /* AbcClass */ > > vInstances;
                vInstances.emplace_back(std::make_shared<PimplClass>(4711, 4711));
                //vInstances.emplace_back(AbcClass::Create(4711, 4711));
        int result(0);
        count = vInstances.size();
                for(auto pInstance : vInstances)
                        result += pInstance->GetResult();
        return result;

Instances are stored in shared pointers as anything that a Pimpl is considered for would be “heavy” enough to be handled by reference instead of by value.

Update 1: Out of curiosity, I looked a bit deeper at this with callgrind. This is what I found for running the above (with 1000 repeats) and --cache-sim=yes:

I1 cache: 32768 B, 64 B, 8-way
D1 cache: 32768 B, 64 B, 8-way
LL cache: 3145728 B, 64 B, 12-way

event inline ABC Pimpl
Ir 23,356,163 38,652,092 38,620,878
Dr 5,066,041 14,109,098 12,107,992
Dw 3,060,033 5,094,790 5,099,991
I1ir 34 127 29
D1mr 499,952 253,006 999,013
D1mw 501,636 998,312 500,097
ILmr 28 126 24
DLmr 2 845 0
DLmw 0 1,285 250

I dont know exactly what to derive from that, but what is clear is that purely by instruction counts Ir this can not be explained. So you need --cache-sim=yes which gives the additional event counts. Actually Pimpl looks slightly better on most stats, so as it is slower in real life, the cache misses on the first level data cache D1mr might have quite an impact?

Update 2: This post made it to reddit, so I looked into some of the feedback from there. A common suggestion was to use for(auto& pInstance : vInstances) instead of for(auto pInstance : vInstances) in the benchmarking function. This had no significant impact on walltime measurements nor made it callgrind event counts show some clearer picture. I also played around with the order of linked objects to see if it has any impact (via cache locality etc.). While runtime measurements fluctuated quite a bit (even when using the same binary), the order was always the same: inlining quickest, then abstract base class and pimpl slowest.

by bmichaelsen at July 18, 2015 07:16 AM

July 17, 2015

Caolán McNamara

LibreOffice on wayland

Hacked LibreOffice a bit more today towards wayland support via the gtk3 vclplug. Good news is that it launches, displays and you can interact with it mostly as expected.

Under F22 with a gnome-on-wayland session, GDK_BACKEND=wayland ./soffice.bin gives me...

Which is encouraging as this morning I had no window contents at all. Downside is that I can't resize the window and the menubar is displayed behind the title bar. Maybe a client side decoration issue.

by Caolán McNamara ( at July 17, 2015 02:17 PM

July 16, 2015

>Szymon Kłos

GSoC 15 - Remote Files Dialog

The midterm passed some time ago, I'm near finishing implementation of the first part of my Google Summer of Code project. This is a good moment to present results of my work.

I'm working on improving user experience while using remote services in LibreOffice. The main part of this task is implementation of simple dialog used to exploring online document storages. I must also simplify process of creating new ones. I based my work on mockups from:

Connecting to the CMISs in LibreOffice was possible, but not visible to the average user. It was accessible only in custom LO file dialog which is turned off by default. I've created new remote file picker which can be opened from start center and toolbars.

1. Start Center with new entry, new dialog
2. Changes in Writer's toolbar: new "Open Remote" button and dropdown menu for "Save As" button
3. "Open remote file" entry below recent files

Remote Files Dialog layout
4. Remote Files Dialog
5. Split button with possible actions
6. Listbox with preconfigured services (type + name)
7. Breadcrumb with very long path, deeper folder (New Folder) was visited recently

On the top of windows we have section for manage connections. On the left side: listbox with preconfigured services. On the right side is placed split button which lets us add, edit or delete a service.
Below those controls we can see breadcrumb. The breadcumb could work in two modes: showing only current path, or second: showing also links to the deeper folders which we visited recently (for example when we went level up, this mode is set by default). When path is too long, on the beginning '…' is shown.
On the left side, dialog contains folder tree. When user opens new directory, automaticly proper node is selected. The dialog also contains standard file picker controls: file list, filter listbox and file name field.

Adding new service
The first field which user should fill is the type of service. Types are organized and sorted user-centric (apps, connections, protocols).

8. Organization of service types

Dialog’s complexity depends on the connection type:

9. Most simple: Google Drive
10. WebDAV
11. CMIS
Editing service
In the edit window user can change all data except type of service.

12. Edit window
When user selects an entry from services dropdown, login dialog appears. User name is filled by default.
Password could be remembered for ever if user will check the checkbox. In one session it is always stored, user don't have to retype it again before closing LO. Before my changes, when user typed wrong password, it was stored too and was impossible to change. I fixed this bug.

13. Login dialog

TODO / topics for discuss
  • change expanded folder icon in the folder tree
  • "New folder" button in the save mode?
  • change of "Open remote" icon in a toolbar ? (now is the same as regular open icon)
  • "Open remote" entry below recent files and in the toolbar are both needed?
  • should a delete button be in the edit window?
  • In which mode should the breadcrumb work?

by Szymon Kłos ( at July 16, 2015 11:21 AM

July 15, 2015

>Marius Popa Adrian

Update firebird to version 2.5.4 is applied into LibreOffice master

There was a small issue with tinderbox and was reverted and then re-applied to master. Rebuilding of indexes function is now removed from master (Using firebird backup format for .odb there is no need for rebuild indexes).

by Adrian Marius Popa ( at July 15, 2015 04:55 PM