The Document Foundation Planet


October 19, 2020

Official TDF Blog

Community Member Monday: Marcin Popko

Today we’re talking to Marcin Popko, who is helping to grow the LibreOffice community in Poland…

Hey Marcin! Tell us a bit about yourself…

Hello! I’m from Bialystok, a city in north-east Poland. I work as an electromagnetic compatibility tester – it’s a seriously crazy and interesting area of electronics development. I’m quite an artist soul; in my free time I dance bachata and sing in a folk band called “Kurpie Zielone”. I also write a blog about dance, emotions and technology here.

What is the free software/Linux/LibreOffice scene like in Poland?

FLOSS (free/libre and open source software) has rather more awareness in geeky and technological domains, than in everyday normal life. LibreOffice is not well know among my friends – some of them are using Microsoft Office, and some of them are even using OpenOffice. So that’s my mission here: inform them :-) Companies use LibreOffice when they can’t afford Microsoft Office or when it’s not seriously needed.

You’ve recently been running Polish LibreOffice social media. How did that get started, and how has it developed?

If found a blog post about abandoned native language projects and social media sites, wrote an e-mail to the mailing list, and there I started working with Mike Saunders from The Document Foundation.

We couldn’t reach the the existing administrator of the old Polish LibreOffice fanpage, so we decided to create a new one. Then I also added a Twitter account. Step-by-step, I did surveys about our community, and I wrote articles on Polish technology sites about the current LibreOffice situation, like this one.

Then we reached 150 fans on Facebook, and I ran a sticker giveaway – thanks to Mike and TDF I can pass these stickers on to the community. We’ve also prepared a new official Polish LibreOffice site (the old one has corrupted download links).

Any tips for other people who want to start LibreOffice/FOSS social media in other countries/languages?

If you don’t know something, don’t be afraid to ask anyone from the LibreOffice community. People are helpful there and they redirect you to appropriate place if you get lost.

Many thanks to Marcin for his superb work and help! And for everyone reading this who wants to start (or expand) social media in more languages, get in touch and we’ll assist you along the way. You can gain valuable experience running social media, and of course it helps to spread the word about LibreOffice too!

by Mike Saunders at October 19, 2020 01:36 PM

Marius Popa Adrian

Python 3 Firebird-driver & Firebird-lib 1.0.0 released

The firebird-driver package provides official Python Database API 2.0-compliant driver. In addition to the minimal feature set of the standard Python DB API, this driver also exposes the new (interface-based) client API introduced in Firebird 3, and number of additional extensions and enhancements for convenient use of Firebird RDBMS. The driver is written as pure-Python package (requires Python

by Popa Adrian Marius ( at October 19, 2020 07:26 AM

October 18, 2020

Michael Meeks

2020-10-18 Sunday

  • Up early, family worship, sermon on Daniel 3, pizza lunch. H's friends over in the evening at the house.

October 18, 2020 09:00 PM

October 17, 2020

Michael Meeks

2020-10-17 Saturday

  • Drilled a hole in tarmac & hardcore with Pete's diamond core, cut up a scaffold pole & set it into the ground with resin from Mark; great to see M&M's surfacing work.
  • Toiled away at slideware on & off:
  • Helped E. with her maths revision & homework, and H. with her Oxford test preparation. Bed, tired.

October 17, 2020 09:00 PM

October 16, 2020

Michael Meeks

2020-10-16 Friday

  • Mail chew; admin - worked away at historic slideware, lots of digging through old blogs.

October 16, 2020 09:00 PM

Miklos Vajna

OOXML / PDF Digital Signing in Draw and elsewhere conference talk

Today I gave a OOXML / PDF Digital Signing in Draw and elsewhere talk at the LibreOffice Conference 2020. The (virtual) room was well-crowded — somehow people find digital signatures interesting. ;-)

It contains an overview of the ODF/OOXML/PDF signing feature set and also details the latest improvements, like visible PDF signing.

I expect quite some other slides from other Collaborans and the wider community will be available on Planet, don’t miss them.

You can get a snapshot / demo of Collabora Office and try the presented features out yourself right now: try unstable snapshot. Collabora intends to continue supporting and contributing to LibreOffice, the code is merged so we expect all of this work will be available in TDF’s next release too (7.1).

by Miklos Vajna at October 16, 2020 03:53 PM

October 15, 2020

Michael Meeks

2020-10-15 Thursday

  • Took babes to school, poked slides, gave keynote at the great openSUSE / LibreOffice conference.
  • Pleased to see lots of good talks left & right.

October 15, 2020 09:00 PM

October 14, 2020

Michael Meeks

2020-10-14 Wednesday

  • Mail chew; plugged away at slides, board call, board+MC+team call with an interesting new discussion tool. Lots of resin mixed with small gravel put down opposite, in the rain.

October 14, 2020 09:00 PM

October 13, 2020

Tomaž Vajngerl

PDF annotations support

In Draw, a PDF document can be opened using the PDFium library for rendering, where each page in the Draw document contains an rendered image from the PDF. This mode is useful for viewing PDFs and allows for the best fidelity. With viewing, there is also a need to review and comment and this is where PDF annotations come in as adding the support for the PDF annotations and to support a review based workflow has been one of my recent task at Collabora Productivity.

PDF supports a wide variety of annotations, but we don't support all of them in Draw. What we do support are comments, which are similar to pop-up note annotations in PDF, so the easiest is to add those first. To be able to use pop-up notes in Draw, we need to import them. This is done at import by using PDFium after we created the PDF graphic for rendering. In Draw, we then insert this as comments and so we get the basic support for manipulating with annotations, but how to save the changes? PDF export already supports saving comments as annotations, so this mostly already works (I needed to fix some bugs and add support for saving all needed properties).

Figure 1. Pop-up Note annotation in PDF viewer (Evince) and Draw

How the output compares between a PDF viewer and inside LibreOffice can be seen in Figure 1. All this is available in LibreOffice master and should be included in LibreOffice 7.1.

What about other annotations that are supported in PDF? The work to add those is ongoing and the recent success has been adding support to draw vector graphic annotations like polygon, ink (freehand), squares (rectangles) and circles (ellipses). So the idea is that instead of the usual marker for a comment, we draw a vector graphic that we read from the PDF annotation. 

The first thing I needed to do is to extend the PDFium library, which didn't support reading all polygon vertices and ink strokes from the document. What also wasn't supported is reading the border information, which is needed for line widths.

Next thing is extending the import to read the geometry data, so I dded a special PDFAnnotationMarker class for that. Then the geometry data needs to be stored on the sd::Annotation class (implementation of XAnnotation, but I didn't extend XAnnotation at this point as it wasn't needed - yet) . Drawing is performed in AnnotationTag, where we create a new OverlayPolyPolygon object, that is responsible for creating the Primitive2D for the marker. What we get after this is done is shown in figure 2.


Figure 2. Multiple annotations in PDF Viewer and Draw

This work will shortly be merged to the LibreOffice master. 

by Tomaž Vajngerl ( at October 13, 2020 09:36 PM

October 12, 2020

Official TDF Blog

Open Letter to Apache OpenOffice

Today marks 20 years since the source code to OpenOffice was released. And today we say: LibreOffice is the future of OpenOffice. Let’s all get behind it!

It’s great to have a rich and diverse set of free and open source software projects. Hundreds of millions of people around the world have benefited from the choice and customisation that they bring. But sometimes, users can lose out when they’re not aware of newer alternatives, or when one brand overshadows another.

OpenOffice(.org) – the “father project” of LibreOffice – was a great office suite, and changed the world. It has a fascinating history, but since 2014, Apache OpenOffice (its current home) hasn’t had a single major release. That’s right – no significant new features or major updates have arrived in over six years. Very few minor releases have been made, and there have been issues with timely security updates too.

In recent years, almost all development activity has taken place in LibreOffice, with 13 major releases and 87 minor releases. In 2019, LibreOffice had over 15,000 code commits, while OpenOffice had only 595. LibreOffice has a flourishing community, yearly conferences, professional support options, development and migration certification, and a robust commercial ecosystem.

In addition, LibreOffice has integrated many features essential for end users in 2020:

  • Export in Microsoft Office OOXML formats (.docx, .xlsx etc.)
  • ODF, OOXML and PDF signing for improved security
  • Major performance improvements in Calc, the spreadsheet
  • A fresh new NotebookBar user interface
  • …and a lot more

But still, many users don’t know that LibreOffice exists. The OpenOffice brand is still so strong, even though the software hasn’t had a significant release for over six years, and is barely being developed or supported.

If Apache OpenOffice still wants to maintain its old 4.1 branch from 2014, sure, that’s important for legacy users. But the most responsible thing to do in 2020 is: help new users. Make them aware that there’s a much more modern, up-to-date, professionally supported suite, based on OpenOffice, with many extra features that people need.

We appeal to Apache OpenOffice to do the right thing. Our goal should be to get powerful, up-to-date and well-maintained productivity tools into the hands of as many people as possible. Let’s work together on that!

The Board of Directors at The Document Foundation

Update: Discussion on Reddit and LWN

by Mike Saunders at October 12, 2020 10:01 PM

LibreOffice Impress Template Contest by the Indonesian Community

Ahmad Haris writes:

Last month, LibreOffice Indonesia held an Impress Template Contest and today we announced the results. There are several items for prizes, such as ARM Mini PC and shoes, sponsored by FANS Shoes Factory.

The main goal of this contest is to get more people active in the community, design good Impress templates, and if possible, change the old default templates with the new ones. Most of the participants are from the younger generation (since in our group, only fewer than than 10 members from 739 are older than me).

Thanks to Haris and the whole Indonesian community for their great work! The templates are available on the website here.

by Mike Saunders at October 12, 2020 01:19 PM

Rizal Muttaqin

Neo Colibre for Maximum Productivity

Having fun everyone. I wish you are all doing good in this tough time.

It was Adolfo who complaint about Colibre's failure to accomplish WCAG contrast guideline. He said the colors are too faint and everything looks washed out. Furthermore, MS Office 365 has since moved those colors to a brand new monoline style iconography. See this bug report for details

So I took the chance to update this Windows default icon theme. Luckily, the icon theme comes with SVG version, I can easily use bash script to automate a neccessary color conversion, and take the rest manually. In one month, I finally managed to finish this "Neo" Colibre. Hopefully this will benefit the largest LibreOffice user platform (approximately more than ~80%).

Here you can see side by side comparison to see the improvement (click to enlarge then right click > "View Image" for Firefox, right click > "Open image in a new tab" for Chrome for maximum appearance)

Start Center

Standard User Interface







Tabbed User Interface
















3D Settings

By God will, this will be available in 7.0 release. You can try it earlier from my github repo as an extension (make sure your LibO version equal or greater than 6.0):

by rizmut ( at October 12, 2020 06:57 AM

October 11, 2020

Roman Kuznetsov

Great merged cells filling improvements in LibreOffice 7.1

Attila Szűcs, one from hungarian LibreOffice developers (he's from NISZ team) made great improvements for work with merged cells.

I'll show you pair of images for illustrate it (left - 7.0, right - 7.1):


Select three cells, merge it (as shown on left image) and then try drag-fill columns down. A result was strange and very unexpected. Now in 7.1 it works as users wanted last 8 year, look at right image. It works for filling in to any direction!

Go further:

If you want to have merged cells with some number sequences, then you got a result as on left image above (Merge A1 with A2 and A3 with A4, type 1 into first merged cells and 2 into second, select both and try fill cells down). But now in 7.1 all work as users could expect! Look at a right image above.

It's really great, right?

by Roman Kuznetsov ( at October 11, 2020 01:54 PM

October 08, 2020

Official TDF Blog

Announcement of LibreOffice 7.0.2

Berlin, October 8, 2020 – LibreOffice 7.0.2, the second minor release of the LibreOffice 7.0 family, targeted at technology enthusiasts and power users, is now available for download from LibreOffice 7.0.2 includes over 130 bug fixes and improvements to document compatibility.

The most significant new features of the LibreOffice 7.0 family are: support for OpenDocument Format (ODF) 1.3; Skia graphics engine and Vulkan GPU-based acceleration for better performance; and carefully improved compatibility with DOCX, XLSX and PPTX files.

LibreOffice offers the highest level of compatibility in the office suite arena, starting from native support for the OpenDocument Format (ODF) – with better security and interoperability features – to wide support for proprietary formats.

LibreOffice 7.0.2 represents the bleeding edge in term of features for open source office suites. Users wanting the robustness of a more mature version optimized for enterprise class deployments can still download LibreOffice 6.4.6.

For enterprise class deployments, TDF strongly recommends sourcing LibreOffice from one of the ecosystem partners, to get long-term supported releases, dedicated assistance, custom new features and other benefits, including SLAs (Service Level Agreements):

Support for migrations and training should be sourced from certified professionals who provide value-added services which extend the reach of the community to the corporate world. Also, the work done by ecosystem partners flows back into the LibreOffice project, and this represents an advantage for everyone.

LibreOffice – thanks to its mature codebase, rich feature set, support for open standards, excellent compatibility and long-term support options – represents the ideal solution for businesses that want to regain or keep control of their data and free themselves from vendor lock-in.

LibreOffice individual users are supported by a global community of volunteers: On the website and the wiki there are guides, manuals, tutorials and HowTos. Donations help us to make all of these resources available.

LibreOffice users are invited to join the community at, where they can get and provide user-to-user support. People willing to contribute their time and professional skills to the project can visit the dedicated website at

LibreOffice users, free software advocates and community members can provide financial support to The Document Foundation with a donation via PayPal, credit card or other tools at

Availability of LibreOffice

LibreOffice 7.0.2 and 6.4.6 are immediately available from the following link: Minimum requirements are specified on the download page. LibreOffice Online source code is available as Docker image:

LibreOffice 7.0.2’s change log pages are available on TDF’s wiki: (changed in RC1) and (changed in RC2).

All versions of LibreOffice are built with document conversion libraries from the Document Liberation Project:

by Italo Vignoli at October 08, 2020 11:19 AM

October 07, 2020

LibreOffice QA Blog

QA/Dev Report: September 2020

General Activities

  1. LibreOffice 7.0.1 was released on September 03
  2. Ivan Stefanenko (Collabora) made improvements to the PDF accessibility checker
  3. Seth Chaiklin made improvements to the UX of menu and toolbar controls
  4. Tomofumi Yagi fixed a performance issue when editing with external tool and made Calc and Writer able to correctly import text in UTF-8 encoding without BOM
  5. Attila Szűcs and Tibor Nagy (NISZ) fixed longstanding issues with Calc’s drag-fill functionality, a frame width issue in DOCX files, missing AutoFilter button with XLSX export, vertical image alignment relative to bottom margin in DOCX import and invalid detective marks cells in XLSX import
  6. Szabolcs Tóth and Regényi Balázs (NISZ) fixed problems with shapes in DOCX/XLSX export, made it so word-wrapped textboxes are imported correctly in the case of DOCX files, fixed missing overflow properties of textboxes in exported XLSX files and made it so tracer arrows (Tools – Detective) are not needlessly exported in XLSX files
  7. Björn Michaelsen continued internal improvements to Writer
  8. Mike Kaganski (Collabora) improved the rounding of decimal numbers when drag-filling in Calc and made code cleanups and optimisations
  9. Szymon Kłos (Collabora) made improvements to Notebookbar and Styles preview
  10. Michael Stahl (CIB) fixed Writer regressions related to undo, bookmarks, tables, text wrapping and input fields
  11. Daniel Arato (NISZ) made lots of refactoring in Writer’s export tests and fixed issues with DOCX OLE object import/export
  12. Miklos Vajna (Collabora) made it so Writer always defaults to UI locale when no language is defined for the document, improved embedded object HTML export support, made the handling of Tab key presses in numbered lists more intuitive, greatly improved the speed of importing embedded EMF files in certain cases, improved the SmartArt support for PPTX files
  13. Olivier Hallot (TDF) added extended tooltips to the UI and added many missing topics to Help content
  14. Seth Chaiklin added help for Expert Configuration and updated control names on Rotation help page
  15. Adolfo Jayme Barrientos improved the CSS styles of Help content and made cleanups in Help files
  16. Xisco Faulí (TDF) added dozens of UI and cppunit tests and improved existing tests. He also added support for testing the jumbosheets and the layout in Impress
  17. Stephan Bergmann (Red Hat) made renovations in the internal handling of strings. He also made many cleanups as well as build and test fixes
  18. Caolán McNamara (Red Hat) fixed old crashes when saving a POTX file, when undoing & redoing comment resolution and when viewing a slideshow with hidden slides. He fixed deleting all comments after formatting all comments, improved the performance of Calc’s autofilter dialog and made it so highlight colour is shown in style previews. He also continued the crucial user interface backend work and did many cleanups and crash fixes
  19. Justin Luth (Collabora/SIL) fixed DOC table import issues, made it so setting contour for an object does not change wrap setting, fixed the generating of styles with DOCX export
  20. Luboš Luňák (Collabora) continued polishing the Skia graphics engine integration
  21. Noel Grandin (Collabora) made many code cleanups, continued Calc jumbo sheet work and made Writer find & replace faster
  22. László Németh (NISZ) fixed some DOCX table import issues
  23. Attila Bakos (NISZ) fixed a couple of OOXML OLE object export issues
  24. Tor Lillqvist (Collabora) worked on the iOS app and did code cleanups
  25. Balázs Varga (NISZ) fixed some OOXML chart issues
  26. Pranam Lashkari (Collabora) added commands to resolve and delete Writer comment threads
  27. Luke Dixon fixed a crash when entering a newline in experimental Math editor and an issue with cursor position in the Math editor
  28. Jim Raykowski continued polishing the outline folding feature, made it so Writer’s “Find All” highlights the selected elements in Navigator Content View and added new UNO commands for Zoom in/out
  29. Andreas Kainz improved Sidebar element alignment and positioning, polished the new Additions dialog, added Shapes sidebar deck into Impress and made various other UI/dialog tweaks
  30. Julien Nabet made many code cleanups
  31. Regina Henschel fixed implementation errors in chart data label borders
  32. Rizal Muttaqin made several improvements in the icon themes
  33. Tomaž Vajngerl (Collabora) improved PDF annotation import support and made code cleanups
  34. Maxim Monastirsky improved extension menu functionality, fixed saving icons in custom toolbars and fixed displaying menu icons in GTK3 UI
  35. Jürgen Funk (CIB) fixed showing bogus pages numbers in printing progress dialog on Windows
  36. Serge Krot (CIB) fixed a sheet reference error related to cell validation in XLSX export, implemented support for custom lists in XLSX import and made Java load faster
  37. Martin van Zijl fixed media player pausing when pressing time slider, made shift-click in Writer support decreasing selection and added buttons to remove conditions in the Calc standard filter dialog
  38. Gábor Kelemen (NISZ) fixed a couple of accessibility warnings, dropped useless Format – Spacing menu from Calc and fixed Pie and Donut chart appearing as mirred in OOXML export
  39. Áron Budea (Collabora) made Styles Inspector show paragraph formatting and document language
  40. David Alan Gilbert improved CPU feature detection in cppunit tests
  41. David Tardon (Red Hat) restored support for PocketWord files
  42. Felix Wiegand made it so real numbers are correctly parsed from imported PDFs
  43. Heiko Tietze (TDF) made it so distribution options have individual UNO commands
  44. Eike Rathke (Red Hat) improved the Calc MATCH function’s handling of array formulas, made Calc name box display the assigned names of ranges and improved localised formula support
  45. Jan-Marek Glogowski added support for Windows Arm64 builds, streamlined Windows build setup, fixed missing embedded fonts in PDFs with Qt5 UI
  46. Tünde Tóth (NISZ) improved chart data label functionality

Reported Bugs

801 bugs, 87 of which are enhancements, have been reported by 406 people.

Top 10 Reporters

  1. Telesto ( 161 )
  2. NISZ LibreOffice Team ( 25 )
  3. Xisco Faulí ( 21 )
  4. Timur ( 14 )
  5. medmedin2014 ( 14 )
  6. sawakaze ( 13 )
  7. Regina Henschel ( 13 )
  8. R. Green ( 10 )
  9. andreas_k ( 10 )
  10. Christian Lehmann ( 7 )

Triaged Bugs

813 bugs have been triaged by 105 people.

Top 10 Triagers

  1. BogdanB ( 108 )
  2. Heiko Tietze ( 97 )
  3. Buovjaga ( 65 )
  4. Timur ( 53 )
  5. Xisco Faulí ( 47 )
  6. Dieter ( 39 )
  7. Julien Nabet ( 39 )
  8. Telesto ( 37 )
  9. Roman Kuznetsov ( 26 )
  10. Alex Thurgood ( 22 )

Resolution of resolved bugs

767 bugs have been set to RESOLVED.

Check the following sections for more information about bugs resolved as FIXED, WORKSFORME and DUPLICATE.

Fixed Bugs

254 bugs have been fixed by 46 people.

Top 10 Fixers

  1. Caolán McNamara ( 40 )
  2. Olivier Hallot ( 10 )
  3. Noel Grandin ( 10 )
  4. Luboš Luňák ( 10 )
  5. Justin Luth ( 8 )
  6. Eike Rathke ( 7 )
  7. László Németh ( 7 )
  8. Miklos Vajna ( 7 )
  9. Balazs Varga ( 6 )
  10. Michael Stahl ( 6 )

List of high severity bugs fixed

  1. tdf#118002 Crash in: ntdll.dll saving POTX file ( Thanks to Caolán McNamara )
  2. tdf#118148 [NEWHELP] Handle tags in the UI ( Thanks to Olivier Hallot )
  3. tdf#123355 FILEOPEN DOCX BELOW/LEFT/RIGHT/ABOVE table formula is not working in LO ( Thanks to László Németh )
  4. tdf#125234 qt5: exported PDf file misses embedded fonts with vcl=qt5 ( Thanks to Jan-Marek Glogowski )
  5. tdf#133327 Calc only saves background color up to column BL for additional row of the same background color with empty row in between ( steps on comment 16 ) ( Thanks to Noel Grandin )
  6. tdf#133358 Crash in: sw::GetParaPropsNode ( Thanks to Caolán McNamara )
  7. tdf#134351 Wrong Auto Filter Result if all the records are selected ( Thanks to Xisco Fauli )
  8. tdf#135682 EDITING: If a table is the first element of the document, “Select All” does not select all ( Thanks to Miklos Vajna )
  9. tdf#135950 Immediate CRASH: Highlight multiple cells in a Writer table and select FORMAT -> CHARACTER ( Thanks to Caolán McNamara )
  10. tdf#136442 Crash when opening Data Sources in a particular document ( Thanks to Caolán McNamara )
  11. tdf#136471 Applying a spell checker suggestion adds the result also to the autocorrect replacement list (since 7.0) ( Thanks to Tamás Zolnai )
  12. tdf#136933 Impress remains stuck Linux in advancing to the next slide in presentation mode ( Thanks to Luboš Luňák )
  13. tdf#136949 It shows unnessesary border lines in Impress table’s merged cells ( Thanks to Xisco Fauli )
  14. tdf#40993 Calc: Pulling down formula over merged cells unmerges them ( Thanks to Attila Szűcs )
  15. tdf#45705 New UNO commands for “Zoom in” and “Zoom out” of document canvas, to support keyboard zoom (comment 21) ( Thanks to Jim Raykowski )

List of crashes fixed

  1. tdf#118002 Crash in: ntdll.dll saving POTX file ( Thanks to Caolán McNamara )
  2. tdf#133358 Crash in: sw::GetParaPropsNode ( Thanks to Caolán McNamara )
  3. tdf#135950 Immediate CRASH: Highlight multiple cells in a Writer table and select FORMAT -> CHARACTER ( Thanks to Caolán McNamara )
  4. tdf#136189 Crash rejecting track and changes sorted by author ( Thanks to Caolán McNamara )
  5. tdf#136319 CRASH: Changing colour of shape (gtk3 only) ( Thanks to Caolán McNamara )
  6. tdf#136323 LibreOffice crash ASSERT: “object == obj” in qaccessiblecache.cpp, line 122 ( Thanks to Michael Weghorn )
  7. tdf#136326 Crash in About dialog with SKIA Linux ( Thanks to Luboš Luňák )
  8. tdf#136430 Crash when tying to move chart data label ( Thanks to Balazs Varga )
  9. tdf#136442 Crash when opening Data Sources in a particular document ( Thanks to Caolán McNamara )
  10. tdf#136545 CRASH: Running presentation (gen) ( Thanks to Caolán McNamara )
  11. tdf#136667 Crash when opening file with change tracked floating table ( Thanks to László Németh )
  12. tdf#136678 Crash deleting page break ( Thanks to Caolán McNamara )
  13. tdf#136985 Crash after resolving comment, undoing and opening redo steps ( Thanks to Caolán McNamara )
  14. tdf#137008 mml crash on load ( Thanks to Noel Grandin )
  15. tdf#137016 Crash in:, when EDITING Relationships ( Thanks to Caolán McNamara )
  16. tdf#137038 UI: Crash reporter dialog size is relatively large for German language ( Thanks to Caolán McNamara )

List of performance issues fixed

  1. tdf#119286 Sanitize documents using “Find & Replace” getting slower and slower ( Thanks to Noel Grandin )
  2. tdf#136238 Deleting a very very large cross page table (26 pages) very very slow ( Thanks to Noel Grandin )
  3. tdf#136240 File Opening ODT: Slow opening (polypolygon issue) (Skia Raster/Vulkan) ( Thanks to Luboš Luňák )
  4. tdf#136244 Zoom in/out on a document with picture slow with Raster & GDI (fine with Vulkan) ( Thanks to Luboš Luňák )
  5. tdf#136836 EMF import from PPTX: visual problems with large image ( Thanks to Miklos Vajna )

List of old bugs ( more than 4 years old ) fixed

  1. tdf#40993 Calc: Pulling down formula over merged cells unmerges them ( Thanks to Attila Szűcs )
  2. tdf#43958 EDITING: Dashed border (CTRL+c) does not cover whole merged cell ( Thanks to Attila Szűcs )
  3. tdf#45705 New UNO commands for “Zoom in” and “Zoom out” of document canvas, to support keyboard zoom (comment 21) ( Thanks to Jim Raykowski )
  4. tdf#49856 FILESAVE FILEOPEN EDITING Shift+Tab indented bullet indents further ( Thanks to Dr. David Alan Gilbert )
  5. tdf#53431 FILTER: fill down a cell with Autofilter arrow box cause duplication of arrow box ( Thanks to Attila Szűcs )
  6. tdf#54912 BASIC: Array function forces the lower boundary for arrays as 0 in spite of option base 1 ( Thanks to Andreas Heinisch )
  7. tdf#59585 EDITING: Enhancement request: Create merged cells by dragging the handle ( Thanks to Attila Szűcs )
  8. tdf#64711 Impress is closed on slide show with all hidden slides in presentation or group ( Thanks to Caolán McNamara )
  9. tdf#67007 UI: Name Box does not show a name in sheet scope when selecting a range ( Thanks to Eike Rathke )
  10. tdf#69908 Expert Config and help on configuration options ( Thanks to Seth Chaiklin )
  11. tdf#77007 FILEOPEN: User asked to save changes upon exit from unmodified XLS file (because of chart) ( Thanks to Mike Kaganski )
  12. tdf#77236 FILESAVE: DOCX: Shape color changed to white after roundtrip ( Thanks to Regényi Balázs )
  13. tdf#80526 FILEOPEN: DOCX textbox “Word Wrap text in shape” property not imported correctly (

by x1sc0 at October 07, 2020 12:21 PM

October 06, 2020

Official TDF Blog

Get cool merchandise for upcoming openSUSE + LibreOffice Conference

The joint openSUSE + LibreOffice Virtual Conference 2020 will take place from October 15 – 17. And there’s lots going on! We’ll have talks, presentations, keynotes, tutorials and much more – see the full schedule for all the details.

And there’s more: we’ve got merchandise too! Get prepared for the conference with a T-shirt, hoodie, bag or baseball cap, and help to support The Document Foundation, the non-profit entity behind LibreOffice.

We look forward to seeing you at the conference!

by Mike Saunders at October 06, 2020 08:48 AM

October 02, 2020

Miklos Vajna

SmartArt improvements in Impress, part 6

Impress now has support for an improved auto-fit-of-text layout across multiple shapes, also the snake algorithm now handles width requests from constraints much better for SmartArt graphics from PPTX files. This builds on top of the previous improvements around SmartArt support.

First, thanks to our partner SUSE for working with Collabora to make this possible.


SmartArt allows declaring your content and requirements for a graphic, then the layout will take care of arranging that in a suitable way. It is allowed to ask for an automatic font size, which is small enough so that all the content fits into the shape. At the same time, you can ask that the font size is the same in multiple shapes. Impress lacked the ability to do the latter, leading to different font sizes in different shapes, all automatic inside a single shape.

Results so far

Here is how the automatic text scaling across multiple shapes works in practice:
Figure 1. Autofit synchronization, new output
Figure 2. Autofit synchronization, old output
Figure 3. Autofit synchronization, reference output

You can see how the old output used to have unexpected large text in shape A, but now has the same text size as shape B. This is not applied unconditionally, shape C can request to have an independent, fixed font size.
Figure 4. Snake rows, new output
Figure 5. Snake rows, old output
Figure 6. Snake rows, reference output

You can see that the old output laid shapes all over the place, while the new output puts them to a 3 by 2 matrix. The reason this works is because now we parse width requests from constraints correctly. This means we give spacings a smaller width, real shapes a larger width, so the content fits in less rows and the layout looks like a grid, matching the reference rendering.

How is this implemented?

If you would like to know a bit more about how this works, continue reading… :-)

As for the autofit synchronization:

Beyond that, for the snake rows:

Want to start using this?

You can get a snapshot / demo of Collabora Office and try it out yourself right now: try unstable snapshot. Collabora intends to continue supporting and contributing to LibreOffice, the code is merged so we expect all of this work will be available in TDF’s next release too (7.1).

by Miklos Vajna at October 02, 2020 12:21 PM

September 22, 2020

Marius Popa Adrian

Firebird driver for Python 3– release 0.8.0

The driver is no longer beta, and is now considered as stable for Firebird 3.0 (support for Firebird 4 is still evolving till final release). Documentation is now complete.ChangeLog:Documentation, both in code and separate (especially Usage Guide).Added support for new FB4 data types in ARRAY fields.Refactoring in driver hooks.New Cursor.call_procedure() method.Refactoring and fixes in Server and

by Popa Adrian Marius ( at September 22, 2020 06:54 AM

September 21, 2020

Marius Popa Adrian

New Flamerobin snapshot available! with a few fixes and small features

New Flamerobin snapshot available! with a few fixes and small features a look, test and comment!

by Popa Adrian Marius ( at September 21, 2020 06:58 PM

September 20, 2020

Björn Michaelsen

The great filter of open source projects

This is how you make yourself vanish into nothing
— 24 frames, Something More Than Free, Jason Isbell and the 400 unit

So, with the recent layoffs at Mozilla — among other things — a bit of discussion on the sustainability of open source projects has been reignited. There was a wide range of takes: from “FOSS is dead” (no) to “we need to re-decentralize the internet” (yes). I could not quite help putting forth opinions on the matter myself and did so on a short twitter thread. Fundamentally though, the opinions expressed on this matter seem to almost talk past each other — and I think the reasons for this might be found in history of open source(1).

users are contributors

In the beginning, pretty much all open source projects had an almost complete overlap of users and contributors. Or at least potential contributors. E.g. the original GNU projects pretty much solved the problems of their own contributors and even most of those that where not contributors (yet) where non the less in the majority able to contribute to all parts of them. You can also see it in the original announcement of Linux as

“just a hobby, won’t be big and professional like gnu”

and while Linux grew way beyond that, there are still indications of this being true today when the main (and only) collaboration tool of the project, the LKML, was down for an extended time in 2018, because a mail server in a cabinet at someones home was not booting through after an power outage and the person to kick it was on vacation. The Linux kernel project was still self-hosting its infrastructure in 2018.

Another — later — project, that I am assuming to have been quite resilient and which I am assuming will continue to be quite resilient is gentoo linux: By requiring users to compile all software themselves, this distribution makes their users either give up on their installs or gets them at least halfway to be packagers (and for a distribution, packagers are contributors) themselves. Also, by not having to deal with binaries, gentoo reduces its infrastructure needs to a minimum. And even while there are some signs of downsizing at gentoo, I am hopeful that the flexibility mentioned above makes gentoo more sustainable and self-reliant than others for quite some time to come.

users are not all contributors anymore

In the 2000-2010 decade, especially in the second half, a lot of open source projects joined the choir were only a minority of users were contributors too. For many, the majority of users were not even possible contributors across the project. For a few, contribution was even implicitly limited to a closed circle. This gave rise to the perception that something like an “open source product” exists — especially by users. Here are some examples:

projectcomplementcontributors goal
Mozillawebprevent Microsoft from monopolizing the web, later generalized
OpenOffice.orgenterprise productivity
Androidweb/appsprevent Apple from monopolizing the web, app and smartphone market
Chromewebprotect a cloud, an advertising business and a search engine
Ubuntu desktopmanychanged over time, my guesses: initially, make launchpad what github is today, then complement the Ubuntu phone, then cloud offerings, but now something new maybe up

Of course, no such thing as an “open source product” exists and all of the above are variations of Strategy Letter V, which — being from 2002 — was already old by the time most of those were started:

Smart companies try to commoditize their products’ complements.

All of the above projects, commoditized their complements and this allowed users, who were not contributors to still benefit from the work of those who were as these contributors were interested in protecting the complement. With technology moving to the web and the cloud you can see this pattern repeating there in a few examples:

projectcomplementcontributors goal
reactfacebookensure all browser stay compatible with own use by making the framework widely used
istiocloud hostingraising the barrier to entry for microservice hosting (embrace and extend style)

the great filter of open source

So, what does this have to do with the layoffs at Mozilla and the current struggles at other open source projects? Well, the complements from strategy letter V that might motivate contributors to work on projects beyond their own needs exist at a given point in time, but … panta rhei, and this gives different outlooks for projects depending on how broad the complements are that it is serving:

Ultimately, open source projects provide a commodity. If their infrastructure needs are limited and their users also contributing they should be quite resilient (see e.g. gentoo). If they have many non-contributing users but have multiple complementing products, they will likely do well too.

However, having non-contributing users and only one complement might just be the Great Filter for open source projects: Once this complement is vanishing, so will the project — at least for non-contributing users. The remaining contributors — those that work without the need for a product, a complement, a business or users — will not feel that too much. But the non-contributing users will, as they wont be relevant at all anymore when the project downsizes itself to serving its contributing hobbyists alone.

conclusions and unrequested advice

So, at least for Mozilla and LibreOffice, I have some opinions and unrequested advice. In general, I see an urgent need for open source projects to establish a shared understanding among contributors what currently is a commodity — and thus is governed by the project and its institutions — and what are the complements of the commodity. For Mozilla and LibreOffice this might mean:

  • Felix von Leitner recently suggested at that the German government could make earmarked donations to Mozilla so protect digital sovereignty: “Die Bundesregierung könnte der Mozilla-Stiftung zweckgebundene Spenden zukommen lassen.”
    While I agree with both the goal and concerns over spending the money on a “cyber agency” might dilute results, earmarked donations are a also a very painful device to use: The administrative friction between a donor and the foundation will imply a huge overhead.
    Mozillas projects might be better off opening themselves to outside contributions and diversifying its contributions(2). And if there is indeed money in the German or European government to spend on strategic goals like digital sovereignty, tendering those to capable local providers with a crystal clear purpose will have much better outcomes. Both FSFE and OSBA might contribute starting points and help find suitable partners.
    All of this might seem very local, but likely it is not: Mozilla should look globally into diversifying the contributions to their projects, even if it might reduce their control as sole maintainer of them.
  • LibreOffice needs to decide where it really wants to provide a commodity and what its complements are: Both in the dimension of online collaboration vs. desktop and enterprise users vs. home users. The space claimed for commodity should be broad enough to motivate non-commercial contributors and to allow to grow into new complements when they appear, but overextending will leave too little room for complements, products and ultimately users. When the space allocated to be a commodity is overextended, the project will downsize to be a project solely serving its most active contributors(3) leaving aside non-contributing users.
    I see this responsibility at the board of the Document Foundation and there alone. It is elected for this as representatives of the community of contributors for exactly decisions like this.

Maybe not all of the dream is lost.

(1) Note that I am no expert on the history of open source nor do I know the internal workings and politics of all the open source projects, so there is unfortunately a lot of conjecture over the limited body of my own experience.

(2) This is where I might disagree with Michael Meeks’ take on that.

(3) The Document Foundation receives significant donations from individuals compared to other open source projects. Michael Meeks has some numbers on the value of developer contributions in kind to compare them to and put them in perspective.

by bmichaelsen at September 20, 2020 08:49 PM

September 18, 2020

Roman Kuznetsov

The best LibreOffice extensions. Yaru icon theme

Paul Kepinski made a new nice LibreOffice icon theme. Its name is Yaru. He wanted include it into LibreOffice source code, but then he made an extension and now you can download it by the link. Just enjoy!

by Roman Kuznetsov ( at September 18, 2020 05:18 PM

September 16, 2020

Miklos Vajna

Locale-independent Writer templates

The problem

Users create new documents in various ways. When they do so in Online or via Windows Explorer’s context menu (New → …) then actual templates are not involved in the process, technically. What happens instead is that there is a plain empty Writer (or Calc, Impress) document that gets copied. The reason for this is that by the time the document gets created, the WOPI-like protocol or Windows Explorer doesn’t have a running soffice process to create a document instance from a template: it’ll just copy a file.

With that aside, users expect that when they create new documents, the language of their new document matches the locale of Writer itself. This conflicts with the idea that languages in the documents are explicit, so if a German users writes a piece of German text, the spellcheck passes and the next user is English, then the text should remain German, not introducing new spellcheck errors.

Figure 1. Locale-indepentent Writer template

The solution to this problem is what Mike and Ezinne implemented: make these "templates" minimal, so they don’t refer to any language. Then Calc or Impress will fill the language from the locale of the soffice process and it’ll be part of the document on the first save. This solves the problem of multi-language templates while it does not break the spellcheck use-case.

Andras copied the same templates to various Online integrations to have the same problem solved in that use-case as well.

Writer was still problematic, though. sw: default to UI locale when language is missing now fixes this. You can see on the above screenshot that the stock soffice.odt was opened with a Hungarian locale and the status bar shows that the document language is Hungarian, not the confusing "multiple languages", as before.

Want to start using this?

You can get a snapshot / demo of Collabora Office and try it out yourself right now: try unstable snapshot. Collabora is a major contributor to LibreOffice and all of this work will be available in TDF’s next release too (7.1).

by Miklos Vajna at September 16, 2020 08:46 AM

September 10, 2020

Eric Bright

A dollar per month contribution, and why LibreOffice needs it

By Eric Bright We need your help here at The Document Foundation. LibreOffice needs your support. In this article, I am going to ask you for help. I am going to ask you for a commitment to a monthly donation to The Document Foundation. If I am successful, at the end you will be convinced … Continue reading A dollar per month contribution, and why LibreOffice needs it

by Eric at September 10, 2020 07:29 PM

LibreOffice QA Blog

QA/Dev Report: August 2020

General Activities

  1. LibreOffice 7.0.0 was announced on August, 5
  2. LibreOffice 6.4.6 was announced on August, 13
  3. Olivier Hallot (TDF) updated the help for inserting layers and added a page for Comparison Options
  4. Stephan Bergmann (Red Hat) made renovations in the internal handling of strings. He also made many cleanups as well as build and test fixes
  5. Noel Grandin (Collabora) made many code cleanups, increased the use of the fast XML parser and fixed some memory leaks
  6. Justin Luth (Collabora/SIL) fixed issues with odd/even footers in exported DOCX, section breaks in exported DOCX, missing images in DOC/DOCX/RTF export and placement on images in table cells in imported DOCX
  7. Caolán McNamara (Red Hat) improved the behaviour of Area fill tab and fixed some very old issues with Writer table properties dialog. He also continued the crucial user interface backend work and did many cleanups and crash fixes
  8. Szabolcs Tóth and Regényi Balázs (NISZ) fixed some issues with imported and exported OOXML shapes and objects
  9. Dániel Arató (NISZ) fixed line spacing with inline pictures in imported DOCX
  10. Vasily Melenchuk (CIB) added support for paragraph mark formatting with character style for DOCX export
  11. Luboš Luňák (Collabora) continued polishing the Skia graphics engine integration. More information about the new feature can be found here
  12. Balázs Varga (NISZ) fixed some OOXML chart import issues
  13. Michael Warner improved DOCX table formula import
  14. Andreas Kainz improved Sidebar element alignment and positioning
  15. Samuel Mehrbrodt (CIB) fixed a chart text distortion issue seen on Windows
  16. Tünde Tóth (NISZ) fixed some issues with OOXML charts
  17. Attila Bakos (NISZ) fixed DOCX issues with page breaks, small capital hyphenation, text box overlapping and OLE object backgrounds
  18. Tor Lillqvist (Collabora) worked on the iOS app and did code cleanups
  19. Tibor Nagy (NISZ) fixed DOCX import/export issues with shape alignment and frames
  20. László Németh (NISZ) added Writer table functions ABS, COUNT, PRODUCT, SIGN for Word interoperability
  21. Rizal Muttaqin made many improvements in the icon themes
  22. Miklos Vajna (Collabora) has been working on improving smartart support
  23. Eike Rathke (Red Hat) improved support for arrays and matrices in Calc functions
  24. Julien Nabet improved the error handling of text file insert in Writer and fixed several crashes
  25. Attila Szűcs and Tibor Nagy (NISZ) fixed issues with XLSX headers and page numbers as well as DOCX frame widths. They also improved Calc autofilter behaviour
  26. Michael Stahl (CIB) continued improving change tracking and anchoring
  27. Samuel Thibault fixed an issue with text in an imported EPS graphic
  28. Tomoyuki Kubota fixed a sorting issue in Calc with Japanese Kanji
  29. Thorsten Behrens (CIB) made it so inserting from file in Writer does not overwrite the default style
  30. Maxim Monastirsky made many UI and icon handling related improvements
  31. Xisco Faulí (TDF) made several additions and fixes to unit tests. He also added git pre-commit hook that check the minimal gtk3 version remains 3.18, so users using that version don’t have crashes.
  32. Mike Kaganski (Collabora) fixed many regressions, improved internal graphics handling and made code cleanups
  33. Sarper Akdemir completed his GSoC project “Add Impress shape animations that use a real physics engine”
  34. Ahmed ElShreif completed his GSoC project “Extending the UITest framework”
  35. Ahmad Ganzouri completed his GSoC project “Blurry Shadows”
  36. Shivam Kumar Singh completed his GSoC project “Styles Inspector”
  37. Aditya Sahu completed his GSoC project “Move the gallery code to use ZIP files”
  38. Yusuf Keten completed his GSoC project “Additions – Tight integration of extensions!”

Reported Bugs

978 bugs, 83 of which are enhancements, have been reported by 458 people.

Top 10 Reporters

  1. Telesto ( 251 )
  2. NISZ LibreOffice Team ( 31 )
  3. andreas_k ( 19 )
  4. R. Green ( 16 )
  5. sawakaze ( 16 )
  6. Karl-Heinz Arkenau ( 15 )
  7. Rafael Lima ( 9 )
  8. Regina Henschel ( 8 )
  9. Mike Kaganski ( 8 )
  10. Lyndon Brown ( 8 )

Triaged Bugs

772 bugs have been triaged by 108 people.

Top 10 Triagers

  1. Buovjaga ( 127 )
  2. Xisco Faulí ( 110 )
  3. Julien Nabet ( 48 )
  4. Dieter ( 47 )
  5. Telesto ( 43 )
  6. Heiko Tietze ( 36 )
  7. BogdanB ( 33 )
  8. Roman Kuznetsov ( 31 )
  9. Aron Budea ( 23 )
  10. Mike Kaganski ( 22 )

Resolution of resolved bugs

630 bugs have been set to RESOLVED.

Check the following sections for more information about bugs resolved as FIXED, WORKSFORME and DUPLICATE.

Fixed Bugs

221 bugs have been fixed by 44 people.

Top 10 Fixers

  1. Caolán McNamara ( 38 )
  2. László Németh ( 14 )
  3. Mike Kaganski ( 12 )
  4. Michael Stahl ( 10 )
  5. Rizal Muttaqin ( 9 )
  6. Justin Luth ( 7 )
  7. Shivam Kumar Singh ( 7 )
  8. Miklos Vajna ( 6 )
  9. Balazs Varga ( 6 )
  10. Tünde Tóth ( 5 )

List of critical bugs fixed

  1. tdf#124470 Table settings and borders are not saved if checked “Embed fonts” and “Only embed fonts that are used” ( Thanks to Mike Kaganski )
  2. tdf#135495 Crash when switching UI to Notebookbar variant ( Thanks to Caolán McNamara )

List of high severity bugs fixed

  1. tdf#130707 FILEOPEN: Writer document “Read Error. Format error discovered in the file in sub-document content.xml at 2,68950(row,col).” ( Thanks to Miklos Vajna )
  2. tdf#132892 Drag and drop to the left removes formatting ( Thanks to Caolán McNamara )
  3. tdf#134439 Page Break: editing “Text flow > Breaks” gives differing results depending on where the cursor is situated ( Thanks to Caolán McNamara )
  4. tdf#135313 Crash on opening the tight integration dialog ( Thanks to Yusuf Keten )
  5. tdf#136143 Regression Err:448 in Optional arguments ( Thanks to Andreas Heinisch )

List of crashes fixed

  1. tdf#129542 CRASH: Setting anchor for a formcontrol to character of pageheader leads to crash ( Thanks to Caolán McNamara )
  2. tdf#132160 Crash in swlo!SwRedlineData::SetSeqNo ( Thanks to Michael Stahl )
  3. tdf#132940 Crash mergedlo!vcl::Region::operator= (with really specific steps) ( Thanks to Noel Grandin )
  4. tdf#134847 Crash:select masterslide on inserted presentation from Writer ( Thanks to Jim Raykowski )
  5. tdf#135001 Crash delete/undo an resize shape ( Thanks to Michael Stahl )
  6. tdf#135018 CRASH: Track Changes: Accepting All Changes ( Thanks to Michael Stahl )
  7. tdf#135098 Writer crashes when merging horizontally cells in a table (GTK3) ( Thanks to Caolán McNamara )
  8. tdf#135313 Crash on opening the tight integration dialog ( Thanks to Yusuf Keten )
  9. tdf#135412 CRASH: Undoing paste of section with flys ( Thanks to Michael Stahl )
  10. tdf#135432 Crash when opening an ODT document written in Japanese/Chinese (Android viewer) ( Thanks to Michael Weghorn )
  11. tdf#135442 LO crashes when About Libreoffice is clicked ( Thanks to Caolán McNamara )
  12. tdf#135457 CRASH in a BASIC macro ( Thanks to Michael Stahl )
  13. tdf#135488 Crash double clicking Fonts in the Design sidebar (experimental) ( Thanks to Caolán McNamara )
  14. tdf#135491 Crash on opening redact with experimental settings enabled and style inspector tab selected ( Thanks to Shivam Kumar Singh )
  15. tdf#135495 Crash when switching UI to Notebookbar variant ( Thanks to Caolán McNamara )
  16. tdf#135528 CRASH running a macro (that changes text) from IDE, when StylesInspector is running ( Thanks to Shivam Kumar Singh )
  17. tdf#135568 Crash when opening the 3D View option for a chart. ( Thanks to Caolán McNamara )
  18. tdf#135603 CRASH: Renaming item in customize treewiew ( Thanks to Caolán McNamara )
  19. tdf#135639 Crash inspecting an array after Redim Statement with option VBASupport 1 ( Thanks to Mike Kaganski )
  20. tdf#135693 Crash opening table properties for embedded table ( Thanks to Caolán McNamara )
  21. tdf#135711 Crash saving a document with columns and image anchored to page to DOCX (since 7.1) ( Thanks to Attila Bakos )
  22. tdf#135755 Crash:right click to Manage Changes List on side bar ( Thanks to Julien Nabet )
  23. tdf#135942 crashtesting failure on export to docx ( Thanks to Mike Kaganski )
  24. tdf#136107 crash on export of selection ( Thanks to Julien Nabet )
  25. tdf#136127 Crash: Add Protected PDF file on Photo Album ( Thanks to Julien Nabet )
  26. tdf#136133 LibreOffice crash with GetInvolved and Donate infobar ( Thanks to Julien Nabet )
  27. tdf#136162 [UI] GtkMenuItem causes crash when accessible-description is used (for extended tips) ( Thanks to Caolán McNamara )

List of performance issues fixed

List of old bugs ( more than 4 years old ) fixed

  1. tdf#58518 FILEOPEN: Missing Error Message, if you Try to Insert a Picture with “Insert > File…“ ( Thanks to Julien Nabet )
  2. tdf#77794 FILEOPEN: DOCX – incorrect placement of image inside a cell when position option “Layout in table cell” is set ( Thanks to Justin Luth )
  3. tdf#97618 FILEOPEN drawing object (flow chart shapes) distorted in DOCX because of drawing canvas ( Thanks to Regényi Balázs )


91 bugs have been retested by 27 people.

Top 10 testers

  1. Buovjaga ( 12 )
  2. Telesto ( 12 )
  3. Dieter ( 9 )
  4. Julien Nabet ( 8 )
  5. Timur ( 6 )
  6. Thomas Lendo ( 5 )
  7. Thomas Lendo QA ( 4 )
  8. Heiko Tietze ( 4 )
  9. Roman Kuznetsov ( 4 )
  10. mwtjunkmail ( 4 )


136 bugs have been duplicated by 36 people.

Top 10 testers

  1. Telesto ( 19 )
  2. Buovjaga ( 14 )
  3. Mike Kaganski ( 14 )
  4. Xisco Faulí ( 12 )
  5. Timur ( 9 )
  6. NISZ LibreOffice Team ( 7 )
  7. Julien Nabet ( 7 )
  8. V Stuart Foote ( 6 )
  9. Thomas Lendo ( 4 )
  10. Maxim Monastirsky ( 4 )

Verified bug fixes

80 bugs have been verified by 18 people.

Top 10 Verifiers

  1. Xisco Faulí ( 34 )
  2. BogdanB ( 16 )
  3. Dieter ( 4 )
  4. Roman Kuznetsov ( 4 )
  5. Thorsten Behrens (CIB) ( 3 )
  6. Julien Nabet ( 3 )
  7. baffclan ( 3 )
  8. Buovjaga ( 2 )
  9. Telesto ( 2 )
  10. Wolfgang Jäger ( 1 )

Categorized Bugs

759 bugs have been categorized with a metabug by 39 people.

Top 10 Categorizers

  1. Thomas Lendo QA ( 264 )
  2. Roman Kuznetsov ( 157 )
  3. Dieter ( 53 )
  4. NISZ LibreOffice Team ( 41 )
  5. Thomas Lendo ( 35 )
  6. Telesto ( 33 )
  7. Buovjaga ( 32 )
  8. Aron Budea ( 28 )
  9. V Stuart Foote ( 15 )
  10. andreas_k ( 12 )

Regression Bugs

150 bugs have been set as regressions by 19 people.

Top 10

  1. Telesto ( 80 )
  2. Xisco Faulí ( 24 )
  3. Buovjaga ( 11 )
  4. BogdanB ( 7 )
  5. Roman Kuznetsov ( 5 )
  6. Mike Kaganski ( 4 )
  7. Yotam Benshalom ( 3 )
  8. Robert Großkopf ( 3 )
  9. raal ( 2 )
  10. Terrence Enger ( 2 )

Bisected Bugs

86 bugs have been bisected by 10 people.

Top 10 Bisecters

  1. Xisco Faulí ( 28 )
  2. raal ( 14 )
  3. Telesto ( 14 )
  4. Buovjaga ( 12 )
  5. Aron Budea ( 6 )
  6. Attila Baraksó (NISZ) ( 5 )
  7. Terrence Enger ( 3 )
  8. Justin L ( 2 )
  9. Mike Kaganski ( 1 )
  10. Roman Kuznetsov ( 1 )

Evolution of Unconfirmed Bugs

Check the current list of unconfirmed bugs here

Evolution of Open Regressions

Check the current list of open regressions here

Evolution of Open bibisectRequests

Check the current list of open bibisectrequests here

Evolution of Highest Priority Bugs

Check the current list of highest priority bugs here

Evolution of High Priority Bugs

Check the current list of high priority bugs here

Thank you all for making Libreoffice rock!
Join us and help to keep LibreOffice super reliable!
Check the Get Involved page out now!

by x1sc0 at September 10, 2020 10:48 AM

September 09, 2020

Eric Bright

I don’t “need” LibreOffice

By Eric Bright I don’t need LibreOffice. I WANT LibreOffice. I am not exactly sure if anyone really “needs” LibreOffice as a product. LO is more an idea, an ideal, than it is a product. For one thing we have had exactly zero customer since the time of OpenOffice all the way to today. No … Continue reading I don’t “need” LibreOffice

by Eric Bright at September 09, 2020 09:26 PM

Marius Popa Adrian

Rust Firebird Client updated with Firebird wire protocol implemented

Rust Firebird Client updated with Firebird wire protocol implemented in pure Rust and ARM support

by Popa Adrian Marius ( at September 09, 2020 03:54 PM

September 05, 2020

Eric Bright

LibreOffice – Designed by Committee

By Eric Bright This is a post I wished I never had to write. LibreOffice has a lot of issues with its public image, marketing strategies, management, long-term vision, major code contributors, volunteer programmers, and code quality, in case you haven’t noticed by now. I will try to explain a few of those here. Word … Continue reading LibreOffice – Designed by Committee

by Eric Bright at September 05, 2020 11:16 PM

Marius Popa Adrian

New Firebird driver for Python – release 0.7.0

New Firebird driver for Python – release 0.7.0. This version provides support for new Firebird 4 data types: TIME/TIMESTAMP WITH TIMEZONE, DECFLOAT and extended DECIMAL/NUMERIC via internal INT128 storage.

by Popa Adrian Marius ( at September 05, 2020 10:44 AM

September 04, 2020

Roman Kuznetsov

The best LibreOffice extensions. Barcode

Possibly you know that you can insert a QR-code in your LibreOffice document using a main menu Insert->Object->QR-code. But, unfortunately, you still can't insert a barcode.

And there is a solution for you now! This is a Barcode extension.

 Bildschirmfoto von 2020 09 03 11 01 21

You should download it by link above and install it into your LibreOffice using Tools->Extension manager. Then you can use it using a main menu Insert->Object->Barcode. There are many options in the dialog. So, enjoy!

by Roman Kuznetsov ( at September 04, 2020 02:15 PM

LibreOffice QA Blog

Investing in bug reports pays off

Document compatibility between office suites is a common concern for LibreOffice users. People take sample documents, expecting a pixel-perfect similarity with other office applications and rightly so. While we cover most aspects of formats outside the OpenDocument Format specification, LibreOffice’s native format, there are pieces that have not been implemented yet (for example smooth shadows, which have been implemented recently and will be available in LibreOffice 7.1). Of course we sometimes fail as well, like any other software producer. Microsoft’s “transitional” formats often include undocumented or obscure content that is hard for other office suites to parse.

One enormous advantage of open source software is that you can talk more or less directly to the developers. All bug reports and enhancement requests are taken seriously and will receive immediate response unlike what happens when you complain about issues to companies without open development models. Unfortunately not everyone knows about this advantage so we thought it’s time to recall.

The people doing quality assurance for LibreOffice is an ever-changing group of around 30 contributors. They analyse user reports tirelessly and always appreciate problem descriptions delivered in a clear and understandable way. In a recent article about LibreOffice appearing on, several bugs were reported, but in a rather incomplete way. It is understandable, if a journalist does not want to create proper reports in our bug tracker on top of writing an article. Maybe there is a middle-ground, though.

Simply linking to the problematic Microsoft Office templates would have made the work of the quality assurance team much easier. Now the templates shown in the screenshots had to be discovered through detective work on the MSO template site. Particularly unfortunate was the case of a template, which refused to open properly. There is no way of figuring out the identity of the document and the author never replied to an email requesting for more information. On the other hand, it might be time for the QA team to again methodically go through every single template on the MSO site – such work has been done before, resulting in many solved incompatibilities.

Detailed comments on the document template issues described in the Dedoimedo article

Fashion newsletter template: Some obstacles need to be considered regarding cross-application and probably also cross-platform compatibility questions. Documents written on one system might use a font that is not available on another. The article mentioned above talks about the word FASHION breaking into two lines in the MSO Fashion newsletter template. The reason for this wrapping is that the author did not notice they were missing the Century Gothic font. This can be seen in the Formatting toolbar, where the font name appears in italics and hovering over it shows a tooltip saying that the font is not available and has been substituted.

The author refers to an image border missing on the first page. Probably they meant the whole page margin on the right. This issue was not seen on Windows or Linux by testers.

The image stretching issue had not been reported before. The newly-created report contains an analysis on a level that is typical to the QA team. However, the QA team will gladly conduct further analysis on reports with less details. The image stretching issue is the same that is seen in the restaurant newsletter template

An issue not mentioned in the article is the incorrect lengths of the fuchsia-coloured lines on the first page. This was analysed through binary bisecting and found to have been reported before. This issue is an unfortunate side effect of a complex internal improvement in the handling of shapes.

Restaurant newsletter template: Testers did not see the issue with the placement of the restaurant logo.

Based on data in our bug tracker, LibreOffice saw over 330 fixes or feature implementations for MSO and RTF document issues in 2019. The number for 2020 is already over 330 at this point. The real numbers are likely higher as not every code change is connected with a report. These statistics clearly indicate that document compatibility is seeing significant investments from the commercial ecosystem and volunteers alike.

LibreOffice quality assurance is aided by many automated systems. One of these is called “Office interoperability tools”. It compares the output of Microsoft Office and LibreOffice over a huge corpus of documents in order to find regressions. Manual testing and problem discovery is still needed – we can’t automate the testing of issues we don’t know about.

As mentioned, while Microsoft’s “transitional” formats continue to use undocumented or cryptic content, which makes life difficult for other office suites, there’s a limit to what we can do. Ultimately, it would be better if everyone used the OpenDocument Format, to ensure maximum interoperability.

If you want to learn how to create high quality bug reports, please read our dedicated guide in The Document Foundation wiki.…

by Ilmari Lauhakangas at September 04, 2020 12:42 PM

August 31, 2020

Sarper Akdemir

Physics Based Animation Effects Final Report


The project

The project’s main goal was to create at least three new animation effects on LibreOffice Impress that are simulated using 2D physics engine Box2D. Which would use the 2D physics engine’s capabilities to create some exciting animations that bounce around interact with each other and hopefully look cool.

My work

First thing to do was bundling Box2D with the build system of LO.

After that, worked on a wrapper that was going to be the backbone of the project and abstract all Box2D related stuff. This wrapper didn’t take it’s final shape until the end of the project since it is the main place where the magic happened – throughout the project it always changed.

Building it from the start was useful though, since it gave me a solid vision on how would the animation engine interact with it (or what kind of information from LO would the wrapper need to function properly).

Later, I’ve connected up the animation engine creating a new animation node for physics animation by following the implementation of path motion animation. And worked on making them saveable through SMIL hierarchies on content.xml.

Up till this point all shapes in the slide were approximated by their bounding box in the simulations, which was not ideal. Therefore, I’ve worked on representing the shapes as closely as possible to their original shape. Got that to work by getting the shape’s bezier/polygon representation (simplifying it as much as i can without losing the resemblance of the original shape), triangulating it and adding the collection of triangles to a single physics body.

In the hope of spicing things up a little, added some options that can be used on xml hierarchies that make it possible to create more exciting physics based animation effects that specify the bounciness, density, and the starting velocity of the physics body.

To finish up, created a total of 4 animation effect presets that use the physics based animation effects.

Demonstration video

Please accept YouTube cookies to play this video. By accepting you will be accessing content from YouTube, a service provided by an external third party.

YouTube privacy policy

If you accept this notice, your choice will be saved and the page will refresh.

How does the current implementation function?

The Box2D wrapper lives in:

  • slideshow/source/engine/box2dtools.hxx
  • slideshow/source/engine/box2dtools.cxx

It manages the Box2D World and the Box2D Bodies. When a physics animation starts (if not initiated before by another physics animation) the Box2D World gets initiated and a physics body with an edge loop shaped fixture that represents the slide frame is created with it. This slide frame always has 100 meters width or height depending on which is actually greater in the current slide properties, and a scale factor is calculated depending on the slide size which is used in mapping the Box2D coordinates to LO coordinates and vice versa. Later, all the shapes in the current slide that are in the foreground (which are shapes that do not belong to the master slide and not a background shape) created as a static Box2D Body.

During this creation process if the shape is filled & closed it is created by triangulating the shape and adding the resulting triangles to the Box2D Body, this is necessary since a Box2D physics body can only have convex shaped fixtures.

If the shape isn’t a filled & closed one or is just an edge shape, it’s divided up into it’s edge segments and each edge segment is represented by a quadrilateral shaped fixture.

Here’s a visualization showing how a shape is represented in the Box2D world:

When a physics animation starts, it makes the corresponding physics body to it’s shape a dynamic one, and applies the density, bounciness, starting velocity parameters specified in the xml to it. On each update cycle physics animation steps through the simulation using box2DWorld::stepAmount.

If there are other type of animation effects going in parallel with a physics animation, those animation effects queue up updates on what property they have manipulated (position, rotation etc.) and to which value. And then when a physics animation calls box2DWorld::stepAmount, box2DWorld::processUpdateQueue is called and these updates are processed in a way that produce convincing simulations. For instance if it is a change in position, instead of just setting the corresponding physics body’s position, a linear velocity is calculated which will make the body travel to the given position in the time box2DWorld::stepAmount will step through and applied to the body.

When there are two physics animations going on in parallel, only one of them steps through the simulation. This is achieved using a simple lock mechanism. If the physics animation that was stepping the simulation ends, it unlocks and if there’s another one still going on it takes the lock.

Whats left to do or can be done?

  • Physics animations do not take in account animation effects that manipulate size and skew of the shapes.
  • Shapes that are self intersecting polygons/beziers are not handled properly.
  • Bounciness, density options can be added to the animation side panel so that the user can have more control over the animation effects.


Overall, working on this project was really fun! I’m pretty proud with the outcome, and hoping it is some nice eye candy that the community and the users of LibreOffice will like :). If you’d like the check out and play around with the physics based animations you can build from master or grab a nightly build!

I’m really thankful for Google and LibreOffice for providing me with such a great opportunity which helped me grow quite a bit! Thanks to everyone in the LibreOffice community for giving me a helping hand :). And most importantly, greatly thankful to Thorsten Behrens which was my mentor throughout the GSoC period, he has literally guided me everyday on what to do, what not to do and how to do, on top of it answered each of my silly newbie questions. You were the greatest mentor I could’ve asked for!

Since working with the LibreOffice community was great and now that I’m kind of warmed up working on LibreOffice, my plan is to keep hacking on LibreOffice and especially Impress from now on!


All of the commits I’ve sent at the GSoC period can be found at:

They are also listed below:

by quwex at August 31, 2020 07:50 AM

Yusuf Keten

LibreOffice GSoC Final Report

The idea of additions is to better integrate extensions. On various places it should be possible to get more content from external storage. It is an “addition” as it rather provides presets than extensions like macros or templates; but the procedure behind might be similar. On various places it should be possible to get more content such as macros or templates from external storage. This requirement is now fulfilled with the Additions Dialog.

by Yusuf Keten ( at August 31, 2020 12:00 AM

August 29, 2020

Ahmed ElShreif

GSoC'20 final report & Project Documentation



    The idea was about The UI testing framework in LibreOffice. The UITesting  Framework is based on introspection code in c++ interacting with a testing framework in python through a simple UNO interface. To identify objects we use the ids that we introduced for loading dialogs from UI files. We were having unsupported items list in LibreOffice UITesting Framework. So The project mainly goals is to Extend the ability of the existing UI testing framework to support the unsupported items that exist now. So the work done on this list to decrease number of items in it.

    As we also have a domain specific language that we used to log the events in its syntax and a Logger system that supports the UI elements of Visual Component Library and some application-specific events can also logged with the DSL syntax. Then to Increase the ability of the DSL that used for testing by Be able to log more complex events and the events of the new added items that were unsupported before. Also Be able to generate more meaningful test cases with the DSL not just replaying the user action from the Logger.


To understand how the project works you should know 3 things:
  • How UITesting Framework works?

    • The current UI testing framework is built using unittest which is Unit testing framework existing in python libraries. It supports test automation.

    • So as we can see here that our UITestCase class inherited from (unittest.TestCase) so mainly it has all the methods that unittest.TestCase has.

    • If we want to add support for new items in the UITesting framework that we have we should first add the introspection code then we should add functions that use this code in the python UITesting framework code then we should make sure that this code is working well.

    • The introspection code interacts with a testing framework in python through a simple mostly un-typed UNO interface.
    • So first let's discuss how we could extend the introspection part. There are two types of elements. First one is the one that UI elements that inherit from vcl::Window. And the other type is the non-vcl::Window UI objects.

    • For the objects that inherit from vcl::Window, so basically most of our GUI elements. Most of them are already done. But understanding how it works makes it easy to plan what to do for other items. On the introspection side the corresponding class is WindowUIObject, and all classes inheriting from vcl::Window provide the virtual method in this search GetUITestFactory that returns a factory function for the introspection library. So adding support requires three steps:  
      • adding a GetUITestFactory method to the UI object class. 
      • adding the corresponding factory method. 
      • implementing the introspection wrapper class.
    • for the objects that are non-vcl::Window UI objects that need to be wrapped which makes everything a bit more complicated. The basic idea behind supporting such pseudo objects is to hold a pointer to the corresponding vcl::Window based UI object through a VclPtr and a way to get the correct property that represents the object we want to cover. Then we can add the functions in C++ that will be called from the python code that will be written to test this item like for example what we have here.

    • After this point we need to add the functions in the python part to be able to use it and it will call the functions that we add in the introspection code in the C++ part. So we can check when replaying if the action is done so that means the item was added successfully.

  • How the DSL Works?

    • Domain-Specific-Language which is DSL is a way of defining new grammar for a new language to be used later by interpreting this langauge and generate another code or execute the code on specific hardware.

    • In my last year GSoC project with LibreOffice I implemented a DSL that is used now to log all the user action in it's syntax and convert these logs to a test case using the implemented interpreter. This vide talk more about the project.

    • Note that to run the project you need to have a python2.7 with textX library installed into it. We will descripe later how to use but this video will be very helpful.

    • If you need to understand how the project is written and mainly the part in this folder: I think you can easily see the tutorials here of TextX. The basics of this tutorial that you can understand with 30 mins can let you understand a lot of the project. Also The grammar descriped here.

  • How The Logger Works?
    • Logging in LibreOffice is mainly handled by a class called UITestLogger, defined here.The logger class logs the user actions only if the member flag mbValid is set to true. The flag can be turned on by setting the environment variable LO_COLLECT_UIINFO to a file name where the logs should be collected (see the constructor of UITestLogger, defined here). we make it equal test.log in last section.

    • Their is a pointer to an instance of UITestLogger class here. To use the logger object, the static function getInstance can be used to get access to the pointer.
    • The function logAction, defined in the same class, is used to log events from the classes which extend the class vcl::Control. The log statements corresponding to a particular class can be found in the function get_action of the UI wrapper classes. The log statements get generated when VCL events get broadcasted.
    • For other classes, we have functions named collectUIInformation spread in different places of the code (This OpenGrok search might be helpful) and these different places are the functions that execute the supported events in different applications. These functions collect information about an event and store it in a struct EventDescription (defined here) and pass it to another function of UITestLogger, called logEvent. The logEvent function constructs a log string using the information provided by the given event description, and finally logs the statement using the file stream maStream.


    The work was done by taking items from the list one by one. The time of working on each item vary so maybe an item takes 3 days another takes one week another one takes 3 weeks. So the Achievements was taking as much items as I could from the list.
    After adding an item I used to write a test case to test this item to make sure that the support working well now. Also if we have a bug that related to this part of the code I try to help on writing it's test case. I will provide here examples for each item how to use it and how to test it.
The added Items:

  • Calc - Set Zoom
    used by:
    • gridwin.executeAction("SET", mkPropertyValues({"ZOOM": "100"}))
    tested by:
    • self.assertEqual(get_state_as_dict(gridwin)["Zoom"], "100")

  • Calc / Format cell / background color selector
    used by:
    • color_selector.executeAction("CHOOSE", mkPropertyValues({"POS": "2"}))
    tested by:
    • self.assertEqual(get_state_as_dict(color_selector)["CurrColorId"], "2")
    • self.assertEqual(get_state_as_dict(color_selector)["CurrColorPos"], "1")
    • self.assertEqual(get_state_as_dict(color_selector)["ColorsCount"], "12")
    • self.assertEqual(get_state_as_dict(color_selector)["ColCount"], "12")
    • self.assertEqual(get_state_as_dict(color_selector)["ColorText"], "Chart 2")
    • self.assertEqual(get_state_as_dict(color_selector)["RGB"], "(255,66,14)")

  • ComboBoxUIObject - Select by Text - Set - Clear
    used by:
    • xpaletteselector.executeAction("SELECT", mkPropertyValues({"TEXT": "chart-palettes"}))
    • xpaletteselector.executeAction("SET", mkPropertyValues({"TEXT": "chart-palettes"}))
    • xpaletteselector.executeAction("CLEAR", mkPropertyValues({}))

  • Writer - comments
    used by:
    • xComment1.executeAction("TYPE", mkPropertyValues({"TEXT": "any Comment"}))
    • xComment1.executeAction("LEAVE", mkPropertyValues({}))
    • xComment1.executeAction("RESOLVE", mkPropertyValues({}))
    • xComment1.executeAction("SELECT", mkPropertyValues({"FROM": "0", "TO": "4"}))
    • xComment1.executeAction("HIDE", mkPropertyValues({}))
    • xComment1.executeAction("SHOW", mkPropertyValues({}))
    • xComment1.executeAction("DELETE", mkPropertyValues({}))
    tested by:
    • self.assertEqual(get_state_as_dict(xComment1)["Text"], "any Comment")
    • self.assertEqual(get_state_as_dict(xComment1)["SelectedText"], "any Comment")
    • self.assertEqual(get_state_as_dict(xComment1)["Resolved"], "false" )
    • self.assertEqual(get_state_as_dict(xComment1)["Author"], "Unknown Author" )
    • self.assertEqual(get_state_as_dict(xComment1)["ReadOnly"], "false" )
    • self.assertEqual(get_state_as_dict(xComment1)["Visible"], "true" )

  • Calc - Dropdown items
    used by:
    • gridwin.executeAction("LAUNCH", mkPropertyValues({"SELECTMENU": "", "COL": "2", "ROW": "9"})) Then Select the TreeList UI Object
    • xWin = self.xUITest.getTopFocusWindow()
    • xlist = xWin.getChild("list")
    • xListItem = xlist.getChild('0')
    • xListItem.executeAction("DOUBLECLICK" , mkPropertyValues({}) )

  • SvxNumValueSet
    used by:
    • obj_name.executeAction("CHOOSE", mkPropertyValues({"POS": "pos_num"}))
    tested by:
    • self.assertEqual(get_state_as_dict(color_selector)["ItemsCount"], "2")
    • self.assertEqual(get_state_as_dict(color_selector)["SelectedItemPos"], "1")
    • self.assertEqual(get_state_as_dict(color_selector)["SelectedItemId"], "12")
    • self.assertEqual(get_state_as_dict(color_selector)["ItemText"], "any")

  • Vertical TabControl
    used by:
    • xtab.executeAction("SELECT", mkPropertyValues({"POS": "0"}))
    tested by:
    • self.assertEqual(get_state_as_dict(xtab)["CurrPageTitel"], "Mail")
    • self.assertEqual(get_state_as_dict(xtab)["CurrPagePos"], "1")
    • self.assertEqual(get_state_as_dict(xtab)["PageCount"], "4")

  • Calc - Comments
    used by:
    • gridwin.executeAction("COMMENT",mkPropertyValues({"OPEN":""}))
    • gridwin.executeAction("TYPE",mkPropertyValues({"TEXT":"any"}))
    • gridwin.executeAction("COMMENT",mkPropertyValues({"CLOSE":""}))
    • gridwin.executeAction("COMMENT",mkPropertyValues({"SETTEXT":"any"}))  
    tested by:
    • get_state_as_dict(gridwind)["CurrentCellCommentText"]

  • ToolBox Objects
    used by:
    • variable_name.executeAction("CLICK", mkPropertyValues({"POS": poition_x }))
    tested by:
    • self.assertEqual(get_state_as_dict(xfind_bar)["CurrSelectedItemID"], "5")
    • self.assertEqual(get_state_as_dict(xfind_bar)["CurrSelectedItemText"], "Find All")
    • self.assertEqual(get_state_as_dict(xfind_bar)["CurrSelectedItemCommand"], ".uno:FindAll")
    • self.assertEqual(get_state_as_dict(xfind_bar)["ItemCount"], "14")

  • Menu Button objects
    used by:
    • var_name.executeAction("OPENLIST", mkPropertyValues({}))
    • var_name.executeAction("CLOSELIST", mkPropertyValues({}))
    • var_name.executeAction("OPENFROMLIST", mkPropertyValues({"POS": "0" })) 
    tested by:
    • get_state_as_dict(var_name)["Label"]

  • ValueSet
    used by:
    • obj_name.executeAction("CHOOSE", mkPropertyValues({"POS": "4"}))
    tested by:
    • self.assertEqual(get_state_as_dict(FontWorkSelector)["ItemsCount"], "36")
    • self.assertEqual(get_state_as_dict(FontWorkSelector)["SelectedItemId"], "3")
    • self.assertEqual(get_state_as_dict(FontWorkSelector)["SelectedItemPos"], "2")

The Support is already merged for all these types of objects and also I added a test case for each object in this list and Also the uiLogger and DSL support is added for all items in this list.


all my merged patches can be found here : merged patches

For more details :
  1.   uitest: Fix small issue in UI Logger DSL grammar  
  2.   uitest: Fix some issue in the UI Logger DSL core  
  3.   uitest: avoid defining the same object multiple time in in math  
  4.   uitest: Add support for Calc - Set Zoom  
  5.   uitest: Add support for Calc / Format cell / background color selector  
  6.   uitest: Add support for Writer comments  
  7.   uitest: Add demo for Writer-comments  
  8.   uitest : Add support for Dropdown items in grid window 
  9.   uitest: Fix small issue in UI Logger DSL grammar "EditUIObject"  
  10.   uitest : Add Support for SvxNumValueSet  
  11.   uitest : Add demo for SvxNumValueSet support  
  12.   uitest: Add support for vertical TabControl Object  
  13.   uitest : Add support to Calc - comments  
  14.   uitest : Add demo for Calc-comments  
  15.   uitest : Fix the old demo of writer comments
  16.   uitest : Add support for "ToolBox" Objects for example" "bottom find bar"  
  17.   uitest : Add demo for "bottom find bar" using ToolBox support  
  18.   uitest : extend the ComboBox UIObject
  19.   uitest : sw: Add UItest for Hyperlink Dialog  
  20.   uitest : Avoid any timing issue in test_insert_hyperlink  
  21.   uitest : Add support for Menu Button objects  
  22.   uitest : Add demo for gear button menu in Tools->Customize  
  23.   uitest : Add support for Normal ValueSet
  24.   Add demo for FontWork Selector  
  25.   uilogger : Add support in the Logger and DSL for the LAUNCHMENU in CALC  
  26.   uilogger : Add support in the Logger and DSL for the ToolBox  
  27.   uilogger : Add support in the Logger and DSL for ZOOM in CALC  
  28.   uilogger : Add support in the Logger and DSL for ValueSet  
  29.   uitest : Change all the ValueSet uitest statments to CHOOSE
  30.   uilogger : Add support in the Logger and DSL for Calc-Comments  
  31.   uilogger : Add support in the Logger and DSL for Writer-Comments  
  32.   uilogger : Add support in the Logger and DSL for MenuBtn  
  33.   uilogger : Add support in the Logger and DSL for Vertical Tab

When This project will be Helpful? 

This project will be really helpfull if:
  • You are tring to write a test case that test a specific part in LibreOffice and you don't know where to start.
    • You can open the logger.
    • start logging all the actions that you did around the part you will test. 
    • run the compiler and get an pre-test that you can build your work on it.
  • You want to know the ids of the dialog member and search with it in the code.
    • Log actions in this dialog and use OpenGrok for search.
  • You want to know all the called uno command when you press on anything.
    • You can do this by find all the uno commands in the generated pre-test.
The extention added this year by ading support for more items let us has more coverage on most of the UIObjects and more flexibility and power in using our UITest Framework also it let us make better test cases for all the open bugs in the future.

How to Use the logger?

First you should update the master branch:
1) use these lines in .bashrc or .cshrc:
  • export PYTHONPATH=/"Path of LibreOffice repo"/instdir/program/
  • export URE_BOOTSTRAP=file:///"Path of LibreOffice repo"/instdir/program/fundamentalrc
  • export SAL_USE_VCLPLUGIN=gen

2) Launch LibreOffice like
LO_COLLECT_UIINFO="test.log" SAL_USE_VCLPLUGIN=gen instdir/program/soffice

3) Simulate what you want to do with the mouse
4) Close LibreOffice

5) Open the resulting file in instdir/uitest/test.log

6) Enter the UI logger directory with this Command:
cd uitest/ui_logger_dsl/
7) make sure that your python has textX library installed:

8) Use the following Command
python <path_to_log_file> <path_to_a_new_python_file>
<path_to_log_file> should be replaced with something like SourceDirectory/core/instdir/uitest/test.log
and <path_to_a_new_python_file> can be a location of your choice where you would like to see the generated code.

You can follow all these steps in this youtube video.

Remaining Tasks

We still have some unfinished items in the unsupported item list and it maybe increased in the future. So some of these items need more work and investigation. i will try to work on my free time to empty all the items in this list.

Thank You!

Thank you for giving me the opportunity to work on this project. I learned a lot from this project. I will definitely like to spend more time with LibreOffice community in future. I like to thank also my mentors they help me and guide me to learn a lot and the community was always active and helpfull.

by Ahmed ElShreif ( at August 29, 2020 06:26 AM

August 28, 2020

Yusuf Keten

LibreOffice GSoC Final Report

The idea of additions is to better integrate extensions. On various places it should be possible to get more content from external storage. It is an “addition” as it rather provides presets than extensions like macros or templates; but the procedure behind might be similar. On various places it should be possible to get more content such as macros or templates from external storage. This requirement is now fulfilled with the Additions Dialog.

by Yusuf Keten ( at August 28, 2020 12:00 AM

August 27, 2020

Roman Kuznetsov

Finally we have nice soft shadows for shapes in LibreOffice

A GSoC 2020 student Ahmad Ganzouri have added into LibreOffice 7.1 a new nice feature - soft blurred shadows for shapes. 

It looks so:

So it looks awesome! Thanks Ahmad for your great work for our project!

by Roman Kuznetsov ( at August 27, 2020 07:23 PM

August 26, 2020

Andreas Kainz

Bright side of LibreOffice

LibreOffice has a very useful sidebar so it’s time to make them shiny even more. I made an proposal for an sidebar upgrade.

Sidebar layout proposal

Layout 1 vs Layout 2

LibreOffice use two different Sidebar layouts

  1. left: where widgets are in two columns and the label is above the widget
  2. right: where the labels are left and the widgets right

I’m happy with both layouts, but I would prefer to have for one specific task only one Layout.

  • For example, the text sections will be visible when you select text and when you write text in a table, so it should be natural that both sections use the same layout as you can see in the screenshot.
  • On the right there is a drawing selected so all sections should have the same layout as you can see in the left screenshot. If you think, true but where is the change request, start your LibreOffice and check out the sidebar.

I already start to write bug report’s for so that everybody can give transparent feedback.

So I hope to get some feedback the global [META] bug to see the improvement will be BUG 103459

by kdeonlinux at August 26, 2020 01:16 PM

August 25, 2020

Sarper Akdemir

Physics Based Animation Effects Week#12

Past week, all of the changes in my private experimental branch got merged to master \o/.

Since it is the last week of GSoC, I will be finalizing the project this week by creating some animation effect presets, documenting the code, fixing bugs and preparing a work product submission.

If you’re interested in creating some animation effects that use Physics Animation Effects, see the mail about it to the design list and hit me up 🙂

by quwex at August 25, 2020 07:01 AM

August 24, 2020

Yusuf Keten

LibreOffice GSoC Week 12 Report

Hello, I want to share with you the progress of this week. Last Week: Sort functions are done.Patch Rating images are implemented to UI, rating will be shown from the UI. Patch Install function is implemented. Path Documentation will be done today, or tomorrow at the latest Thanks to my mentors, Muhammet Kara and Heiko Tietze, and LibreOffice community.

by Yusuf Keten ( at August 24, 2020 12:00 AM

August 21, 2020

Muhammet Kara

LibreOffice on Pardus now in 53,000 Classrooms in Turkey

As part of FATIH project, run by Turkih Ministery of Education, and supported by National Academic Network and Information Centre (ULAKBİM); Pardus GNU/Linux (and LibreOffice as part of it) has been installed on more than 53,000 smart boards at classrooms in Turkey! :)

Pardus ETAP Map of Turkey

This number represents the smart boards which are connected to the Internet, and registered on the central management system. It keeps counting as we speak, and the status can be seen on the stats page of ETAP (Interactive Board Interface Project):

Pardus GNU/Linux

Pardus is a GNU/Linux distribution jointly developed by the Scientific & Technological Research Council of Turkey (TÜBİTAK) and National Academic Network and Information Centre (ULAKBİM). It started its life as a Gentoo-based project before developing its own unique identity. Since late 2012, the distribution is based on Debian.

Pardus 17.3 XFCE Screenshot

Pardus has open-source subprojects that meet institutional needs for easy dissemination in public institutions and organizations and SMEs. Leader Ahenk Central Management System, Viper Identity Management System, Octopus Integrated Cyber Security System, Interactive Board Interface Project (ETAP), ULAKBÜS Integrated University System are the main ones.

Interactive Board Interface Project (ETAP)

ETAP is aimed at developing a solution for the interactive smart boards at schools, based on Pardus. It is designed and developed to achieve easier and more effective usage of the devices with a touchscreen in the classrooms.

Pardus ETAP Desktop Screenshot

During its development, several schools were chosen as part of the pilot phase, and needs and requests of the teachers were taken into account. Its features include:

  • ETA Panel
  • ETA Keyboard
  • Interactive & Adjustable Screen Blanking
  • Custom touch gestures

by Muhammet Kara ( at August 21, 2020 10:00 AM

Collabora Community

Implementing Vulkan-capable LibreOffice user interface using the Skia library

This work by Collabora Productivity was possible thanks to AMD.

LibreOffice 7.0, just released, includes a new drawing backend based on the Skia library, which allows LibreOffice to use the modern Vulkan API to graphics operations. This Visual Class Library (VCL) backend is the default on the Windows platform, superseding the OpenGL-based backend.

Working on the future of graphics for office productivity

Having multiple VCL backends has its benefit to integrate with different operating systems, but each backend performing its own rendering implementation is far from optimal, since we cannot add new rendering functionality and assume that it will work cross-platform. Many backends across different platforms and toolkits miss optimized paths for various rendering tasks. This adds complexity and makes it hard to ensure that rendering objects happens in an accelerated way everywhere.

Another problem is that multiple backends regularly perform the same type of mapping from VCL’s APIs to what a modern toolkit provides these days. This duplication means not only maintenance cost, but also can lead to having to fix the same bug at multiple places.

Moving away from GDI and OpenGL

The VCL library is responsible for widgets (buttons, controls, etc.) and basic rendering. It does not implement the drawing directly, but it provides an internal API, which is implemented by various backends that implement the actual graphics operations. These backends usually adapt LibreOffice to each platform , for example the ‘win’ backend is used on Windows, the ‘kf5’ and ‘gtk3’ backends are for Unix-like platforms using the KDE Frameworks and the Gtk3 graphics toolkit respectively and there is a ‘headless’ backend used by tests that does not render to the screen.

Each VCL backend uses an underlying graphics API available on the platform to perform the graphics operations. The Cairo library is used by some Unix-like and ‘headless’ backends, the ‘osx’ backend uses the macOS Quartz. On Windows, the ‘win’ backend has several plugable drawing implementations:

  • GDI drawing. This code is relatively old and has several limitations, such as not being double-buffered.
  • OpenGL drawing. This code provides GPU-accelerated drawing. OpenGL is used directly, so all relevant code including OpenGL shaders needed to be implemented in LibreOffice. The OpenGL API is also slowly being phased out in the industry.
  • Skia drawing. The Skia library hides implementation details, and provides several rendering methods, including Vulkan API.

Integrating Skia and Vulkan

The Skia library is not shipped in a binary form, not even by 3rd-party providers such as Linux distributions. It is provided only as source and the usual way to use it in a project is to ship it with that project. LibreOffice includes Skia as a 3rd-party library and fortunately building it using the LibreOffice gbuild system is reasonably simple. An additional complication is that Skia provides a new release roughly every 6 weeks, and generally only the latest release receives any fixes, requiring repeated updates. Since Skia is continually evolving, each update may also require adjustments (although so far it seems they are generally small).

Collabora’s developers taking the first hurdles

The Skia API is generally well documented, but it appears to be mostly aimed at developers already working on a project using Skia, such as Chrome. Important classes have their API well described, but it can be difficult to find tutorials for them and some classes are harder to understand at the beginning (for example, SkPixmap, SkBitmap, SkImage and SkSurface are all classes representing a drawable, but it was unclear at the beginning what the suitable use cases would be for each for them).

Similarly, it is not obvious how to use Skia in a new project. There does not seem to be any actual developer introduction to Skia in the documentation, nor does thereseem to be any documentation on how to setup a new or standalone project using Skia. There is a Hello-World example in the examples/ directory that is based on platform integration code that is not part of the Skia library itself but is inside a sk_app/ directory in the tools/ directory. That code was usable for LibreOffice, but required patching to cover LibreOffice needs (for example, the code created a new graphics context for each toplevel window, and Skia requires proper graphic context to be used in drawing operations, but LibreOffice code sometimes does not know which toplevel window will use the result of a drawing).

LibreOffice is a fairly old codebase, and still uses relatively old concepts such as paletted bitmaps, low-resolution bitmaps (such as 4bpp) or drawing that uses the XOR operation on pixels. Skia, being a relatively new library, has features that assume modern concepts are used (for example, RGB bitmaps are required to be 32bpp with unused alpha channel, 24bpp RGB bitmaps are not supported).


AMD Skia / Vulkan integrated in a alpha-release of LibreOffice 7.0


Once the initial learning period is over, Skia is consistent in its API and reasonable flexible to use allowing progress to be relatively fast. Code using Skia is very readable, and using Skia makes future maintainance tasks easier to perform. Even some old concepts, such as LibreOffice using a separate bitmap for alpha channel, sometimes interpreted as 8bpp and sometimes as alpha, later blended with data bitmap to get the actual result, could be mostly implemented using Skia API, making them GPU-accelerated.

Nice performance and even room for improving

While there were some concerns about how performance would be affected by moving to Skia compared to OpenGL driver and and hardware implementations that have been heavily optimized over the past several decades, it turns out that performance within LibreOffice is at least equivalent to the OpenGL version and synthetic benchmarks show that there is room for improvement.

Benefits for LibreOffice-technology

While somewhat complicated at the beginning, using Skia in LibreOffice has been in general a rather pleasant experience. In the future LibreOffice’s use of Skia could be extended to other platforms, reducing the number of platform rendering APIs used, eliminating duplicated code, reducing bug count and generally improving quality.

For comparison, LibreOffice OpenGL drawing code is roughly 12k lines of code, while Skia drawing code is only 4k.

Apart from the immediate benefits, moving to Skia and Vulkan on Windows paves the way for a single, powerful, hardware-accelerated rendering API cross-platform.

Moving to Skia on Windows required about 7 person-months ol, which lets us use Vulkan acceleration without large implementation costs. It will be interesting to see how much time is saved in the next few years from the reduced maintenance cost. The resulting work is mature enough that there is no real negative change in performance, and we have not started heavily optimizing yet.

The post Implementing Vulkan-capable LibreOffice user interface using the Skia library appeared first on Collabora Productivity.

by Cor Nouws at August 21, 2020 08:01 AM