Older items: 2016: ( J F M A M J J A S ), 2015: ( J F M A M J J A S O N D ), 2013, 2013, 2012, 2011, 2010, 2009, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000, 1999, legacy html

Today we release LibreOffice 5.3.0, the next step in our journey: rich in features indeed - but (understandably) the media like to focus on the things you can see. What about the things you cannot ? the increasingly awesome underpinnings on which we're building the next round of improvements. Again - to see the pretty things people made and (more importantly) who did the heavy lifting checkout the user visible features from many great hackers, translators, UX designers etc. Here I am going to focus on the under-sung heros of making everything else better. There is an official 5.3 wiki page, but I expand on this and dive in more deeply here.

First apologies if I missed your good work; (and this is a very incomplete view based on a few hours of analysis) - please do add yourself to the wiki page and potentially mail me a unified diff to this; thanks ! It is only really possible to skim 9750 commits and nearly one hundred thousand lines of git log message across core and online - with:

26,080 files changed, 1,698,565 insertions(+), 361,298 deletions(-)

The last stubborn German comments

One thing that perplexes me about LibreOffice 5.3 is how we can have managed to translate 50,000 lines of German comments to English, but the last 3700 lines continue to defy us. Is it that people don't like finishing things ? Is it that the interest in comment translation is proportional to the number of remaining comments ? Seems unlikely - many of the remaning comments are in writer and calc. Either way - there is some lingering low-hanging glory for the person who can rid us of the last comments here ! Many thanks to Johannes Berg, Maarten Bosmans, Tor Lillqvist (Collabora), Julian Mehne and Albert Thuswaldner for taking on a few comments and to Phillip Szelat for updating the bin/find-german-comments tool.

A short list of strings to whet your appetite; please do help finally dispatch this gasping dragon if you're a native German speaker (or competent context reading programmer).

Crash Reporting

Markus Mohrhard's great work integrating a Breakpad based crash reporter has been extraordinarily useful. You can browse the crash reports here by version, and we've had over thirty crashreporter related fixes in 5.3 targetting particular issues. It is great to see commits like this that can quantify the win (20% of daily crashes in 5.2.0.4). We managed to nail lots of the most frequently reported issues soon after deploying the reporter.

Unfortunately, as Tomaz fixed another very long standing issue that was deadlocking the Windows clipboard code we managed to create a big spike in crashes (when exiting with a live clipboard) - this immediately jumped out of the stats:

Which allowed us to somewhat accelerate the next release containing a fix (hence 5.2.5.1 vs. 5.2.5.2). Markus also nailed a whole clutch of evil badness around processing of events during very late shutdown of LibreOffice that we hope will improve things still further.

Another curious issue is that Windows, even Windows 64bit has a fairly hard (for an ISV) limit of 10,000 gdi objects (should be enough for anybody) handles per process. This was leading to lots of extremely diverse symptoms - with inexplicable failure cases above the window abstraction. Thanks to Markus Morhard for adding the ability to report the number of open GDI handles to crash reports, and Kohei Yoshida (Collabora) for fixing a gratuitous consumer of these handles for 5.3.1.

Ongoing Code quality work

As always lots of work from many people

Coverity scan - our Coverity numbers continue to be outstanding, thanks to the hard work of Caolan McNamara with a nice round 256 commits in this release. Happily (or not) we upgraded coverity version, and found a new check - throwing up another 400 warnings just before the release.

- our Coverity numbers continue to be outstanding, thanks to the hard work of with a nice round 256 commits in this release. Happily (or not) we upgraded coverity version, and found a new check - throwing up another 400 warnings just before the release. cppcheck - some great cleanup work chewing through the latest cppcheck report with over 40 fixes thanks to Jochen Nitschke, Caolán McNamara (RedHat), Zolnai Tamás (Collabora), Julien Nabet and Muhammet Kara (Pardus)

- some great cleanup work chewing through the latest cppcheck report with over 40 fixes thanks to Enum scoping - Noel Grandin (Peralex) has had 180 commits cleaning up and making consistent our very many old, inconsistent & poorly scoped enumerations.

- has had 180 commits cleaning up and making consistent our very many old, inconsistent & poorly scoped enumerations. unique_ptr - lots of our code uses a pImpl pattern, thanks to Xisco Fauli, David Tardon, Arnold Dumas and others for cleaning this to use the safer unique_ptr template.

- lots of our code uses a pImpl pattern, thanks to for cleaning this to use the safer unique_ptr template. At many places, we were using own integer types instead of standard ones due to legacy. Many of them were cleaned up previously, but there are still various outstanding uses here and there. For 5.3, many of TCHARs / _tstring, sal_uIntPtr, or sal_Size uses were changed - thanks to Stuart Swales, Marian Scerbak, Michael Stahl and others .

instead of standard ones due to legacy. Many of them were cleaned up previously, but there are still various outstanding uses here and there. For 5.3, many of TCHARs / _tstring, sal_uIntPtr, or sal_Size uses were changed - thanks to . Google Fuzz - the lovely ossfuzz project is providing some great value to us thanks to Google, and also Caolan McNamara (RedHat) for getting LibreOffice integrated into their tooling.

- the lovely ossfuzz project is providing some great value to us thanks to Google, and also for getting LibreOffice integrated into their tooling. Clang Plugins - with 200 commits to the compilerplugins directory this series - we gained a number of Clang plugins checking corner cases, and enabling lots of cleanups. Overall this gave nearly 800 commits to the core fixing some auto-detected badness - from a who's who of Clang users - thanks to: Stephan Bergmann (RedHat), Noel Grandin (Collabora), Miklos Vajna (Collabora), Tor Lillqvist (Collabora), Caolán McNamara (RedHat), Michael Stahl (RedHat), Markus Mohrhard, Mike Kaganski (Collabora), Kohei Yoshida (Collabora), Jochen Nitschke and others The top plugins generating commits were: passstuffbyref, expandablemethods, singlevalfields, stringconstant, countusersofdefaultparams, staticmethods, redundantcast, cppunitassertequals, constantparam, unusedmethods.

- with 200 commits to the compilerplugins directory this series - we gained a number of Clang plugins checking corner cases, and enabling lots of cleanups. Overall this gave nearly 800 commits to the core fixing some auto-detected badness - from a who's who of Clang users - thanks to: The top plugins generating commits were: a script to sanity check library dependencies: check-elf-dynamic-objects was implemented - to ensure that we don't get unexpected and unhelpful new library dependencies in# release and bibisect builds on GNU/Linux thanks to Michael Stahl (RedHat)

library dependencies: was implemented - to ensure that we don't get unexpected and unhelpful new library dependencies in# release and bibisect builds on GNU/Linux thanks to Address & Undefined Behavior Sanitizers - its great to see more than sixty patches referencing ASan and UBSan - finding nasty memory issues faster.

- its great to see more than sixty patches referencing ASan and UBSan - finding nasty memory issues faster. Crash testing - continues across a growing suite of around 100k documents; thanks to the RedHat team for keeping the numbers consistently at or near zero.

Unit testing

As always we continue to grow our unit test count, and number of assertions (and assert calls). The tests are run by the Jenkins CI infrastructure on commits before they are merged. Thanks to so many for adding tests and stopping things from regressing particuarly those who had more than 20 commits to the unit tests: Zdeněk Crhonek, Miklos Vajna (Collabora), Stephan Bergmann (RedHat), Caolán McNamara (RedHat), Justin Luth (SIL), Eike Rathke (RedHat), Noel Grandin (Collabora), Armin Le Grand (CIB), Michael Stahl (RedHat)

And also to those with more than 10 commits to the unit tests:. It always takes more time to write a test, there is always a temptation not to - thank goodness they helped.

Thanks too to Michael Stahl (RedHat) for tackling a number of horrible threading races and mis-designs causing intermittent failure in our unit tests.

One notable improvement in 5.3 has been the work from Zdeněk Crhonek adding 280 or so nicely organized unit test sheets for each Calc function and some of its corner-cases to the tree, and even more encouraging to see these extended when bugs are fixed.

Another area that got a number of nice unit tests was the old-style Parser and new XFastParser implementations thanks to Mohammed Abdul Azeem laying the ground for our incremental adoption of the XFastParser for LibreOffice 5.4 for ODF formats. Great to write tests before the code.

UI Testing

Thanks to Markus Mohrhard and our generous donors we have a shiny new UI testing framework in LibreOffice 5.3. We even have tutorials ( part 1 and part 2) to help people add new tests. Checkout the code in uitest/ .

It is always good to see a whole new class of testing enabled, and provides a nice place for people comfortable with python to make a really important contribution.

Online

There were really a lot of changes in the LibreOfficeKit APIs and in the online code to interface with them; these two modules are tightly coupled. For details and credits I wrote most of this up for the CODE 2.0 release, around the time of the feature freeze.

Hardware Acceleration

A number of important fixes and performance improvements made their way into 5.3 (many of which are back-ported to 5.2 as well). We have used guards - which are created and destroyed in pairs around any OpenGL block - to catch buggy & crashing drivers inside those execution blocks, in order to disable OpenGL. In 5.3 these were adapted to OpenCL as well thanks to Tomaž Vajngerl (Collabora). In addition Michael Meeks (Collabora) added a test spreadsheet that is re-calculated using OpenCL whenever the driver changes - in order to catch badness in driver implementation - somewhat sad that these are necessary; it would be hoped that just asking a (software!) OpenCL driver for its version (to see if we can black-list it) would not hard-crash, but apparently that is too much to ask. Anyhow - now we cope well with lots of sub-optimal situations, and as such removed the legacy 'Test' button for manual CL driver selection.

The VCL / OpenGL backend got a large number of performance improvements from Tomaž Vajngerl (Collabora) including batch rendering of pixels, lines, rectangles and polylines and deferred texture rendering - these help to push more work to the GPU in one go improving performance.

Miscellaneous

Automatic screen-shotter - one of the problems of maintaining documentation in LibreOffice is that of taking UI screenshots and keeping them up-to-date for all languages. Thanks to Katarina "bubli" Behrens (CIB), Armin Le Grand (CIB), Thorsten Beherens (CIB) and our donors - we now have an automated tool for building screenshots. Checkout the documentation.

- one of the problems of maintaining documentation in LibreOffice is that of taking UI screenshots and keeping them up-to-date for all languages. Thanks to and our donors - we now have an automated tool for building screenshots. Checkout the documentation. Threading wins - we deprecated the grim old windows-like osl::Condition API in 5.3 in favour of the much more sensible (Unix like) std::condition_variable - which makes it easier to write safe code. Thanks to Stephan Bergmann (RedHat) for fixing a related Thread Pool thread-safety issue. Also to Kohei Yoshida (Collabora) for unwinding an underlying threading issue in our ZIP file handling hurting threaded XLSX import.

- we deprecated the grim old windows-like API in 5.3 in favour of the much more sensible (Unix like) std::condition_variable - which makes it easier to write safe code. Thanks to for fixing a related Thread Pool thread-safety issue. Also to for unwinding an underlying threading issue in our ZIP file handling hurting threaded XLSX import. gtk+3/Wayland - thanks to Caolan McNamara (RedHat) we have much improved gtk+3/wayland support in 5.3, one gem is OpenGL slide transitions.

- thanks to we have much improved gtk+3/wayland support in 5.3, one gem is OpenGL slide transitions. Improved MathML support thanks to Takeshi Abe who continues to do excellent maintenance and bug fixing work on our math component.

thanks to who continues to do excellent maintenance and bug fixing work on our math component. MS Office URI schemes - were added to much improve LibreOffice's integration with Windows web browsers and particularly Sharepoint for launching and editing documents thanks to Mike Kaganski (Collabora) .

- were added to much improve LibreOffice's integration with Windows web browsers and particularly Sharepoint for launching and editing documents thanks to . Firebird - it has been good to watch Wastack fixing lots of blocker bugs for us to be able to use the upgraded Firebird 3.0 as our default database engine in 5.4 with lots of great commits.

- it has been good to watch fixing lots of blocker bugs for us to be able to use the upgraded Firebird 3.0 as our default database engine in 5.4 with lots of great commits. Calc dynamic columns currently we have a fixed array of columns for each sheet; thanks to Dennis Francis we are creating a nice new encapsulations to eventually change this to a more powerful, and efficient sparse data structure.

currently we have a fixed array of columns for each sheet; thanks to we are creating a nice new encapsulations to eventually change this to a more powerful, and efficient sparse data structure. Thanks to Maarten Bosmans for moving rapidly from translating German comments to improving Calc style and formatting performance as well as fixing bugs.

for moving rapidly from translating German comments to improving Calc style and formatting as well as fixing bugs. Much improved Calc functions with many bug fixes and new functions thanks to Eike Rathke (RedHat), Winfried Donkers, and others.

with many bug fixes and new functions thanks to Significant interoperability wins thanks to Justin Luth who has tackled over eighty nasty bugs across DOC, DOCX and other formats.

thanks to who has tackled over eighty nasty bugs across DOC, DOCX and other formats. Android cleanups - its great to see lots and lots of code cleanups this cycle and many ongoing improvements with some great work from Aleksandar Stefanovic, Mert Tumer, Christian Lohmaier (TDF), Mirek Mazel and Otto Kekäläinen slowly making the app more polished.

QA / bugzilla

The QA team do a noble job struggling against great odds; you can see those doing the hugely valuable triage and fixing work in the QA stats for 5.3.0 wiki page. During this release cycle in August we had the pleasure of having Xisco Fauli join TDF - funded by our generous donors - to support and contribute to the QA team; their hard work together has got our UNCONFIRMED bug count way down - accelerating a vital feedback loop between users and developers.

Pootle upgrades

Pootle was upgraded this cycle bringing a wealth of improvements for our translators. From little things like allowing special characters in usernames, to major performance improvements allowing us to extract translations into our builds much more quickly. Other great features such as improved notifications with feedback on changes, off-line translation memory are much appreciated. Thanks to Dwayne Bailey (TranslateHouse) and our sysadmin team.

LibreOffice depends on many 3rd party libraries. To stay up-to-date, they have to be updated from time to time, their patches re-evaluated (ideally up-stream merged them) and they need re-testing. For 5.3, the following were updated:

boost : Removed headers that are not used any more, and many more cleanups(Michael Stahl, Stephan Bergmann)

: Removed headers that are not used any more, and many more cleanups(Michael Stahl, Stephan Bergmann) libxslt : Updated, and removed some LibreOffice-specific patches (Michael Stahl)

: Updated, and removed some LibreOffice-specific patches (Michael Stahl) libzmf : Integrated, to support import of Zoner Callisto/Draw documents (Aleksas Pantechovskis)

: Integrated, to support import of Zoner Callisto/Draw documents (Aleksas Pantechovskis) libxmlsec : Upstreamed more LibreOffice patches and updated to new version (Miklos Vajna)

: Upstreamed more LibreOffice patches and updated to new version (Miklos Vajna) Added or updated fonts (Akshay Deep, Andras Timar)

libstaroffice : Integrated library to support the old StarOffice file formats.

: Integrated library to support the old StarOffice file formats. firebird : Updated to Firebird 3.0 (Wastack, Lionel Elie Mamane, Caolán McNamara)

: Updated to Firebird 3.0 (Wastack, Lionel Elie Mamane, Caolán McNamara) harfbuzz : Updated to new version, and enabled to be built with Graphite support (Khaled Hosny)

: Updated to new version, and enabled to be built with Graphite support (Khaled Hosny) libmwaw, mdds, nss, curl, poppler, cairo, pixman, openldap, redland, orcus, liblangtag, libwps, icu, libmwaw: Updated to the latest versions (David Tardon, Kohei Yoshida, Caolán McNamara, Jochen Nitschke, Michael Stahl, Jaskaran Singh, Eike Rathke)

Getting involved

Lots of fun stuff going on at LibreOffice - quite apart from the visible feature development. Its a great place to find a home and contribute. If you want to get involved there are plenty of great people to meet and work alongside - come and see us at FOSDEM for example this weekend. As you can see individuals ('Assigned') make a huge impact to the diversity of LibreOffice.

In terms of diversity of code commits, we love to see the unaffiliated volunteers contribution by volume, though clearly the volume and balance changes with the season, release cycle, and volunteers vacation / business plans:

Naturally we maintain a list of small, bite-sized tasks which you can use to get involved at our Easy Hacks page, with simple build / setup instructions. It is extremely easy to build LibreOffice, each easy-hack should have code pointers and be a nicely self contained task that is easy to solve. In addition some of them are really nice-to-have features or performance improvements. Please do consider getting stuck in with something.

Another thing that really helps is running pre-release builds and reporting bugs just grab and install a pre-release and you're ready to contribute alongside the rest of the development team.

Conclusion

LibreOffice 5.3 is great; it is made by a set of developers having fun, working together, and building an increasingly attractive and beautiful Free Software Office suite, I hope you enjoy using it. Thanks for reading, don't forget to checkout the user visible feature page and thank you for supporting LibreOffice.

Raw data and commit stats built using our gitdm-config - are available for many of the above graphs.