Annual Report 2020: TDF and LibreOffice infrastructure

In 2020, the infrastructure team added new services, implemented a new Extensions and Templates site, and worked on a replacement for Ask LibreOffice

(This is part of The Document Foundation’s Annual Report for 2020 – the full version is here.)

LibreOffice’s infrastructure team is responsible for maintaining the hardware, virtual machines and services that enable the wider community to develop, market, test, localize and improve the software. The public infrastructure is powered by around 50 kernel-based virtual machines (KVMs) spread across four hypervisors, plugged to an internal 10Gbps switch, hosted at Manitu in St. Wendel (Germany), and managed with libvirt and its KVM/QEMU driver. The virtual disk images are typically stored in GlusterFS volumes – distributed across the hypervisors – except for some transient disks (such as cache) where the IOPS requirement is higher and the redundancy less important.

In 2020, the infra team added various new services, such as the new SilverStripe-based Extensions and Templates site. Some background to the technical and design decisions behind the site are here on the blog.

Meanwhile, Discourse was investigated as a likely AskBot replacement, while several VMs for deployment tests outside the scope of infra were handed over (such as decidim). The infra team worked on Moodle (an e-learning platform), build bots, integration of the Weblate translation platform into the TDF development dashboard, and a crashtest box (sponsored by Adfinis).

Along with the new services, there were many notable upgrades too. Some machines are still running Debian GNU/Linux 9 (codename Stretch), but most are now upgraded to Debian 10 (codename Buster). Other updates include: Nextcloud 16 to 20, Gerrit 2.16 to 3.2, LibreOffice Online 6.3 to 7.0, and Mediawiki 1.31 to 1.35. Finally, OpenGrok, Etherpad Lite, Weblate and the Grimoire dashboard received updates too.

Notable refactoring/improvements took place in the online help backend, along with the backends for bibisecting and mailing lists. The team started collecting metrics for download counters and the update checker, and worked on improving IRC bots, the monitoring setup, and a distributed backup solution.

Documentation was improved to make onboarding of new infra team members easier, while the SSO (Single Sign-On authentication) system was expanded with more services: Gerrit, the new extension site, Discourse, Jitsi and Moodle.

Like what we do? Support the LibreOffice project and The Document Foundation – get involved and help our volunteers, or consider making a donation. Thank you!

Projects selected for LibreOffice in the Google Summer of Code 2021

In March, we announced that LibreOffice will be participating in the Google Summer of Code (GSoC), a programme that connects students with free and open source software projects. GSoC helps students to implement new features, and provides them with financial support along the way.

Well, the projects have been selected, so here they are!

  • Bayram Çiçek – 100 Paper Cuts: This aims to improve LibreOffice’s user interface, implementing enhancement requests and solving the most annoying UX (user experience) issues.
  • Anshu Khare – Sidebar: It’s planned to revamp the current styles deck sidebar and to merge paragraph and character styles into one Text Style deck. Furthermore, the student wants to rework the filter workflow. Here’s a mockup (click for larger):

  • Tushar Kumar – Implement an interface for external data source import in Calc: Currently, Calc’s back-end data provider supports CSV, HTML, XML and and Base’s data provider. This feature is not yet ready for production, however, so this project’s goal is to improve it. Here’s a mockup:

  • Balázs Sántha – Implement table styles in OOXML (.docx) support: At the moment, table styles found in .docx documents are converted into direct formatting at at Writer’s core level. This project aims to take a step towards a solution for handling proper table styles.

  • Panos Korovesis – Make the SVM format independent of the VCL metafile + tests for the format: This requires the completion of the tests regarding SVM, and then the separation of the read and write functionality of MetaActions to new distinct classes.
  • Akshit Kushwaha – Tests for the VCL graphics back-end: Add more test cases to the pre-existing tests, running those tests in every back-end, and implement a usable UI for the users to test the graphic’s feasibility themselves. This should make graphics rendering smoother.
  • Shubham Jain – Write missing unit tests: Extend the tests in Libreoffice. There are currently more than 1300 bugs fixes which do not have tests written for them, so this project aims to bring down that number.

Good luck to all the students – we appreciate their work on these important features and improvements! And thanks to our mentors for assisting them: Heiko Tietze, Xisco Fauli, lmari Lauhakangas, Olivier Hallot and Christian Lohmeier (The Document Foundation); Tomaž Vajngerl, Muhammet Kara, Luboš Luňák, Miklos Vajna and Mike Kaganski (Collabora); Thorsten Behrens (allotropia); László Németh and Markus Mohrhard.

From August 16 – 23, students will submit their code, project summaries, and final evaluations of their mentors. Find out more about the timeline here, and check out more details about the projects on this page.

Improvements in LibreOffice’s PowerPoint presentation support

LibreOffice’s native file format is OpenDocument, a fully open and standardised format that’s great for sharing documents and long-term data storage. Of course, LibreOffice does its best to open files made by other office software as well, even if they’re stored in pseudo-“standards” with cryptic and obfuscated contents. Compatibility with PowerPoint PPT(X) presentations is therefore a challenge, but developers are working hard on improvements…

In September 2019, we announced an initiative to improve the support of PPT and PPTX files in LibreOffice. A year has passed since the last review and it is time to summarise achievements again.

Everyone is invited to participate in the PowerPoint support initiative, either in development or testing. If you are interested in joining, please send an email to ilmari.lauhakangas@libreoffice.org.

Audio

Miklos Vajna (Collabora):
Added import and export support for slide narrations and their icons

Borders and fills

Miklos Vajna (Collabora):
Handle stroke properties of image shapes
Improve import of transparency in multi-step gradients

Before screenshot of bug 134183
Slide before Miklos’s fix

After screenshot of bug 134183
Slide after Miklos’s fix

Regina Henschel:
PPTX: transparency gradient on solid fill is not considered in export
Add fill to fontwork in export to PPTX

Charts

Zhenhua Fong (PPT/X team):
Chart background is white instead of Automatic/No fill plot area

Custom shapes

Gülşah Köse (Collabora):
Handle greyscale effect on bitmap filled custom shapes (blog post)
Apply mirror property to custom cropped graphic (blog post)
Import support for custom stretch values (blog post)
Import crop position of bitmap filled shape (blog post)
Import graphics cropped into custom geometry as custom shapes (blog post)

Mark Hung (PPT/X team):
Export names of custom shapes

Miklos Vajna (Collabora):
Handle adjust values from both the custom shape and its placeholder

Tünde Tóth (NISZ):
Fix lost arcTo shape

Xisco Faulí (TDF):
PPT: export custom shapes as Bitmap

Hyperlinks

Tibor Nagy (NISZ):
Fix internal hyperlink to slide in PPTX
Fix lost direct hyperlink colors
Fix internal hyperlinks with PPTX export

Zhenhua Fong (PPT/X team):
Import hyperlinks from PPT

Tables

Gülşah Köse (Collabora):
Table row height improvement in Impress (blog post)

Miklos Vajna (Collabora):
Shadow for tables from PPTX in Impress (blog post)

Tibor Nagy (NISZ):
Fix vertical alignment in exported table

Text boxes

Attila Bakos (NISZ):
Fix exporting of placeholders

Gülşah Köse (Collabora):
Fix the placeholders priority order
Text box gets displaced by text coming from master page

Text in shapes

Gülşah Köse (Collabora):
Camera Rotation Improvement (blog post)

Miklos Vajna (Collabora):
SmartArt improvements in Impress, part 5 (blog post)
SmartArt improvements in Impress, part 6 (blog post)

Regina Henschel:
Text transformation “Deflate” is wrongly imported as “Inflate”
Wordart 3D is lost on round trip

Serge Krot (CIB):
Top-aligned text in imported PPTX becomes bottom-aligned

Various

Ahmad Ganzouri:
OOXML support for shadow blur

Bartosz Kosiorek (PPT/X team):
OOXML Fix storage of date in Custom Properties

Dániel Arató (NISZ):
Fix missing chart in exported PPTX

Gülşah Köse (Collabora):
Protect aspect ratio of graphic bullets
Import shadow size

Luboš Luňák (Collabora):
Load images in parallel
Implement PowerPoint ‘flash’ slide transition

Mike Kaganski (Collabora):
Support for transparency attribute of glow effect

Miklos Vajna (Collabora):
Crash fix for pyramid SmartArt import
Detecting 0-byte files based on extension in Impress and elsewhere (blog post)

Samuel Mehrbrodt (allotropia) and Piet van Oostrum:
Tab positions not being retained in PPT and being lost in PPTX

Tibor Nagy (NISZ):
Fix duplicated slide name with PPTX import

Vasily Melenchuk (CIB):
Support API-based MS-CRYPTO algorithms

Zhenhua Fong (PPT/X team):
Correct positions for group shapes
SmartArt caption text location is wrong

From left to right: PowerPoint, LibreOffice before Zhenhua’s fix, LibreOffice after the fix

Tender to implement Curl based HTTP/WebDAV UCP (#202104-01)

Note: for questions asked about this tender and their respective answers, please see the bottom of this page


We are extending the application deadline.

The deadline for questions stays as in the original tender: June 15, 2021
The deadline for applications has been extended to: June 24, 2021


The Document Foundation (TDF) is the charitable entity behind the world’s leading free/libre/open source (FLOSS) office suite LibreOffice.

We are looking for an individual or company to implement Curl based HTTP/WebDAV UCP.

The work has to be developed on LibreOffice master, so that it will be released in the next major version.

The task consists of addressing two problems. All of the mentioned features and requirements are a mandatory part of this tender and therefore have to be part of the bid. This tender does not contain any optional items.

Problem description #1 – Currently we need to bundle crypto libraries

  • TDF releases of LibreOffice bundle both OpenSSL and NSS, but both libraries have a high number of security issues.
  • On macOS and Windows, neither OpenSSL nor NSS integrate with the crytographic APIs supplied by the operating system, so they will use a bundled hard-coded set of trusted certificate authorities (CAs), that is different from what the operating system itself would trust. This hard-coded set of trusted certificates is also not user-modifiable.
  • Additionally, OpenSSL cannot ever be used from the system because it has no application binary interface (ABI).

Problem description #2 – Currently we duplicate and use different HTTP/WebDAV UCPs

  • One which is used by everybody, including TDF releases, using a bundled Neon WebDAV library. This requires OpenSSL and cannot be used on a hypothetical Apple iOS port.
  • Another (for a hypothetical Apple iOS port) using a bundled Serf library. This requires OpenSSL.
    • Serf does not actually support WebDAV directly, only HTTP, so the UCP itself implements the additional WebDAV protocol features.
    • It is complicated to build, as it drags in two other bundled external libraries.
    • Additionally, this cannot be upgraded to a current version without introducing a new build dependency on the “scons” tool.
  • TDF releases also bundle the Curl library.
    • This can can do HTTP, likely similar to Serf.
    • Also, it can use native operating system cryptographic APIs and trusted certificate authorities (CAs) on Windows, macOS and Linux.
    • It can be used on Apple iOS without problems. (iOS deliverables are not part of this tender.)

The solution we seek, and as such the scope of this tender, is to implement a HTTP/WebDAV UCP with Curl, possibly based on code from the Serf UCP, to solve these issues, by getting rid of four bundled external libraries and one hard OpenSSL dependency. Besides addressing the above issues, the new Curl-based implementation needs to be at least as functionally complete as the existing Neon-based one.

All technology standards of relevance, as well as their targeted versions for this tender should be declared or defined in the offer’s description of implementation (e.g. name and version of the cryptographic API on the respective operating systems).

A key item of the deliverables for this tender, and therefore also a decision criteria – besides qualification, references, price, and completeness of fullfilment – is extensive documentation about the approach chosen to implement the above items, covering more than just the pure implementation. We expect bidders to provide documentation on both the code and the non-code parts of this tender, e.g. methodology, structure and technical aspects.

The Document Foundation will publish this under a free and open source license and make it available to the general public. Another criteria for the evaluation of the bids will be the description of the required test activities and the delivery of (automated) tests supporting work items for the described tender implementation or feature specification.

Required skills

  • Extensive knowledge of C++
    Experience working on the LibreOffice source code

Other skills

  • English (conversationally fluent in order to coordinate and plan with members of TDF)

We use free, libre and open source (FLOSS) software for development wherever possible, and the resulting work must be licensed under the Mozilla Public License v2.0.

TDF welcomes applications from all suitably qualified persons regardless of their race, sex, disability, religion/belief, sexual orientation or age.

Bidders will get a preference for including a partner or independent developer who has not been involved in a successful tender before. For such developers, who have not yet been part of a successful tender bid, we aim on a best-effort basis, but without any guarantees whatsoever, to provide some mentoring in understanding the code base and the process in contributing to the code. We expect that time and efforts on the bidder’s side for this should not be part of the paid work for this tender. Please mention such need of LibreOffice development mentoring in your offer.

As always, TDF will give some preference to individuals who have previously shown a commitment to TDF, including but not limited to certified developers and/or members of TDF. Not being a member, or never having contributed before, does not exclude any applicants from consideration.

The task offered is a project-based one-off, with no immediate plans to a mid- or long-term contractual relationship. It is offered on a freelance, project basis. Individuals and companies applying can be located anywhere in the world.

When budgeting, we anticipated that this project (all items combined) to take in the region of 40 days of work. Should bidders’ assessment result in a significantly different number, please reach out to us before sending your bid, so we can clarify upfront.

TDF is looking forward to receiving your applications for the aforementioned tasks, your offer in form of a fixed-time, fixed-budget approach, and the duration period for the implementation in calendar weeks after the final awarding of the tender, via e-mail to a committee at tender20210401@documentfoundation.org no later than May 31, 2021.

Applicants who have not received feedback by June 30, 2021 should consider that their application, after careful review, was not accepted.

All bidders are invited to ask their questions on this tender until June 15, 2021. Questions can be sent informally to the above e-mail address, and answers will be made public in a collected and anonymized form.


We received the following question:

“getting rid of four bundled external libraries” – Could you please clarify what these four libraries are?

Answer: the text only indirectly mentions that serf “is complicated to build, as it drags in two other bundled external libraries”, which are apr and its dependency apr_util (both in external/apr/). So the “four bundled external libraries” would be apr, apr_util, neon, and serf. (There are still other dependencies on openssl, like ExternalProject_python3 and ExternalProject_xmlsec, so we will not get rid of it through this tender.)


We received the following question:

Could you please expand a bit on:

1. the meaning of ‘extensive documentation’, e.g. number of pages or words, and level of detail (classes, functions, line-by-line) that would meet the acceptance criteria?

2. the target audience (e.g. certified LibreOffice developers, or more general?) and purpose of the documentation (e.g. teaching, reference, new implementations, maintenance), as well as form (document format) and acceptable publishing location (e.g. inline, separate-but-within-the-code-base, wiki, or elsewhere)?

Answer: There is no fixed criteria for the documentation. Our goal is to share the knowledge about the approach chosen to address the problem and/or implement the feature, in order to make that information available to the general public.

The target audience is a suitably skilled developer. As such, industry-standard inline documentation in the code, targetting experienced and/or certified LibreOffice developers, plus documenting any non-obvious design choices in an accompanying README file, would be sufficient.

LibreOffice Macro Team: progress report

Macros help users to automate common tasks in LibreOffice. In September 2019 we announced a new team in our community to work on macro support. The last progress report was published in April 2020, so it is high time to look into what has happened since then.

If you are interested in contributing to the macro team (development, testing or documentation), we’d love to hear from you – please send an email to ilmari.lauhakangas@libreoffice.org and we’ll get in touch.

ScriptForge Libraries

The biggest single event was the introduction of ScriptForge Libraries in LibreOffice 7.1. ScriptForge and its documentation is a collaboration betwen Jean-Pierre Ledure, Alain Romedenne and Rafael Lima. You can read more about it in the January 2021 blog post and the work-in-progress Help content.

Wiki docs

Nathan Ullberg continued working on Impress macro articles.

Celia Palacios improved the Python guide and added new macro tutorials, such as populating spreadsheets with data from an SQL database.

Alain Romedenne continued adding syntax diagrams and improved and expanded the Python guide and macro articles.

Mauricio Baeza improved and expanded articles and added new ones, such as Insert a comment with custom presets, Copy content cell from Spreadsheet to other and Charts in Calc.

Steve Fanning added several new examples of Calc macros.

Code contributions from macro team members

Alain Romedenne:

Andreas Heinisch:

George Bateman:

Tomoyuki Kubota:

Code contributions from honorary associate members

Compatibility fixes for Python 3.8 to 3.12 done by David Ostrovsky, Dante Doménech, Noel Grandin (Collabora) and Stephan Bergmann (Red Hat).

Anshu Khare:

Arnaud Versini:

  • Many cleanups and optimisations in Basic handling code

Arpit Bandejiya:

Caolán McNamara (Red Hat):

John Turpish:

Maxim Monastirsky:

Michael Stahl (allotropia):

Mike Kaganski (Collabora):

Noel Grandin (Collabora):

Serge Krot (CIB):

Shubham Jain:

Stephan Bergmann (Red Hat):

Tushar Kumar Rai:

Xisco Fauli (TDF):

Help content

Improved by Alain Romedenne:

Added by Alain Romedenne:

Improved by Rafael Lima:

Improved by Olivier Hallot (TDF):

Added by Olivier Hallot (TDF):

LibreOffice in the Google Summer of Code 2021

New features in LibreOffice are made by volunteers, certified developers, and – during the summer – participants in the Google Summer of Code programme. This is focused on introducing students to open source software development, and last year LibreOffice received a bunch of new features thanks to the work of several students.

Well, we’re happy to announce that LibreOffice is part of this year’s Summer of Code (GSoC). If you’re a student, want to improve your programming skills and receive a financial stipend to implement new features in LibreOffice, take a look. Get in contact with us, show us that you’ve learnt the basics by working on an Easy Hack, and then propose your project(s). We look forward to meeting you!

Click here to get started

And to learn more about GSoC, check out this interview with Gautam Prajapati, who was part of the programme a few years ago:

Please confirm that you want to play a YouTube 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.