Yak Shaving Progress Report

Take out the papers and the trash
Or you don’t get no spendin’ cash

— Yakety Yak, The Coasters


At last years LibreOffice conference in Tirana I gave a talk on how SwClient is considered harmful. At this years LibreOffice conference in Almeria, I presented a lightning talk, giving some updates on the progress.

Additionally, with some recent idle changes not only the unocore directory in Writer is free of the error prone old SwClient/SwModify combo, but also the directories:

  • sw/source/core/view
  • sw/source/filter/html
  • sw/source/filter/basflt
  • sw/source/filter/ww8
  • sw/source/filter/xml
  • sw/source/ui
  • sw/source/uibase

So far, it seems the hope I expressed at the conference that getting rid of SwClient and SwModify (leaving aside the core layout for now) seems to be quite doable and well worth it for the errors and fragility this will prevent in those areas of code.

The saga begins …

Oh, the Council was impressed, of course
Could he bring balance to the Force?

— The Saga Begins, Weird Al Yankovic

As you might have seen, we have now run four C++ sessions to get started with C++ and LibreOffice development. The origin of this actually happened already at the last LibreOffice Hackfest in Munich where Izabela, Mike, Anxhelo and me conspired on the idea. We also started to recruit LibreOffice developers as mentors right there and Xisco joined us soon.

As the lectures discuss the basics of data structures and C++ I started to create some patches against LibreOffice to show how to start with simple things in the LibreOffice build based on the examples from the lecture, but in the environment of LibreOffice and with some of its framework and conventions:

Some background and discussion about these can be found in the videos linked in the commit messages of these and on the C++ lectures wiki page. I hope these small examples are helpful to someone starting with C++ and LibreOffice even if you might have missed the first C++ lecture sesssions.

Why am I posting this? Now? Well, tomorrow the LibreOffice FOSDEM 2019 Hackfest starts in Bruessls. As you can see from the above, awesome things often take off there! You dont have to take my word for it: Izabela and Anxhelo wrote about their experiences too! If reading their report (or the story about how the lectures started) make you curious, please feel invited to join us in Bruessels at FOSDEM — or if you cant make that, the next Hackfest!

trusty old horses

Will you still need me, will you still feed me
When I’m sixty-four?
— When I’m sixty-four,  Sgt. Pepper’s Lonely Hearts Club Band, The Beatles

So almost six years ago I started using my LibreOffice development rig “Big Bertha”. Back then I thought: “This likely will be my last big machine, the next time I wont buy anything for under my desk, I will just build in the cloud.”. Six years on, that is partially true: I did not buy a new “desktop” machine. On the other hand, I am not building on some cloud machine either: I still use good old Bertha. So, why that?

For one, the speed of processors stopped improving at the insane rate it had before, so indeed machines that one buys today are not that much faster than those six years ago. However, cloud computing prices also stopped dropping like they used to. Which leaves me with not much reasons to buy new hardware — but also with little reason to consider to accept the additional inconveniences that come with building on remote hardware.

In 2012, the fastest build of a then-master checkout of LibreOffice from scratch and without caches I got out of Big Bertha was in ~18 minutes. I have not tried it again with present day LibreOffice — I assume it to be quite a bit slower, if only because e.g. we added tests left and right. But still: the old machine under the desk is still competing. A look at the numbers: A c4.8xlarge “compute-optizimed” instance on EC2 promises 36 vCPUs and 60GiB of memory. Now those 36 cores might be faster than those on the old Opteron 6272s I am running on. But I assume not much: CPUs really did not get much faster in the last six years — especially for workloads like compiling LibreOffice. For the most part they got better in other ways though: they use less power and push out less heat. So in the end the two Opteron 6272 with 32GB are likely still competing quite well with the stuff available from cloud providers.

So, why am I posting this? Buying a modern Server CPU still costs a fortune: a 16-core AMD Epyc 7281 costs 672 EUR at the time of posting. A new full machine with two of those comparable to Big Bertha will cost 2000-3000 EUR. Everybody loves AMDs Epycs apparently. But this challenge is also an opportunity: If one does not buy new hardware. Looking for “Opteron 6272” and “Opteron 6276” I found full systems available for 410 USD or even a 64-core, 256MB RAM system for 999 USD. These systems might be making too much heat and eating too much electricity: When I measured Bertha back in the day, compiling used ~400 Watt. At local electricity prices of 0.30 EUR/KWh that is 0.12 EUR per hour. Even if the c4.8xlarge on EC2 might be a bit faster, it still costs 10x as much. One should not make decisions without measuring, but its unlikely to be that much faster.

So I guess Im saying: If your LibreOffice build is too slow, have a look at the results on ebay for “opteron 6272” or “opteron 6276”. Those beasts might have served their time in the datacenter, but they may still be a steal for LibreOffice development. Or at least they should be worth a consideration …

Getting Started With LibreOffice Development: Object-oriented Programming and C++ Introductions

Turned around and found the right line

— No Leaf Clover, Metallica

So, for getting started with LibreOffice development e.g. with an EasyHack four things are needed:

  • Understanding of Object Oriented Programming
  • C++ Language Fundamentals
  • Completing a Build from Scratch of LibreOffice master
  • Understanding git and gerrit to submit your changes

We traditionally have covered the latter two quite well in our Wiki:

However, we did not have hints on where to find good documentation on object oriented programming in general and modern C++ programming. At most universities these days programming is taught with Java, JavaScript and Python, which leaves a missing piece on getting started with C++ programming. So Eike and me started looking for good resources on these topics too. Here is what we added to the General Programming Guidelines:

The OOP books are using Java as reference language, but they do not get lost in language details and intentionally allow using the concepts on other languages like C++. The university lecture starts off expecting basic knowledge of programming (e.g. in Java/JavaScript) so both together should yield a reasonable coverage of what is needed for your first EasyHacks.

Finding a good and modern starting point for C++ development was by far the hardest topic to cover of those named above. However, looking for them prompted Eike to dig out his personal “developer bookmarks” — a treasure trove that I will keep exploring further for other good content (this is where the “C++ Annotations” link came from).


P.S. As a sidenote and additional motivation: All those books — but especially “Head First: Design Patterns” should provide the context to understand many of the in-jokes found on the oldest wiki ever, the C2 WikiWikiWeb which can be an quite entertaining read once in a while.

LibreOffice Hamburg Hackfest 2018 After Action Report and: Where’s next?

Freedom’s just another word for nothin’ left to lose
Nothin’, it ain’t nothin’ honey, if it ain’t free

— Janis Joplin singing “Me and Bobby McGee” by Kris Kristofferson

Years ago, I opened one of the first LibreOffice Hackfests in Hamburg with the motto inscribed in the Hamburg city hall: “Libertatem⁠ quam peperere maiores digne studeat servare posteritas”. This year, the LibreOffice Hackfest came back to Hamburg: to the office of freiheit.com.

Carolin, Jessica and Lena from freiheit.com helping me opening the Hackfest
(c) 2018 Thorsten Behrens. All rights resevered.

If your German is as good as your Latin, you will find some common ground between those facts about the 2013 and 2018 Hackfests: freedom.

On the other hand, a lot has changed: For one, the 2018 one more explicitly invited the local LibreOffice community too to support a better exchange of ideas between non-code and code contributors. This was natural in the earlier days, when the project was smaller, but now is something we need to have actively focus on.

Even more importantly, this was the first “Hackfest: the next Generation” and we had two mentors sponsored by the Document Foundation to help contributors to improve LibreOffice in ways they deem important: Armin Le Grand from CIB and Miklos Vajna from Collabora. Armin worked with Regina on layers in Draw, a topic Regina requested as a topic for the Hackfest. Miklos helped a lot of contributors with a wide set of issues, his own report has the details.

Armin and Regina churning away on layers in LibreOffice Draw.
(c) 2018 Bjoern Michaelsen. All rights resevered.
Miklos on one of his many mentoring missions in Hamburg.
(c) 2018 Bjoern Michaelsen. All rights resevered.

Of course, there was a lot more going on, and Mike has written an excellent overview of all the good things that happened.

Personally, I was extremely pleased with these results and think the “Hackfest: the next generation” format should be repeated. The question is: Where? The key to answer that question is finding a location that will be attended by people who profit from mentoring the way those that worked with Miklos and Armin in Hamburg did.

So if you think: “A Hackfest is an awesome thing and I want one in my local community”, collect ideas that people — existing and future contributors — who would attend are interested in working on. Reginas reply (linked above) is an excellent example of how to do that.

If there are topics to work on, a local Hackfest should be easy to support. I will likely call for such proposals again soon, but should you already have concrete topics and locations you want to share, dont hesitate to send them to Board Discuss on your own initiative. Rest assured we will welcome them!

Hackfest or Barcamp? Your Call!
(c) 2018 Bjoern Michaelsen. All rights resevered.

Finally: Thanks again to freiheit.com for hosting us!

Invitation to the LibreOffice Hackfest Hamburg 2018 on April 7th and 8th

… for a holiday of working class
She’s a runaway of the establishment incorporated
She won’t cooperate
— Last of the American Girls, 21 Guns, Green Day

Its once again time to meet again in Hamburg for a LibreOffice Hackfest! We will meet with contributors to LibreOffice – old and new – and also welcome those who have not yet contributed to the project, but are interested in doing so. This will also be the first Hackfest TNG.

We will have EasyHacks prepared for anyone wanting to do their first code contribution to the project – and we will have mentors around who may provide guidance to every interested newcomer. An Hackfest is the easiest way to get involved for a curious newcomers to the project: we certainly can offer an interesting C++ codebase!

Not interested in coding? As the local German LibreOffice community joins this Hackfest, non-coding topics like documentation, QA and marketing especially in the German context will be discussed too. This is an opportunity to meet those active in the German community and plan and coordinate how to push the project, the product and the brand of LibreOffice in the German context. Mixing and mingling of the German community with the international developer community is a bonus for both: otherwise this only happens at the frantic and busy meetings at FOSDEM and the LibreOffice conference, where usually time is a very restricted resource for everyone.

Note that as usual support for travel and accommodation for the Hackfest is available from The Document Foundation as per its travel policy, so please feel invited to make use of that offer, especially if you have always been curious about the LibreOffice project and you want to get involved, but are not quite sure how: a Hackfest is a great way to learn that.

So – where will we meet? Here:


This is 6Fwd – a beautiful meeting room at freiheit.com technologies, who are generously hosting us for this event. I am very excited about us being guests at this location and would like to thank freiheit.com for their sponsorship!

Details about the LibreOffice Hackfest Hamburg 2018 are kept on the TDF wiki page and will be continuously updated. If you are interested in joining the event please start adding your name there (especially if you are interested in TDF sponsoring travel and accomodation for you).

(If you are still unsure about joining the event, you can have a look at the wiki pages of previous events to get an idea. But really: the best way to learn about the project is going to a Hackfest, so dont miss this opportunity!)

Hackfests: The Next Generation

Reports of my assimilation are greatly exaggerated.

— Jean Luc Picard, Star Trek: First Contact

(This is a repost from the discussion on the board-discuss@documentfoundation.org discussion — including all typos and misspellings — for more visibility.)

Hi all,

I recently had a look at a variety of challenges the LibreOffice community is facing wrt Hackfests and especially also tenders:

Status Quo

– due to a set of reasons based in the size of the project, the scope and selection of tender topics, the rules of properly running an NGO and the distibution of skilsets and available time in the BoD it is a lot harder to oversee the tenders for TDF than it would be for a for-profit organization.

– also, for historic reasons mostly, these tasks have been limited to the BoD mostly, while as an open disttributed and tranmsparent community we should not needlessly concentrate this work: rather the challenges and solutions should be shared as widely as possible in the community (and beyond).

– the waterfall modelled tenders have no iterative approach. Because of this they also tend to be mostly quite small, leading to significant overhead at both TDF and for the business implementing the tender.

– contracting out tender in bulk in a blackbox fashion naturally limits the ressources spend on documentation of discovered challenges. It thereby also needlessly limits the educational output to the community. There is such output, but it clearly could be better.

– beyond that we reduced doing Hackfests ~2 years ago, limiting the exchange of knowledge they provide.

– Unlike in the good old days, we dont have urgent infrastructual problems and the like to solve that would rally developers around topics. So motivation for certified devs to attend has shrunk. And those that do attend usually use the facetime for syncing on various issues, while the actual work on the code is somewhat limited. Even more when there is an emergency at the (professional) developers employer (Unfortunately, there often is.)

Suggested new format

So everyone hip in the last decade would see the words “waterfall”, “non-iterative”, “controlling overhead” would scream “get agile” from the top of their lungs. In general that might solve the practical problems, but as agile is essentially a way to move the customer in close enough to create the trust and bond allowing the overhead to go away, that is exactly what we need to watch out for and avoid: the foundation should not bind itself too close to any single commercial provider of services in its core operations.

But maybe revitalizing Hackfests are an opportunity here. Here is a suggested new format:

– TDF selects a small of the tenderable topics (6 man days)

– TDF selects a “product owner” for the topic (could be an TDF employee or a qualified and motivated TDF member)

– TDF hires 2 certified developers from LibreOffices companies for 3 days each

– TDF offers 2 days “development training” to its members, but also to the general community: ideally we select four people for this.

– All are invited to a two day Hackfest.

– Hired consultants are expect to pair program with one of the volunteers on each day, with the hired person not distracted by other business and doing the main effort with the paired volunteer focusing on learning.

– On each day, one of the hired developers works on the projector of the room, allowing other partcipants to the Hackfest to observe and learn.

– Closing the day, each paired team will give a 5-15 minutes lightning talk on their progress and challenges over the day. This presentation should be done by the paired volunteer to the best of their ability and recorded e.g. by TDF staff for publication.

– Rest of the extra booked day should be used for a 1-hour prep Hangouts, follow ups and overtime.

– Selected paired volunteers should ideally be 50% certified or uncertified developers and at least 25% volunteers active in non-development areas (e.g. documentation, l10n …).

– Beyond this, it will be a “normal” Hackfest allowing others to mix an mingle.

What this might solve (hopefully)
– Controlling and the need to proof due diligence going away as it is performed right in the open and self-documented, reducing the vast redtape needed to set up and run tenders in the first place

– the involving the broader community is much more involved in this major aspect of the foundations work

– the community gets a much better transparency on the real cost and challenges
of development

– we approach a more iterative/agile approach without being hit by the challenges this usually implies for an NGO

– we provide clear and visible progress and effort on education for the community and the general public

– we might help onboarding of new developers and make LibreOffice more interesting for contribution

– if this works on this 4-6 man day scale, we might consider extending it (e.g. a three developer week[1] with prep is already a 21 man day project)

There has already been some internal feedback from a smaller circle I shared this with first: There was some concern (one pointing out this new format isnt free of challenges[1], one asking for bigger steps as this proposal was considered to small/iterative[2]), but beyond that the feedback was generally quite positive.

As such, Im looking for people who would like to join in and help giving this new format a try: The starting point would be organizing a broad, welcoming and well-organized Hackfest at a location easily reachable for many in the community: Thus at well-connected place in europe. It should also have local people on the ground, who are enthusiastic to make this a success.

If you are interested in helping with this, either as:

– someone on the ground helping to organize the Hackfest

– someone who wants to pair program with a hired certified developer at a Hackfest

– someone who is just interested in joining the Hackfest in general

– someone who helps fleshing out the details of this idea

feel free to contact me. I will try to set up a team of people interested in getting this off the ground. As noted above, if this proves to be successful, this might be the start of something excited and big bringing this community and project to a new level!

Another (final) note: This list is currently unfortunately less used than it should be to provide information on the proceedings of the foundation. The Board is mindful of that and tries to change this. This is a start. Feel free to share this message to those in the community who might have missed it as they are not (yet) subscribed to board-discuss@.



[1] But neither is the status quo — in many more ways.
[2] note that the two kinds of criticism pointed in exactly opposite directions

If you are interested in this effort, feel free to:

UPDATE: Time and date for the call are set: Sunday 2017-09-03 14:30 UTC, Talkyoo room 21 24 86 #. Please join!

LibreOffice 5.2.3 as snap from Day One

Meist scheint manches auf den ersten Blick unmöglich.
Manches ist es auch, doch es wäre tödlich, das selbst zu glauben solange noch nichts feststeht
und die Party zu verlassen, bevor sie losgeht.

— Die Sterne, Stell die Verbindung her

Yesterday, two nice things happened: For one, LibreOffice 5.2.3 has been released and secondly Ubuntu Core 16 has been released. But beyond that, something in the middle between these two has happened: LibreOffice 5.2.3 has been released to the stable channel of the snap store at the same day. Now LibreOffice has been in the snap store for some time — and has also been on the stable channel since the Ubuntu 16.10 release. But this is the first time the LibreOffice snap is released in sync with The Document Foundation announcing the general availability of the final downloads. This was possible even though I was on vacation yesterday: LibreOffice snap packages are now being build on launchpad, which simplifies a lot, and launchpad can be asked to populate the edge channel of the store. This is making life very easy. Having smoketested the amd64 build from that channel before, to release LibreOffice 5.2.3 to the beta/candidate/stable channels too all I had to do was push three buttons on a web interface and it was available to all.

Building on launchpad, I also had the opportunity to create builds for armhf and i386 along with the usual amd64 builds with little extra effort. If you are adventurous you are encouraged to test these builds too: Be aware though that these so far aren’t even smoketested, I havent looked at them at all yet, so use them at your own risk.

All in all, this is great progress: LibreOffice 5.2.3 is available to users of Ubuntu 16.10 and Ubuntu 16.04 LTS as a snap on the day of the upstream release. And beyond that on all other distributions where snap is available — quite a few these days.

Update: ICYMI here is how to get the LibreOffice snap: http://www.libreoffice.org/download/snap/ — although strictly speaking you dont need the --channel=beta option anymore now. I will fix that soon.

Merging Communities

Come together, right now
— Beatles, Abbey Road, Come together

So September, 28th 2016 is the 6th birthday of LibreOffice and at the recent conference, we took a picture of those who were there on day zero:


As you might notice, I am not on that picture — on day zero I was working at Oracle, and were surprised by the news — like many others in this picture:


This is everyone at this years LibreOffice conference who used to work on the OpenOffice.org codebase at StarDivision, Sun or Oracle. A few people are in both pictures: Caolán McNamara and Thorsten Behrens were with LibreOffice from the start, but also worked at the OpenOffice.org team in Hamburg at some point in time. Of those working on OpenOffice.org still when LibreOffice started, I was the first to join LibreOffice — I had quit my job for that. It was an exciting time.

Looking back, both of these groups appear small — mostly because merging them, the LibreOffice community became so much more that the sum of its parts:


And of course, while a lot of people were at the conference, not everyone could
join, so there are more contributors from each of these groups than are in the
pictures. This years “state of the project” presentation showed again that the members of The Document Foundation are a truly worldwide community:


So, like the branches of the different descendants of OpenOffice.org, the
contributors and communities did come together in Brno to push
LibreOffice forward as one!

LibreOffice available in the snap store

‘Cause the players gonna play, play, play, play, play
And the haters gonna hate, hate, hate, hate, hate
— Taylor Swift, 1989, Shake It Off

The latest release candidate of the upcoming LibreOffice 5.2.0 feature release is available for installation from the snap store. This makes it very easy to install this prerelease of LibreOffice for testing out new features (an incomplete glimpse on what to look forward for can be found on the LibreOffice 5.2 release notes page, which is still under construction, go on #libreoffice-qa if you want to help with testing).

To install this build of LibreOffice on any snap supported platform just open a terminal and run:

sudo snap install --channel=beta libreoffice

To start this version of LibreOffice, you run:


The full path should only be needed, if you have another version of LibreOffice installed. If that is not the case a plain “libreoffice” should do.

Note that this version is still a prerelease and not for production use yet. That said, it is mostly a full-featured package including everything that would be packaged for end users of LibreOffice. While this package also includes a set of localizations to show that they work, their number has been restricted to English, French, German, Italian, Portuguese (Portugal/Brazil), Spanish for size considerations for now. This set is mostly the one Ubuntu provides on its installer images (removing those that might have issues as they need special fonts).

Another difference to prior downloads is that while LibreOffice still uses X11, now runs in confinement provided by snaps. Unlike previous releases on Ubuntu, this package defaults now to do so via the newer GTK3 backend: This has a lot of advantages, see details on Caolans Blog, but it is also a younger backend, that hasnt has that much time to be polished yet.