Tender for consultancy on implementing ODF 1.3 conformance in LibreOffice (#201911-01)

The Document Foundation (TDF), the charitable entity behind the world’s leading free office suite LibreOffice, seeks for companies or individuals to

provide consultancy on implementing ODF 1.3 conformance in LibreOffice

to start work as soon as possible. TDF is looking for an individual or company to give technical consultancy on ensuring that LibreOffice will properly implement the Open Document Format (ODF) version 1.3 for both importing and exporting. This can involve one or more of the following tasks:

Required skills

  • Extensive knowledge of C++
  • Experience working on the LibreOffice source code
  • Experience with implementing and testing the Open Document Format

We exclusively 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.

Other skills

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

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.

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.

TDF is looking forward to receiving your applications for one or more of the aforementioned tasks, your financial expectations and the earliest date of your availability, via e-mail to a committee at tender20191101@documentfoundation.org no later than November 15, 2019.

Applicants who have not received feedback by November 29, 2019, should consider that their application, after careful review, was not accepted.

Additional information as per 2019-11-06: When budgeting, we anticipated that this project to take in the region of 20 (twenty) days of work

The Document Foundation is looking for an Administrative Assistant

The Document Foundation is the home of the LibreOffice community and one of the most popular open source projects, with an estimated user base of 200 million people worldwide.

The foundation has existed for seven years and today several activities are coordinated by a multi-national team of open source advocates who look after release management, infrastructure, marketing, quality assurance, mentoring, documentation, user experience and design.

The team is working on lowering the barriers to entry, fostering participation in native language communities, providing the server infrastructure, organizing events, handling travel refunds and – in general – to make it easier to join the volunteers active in all areas of the project.

We are now looking for an Administrative Assistant. The position requires speaking both German and English (which is and remains the project’s main language) and this is the reason why the following tender is in German. Find the official tender below:

Hallo Welt!

Kennst du LibreOffice, das freie Office-Paket?

Wir sind die gemeinnützige Stiftung „The Document Foundation“ und das Zuhause der LibreOffice-Community. Weltweit arbeiten viele Firmen und hunderte Ehrenamtliche gemeinsam an einem der bekanntesten Open-Source-Projekte, das von über 200 Millionen Menschen weltweit eingesetzt wird.

Die Stiftung gibt es seit sieben Jahren und unser vielköpfiges Team aus verschiedenen Ländern sorgt dafür, dass sich Ehrenamtliche u.a. in Marketing, Qualitätssicherung, Entwicklung, Dokumentation, User Experience und Design einbringen können, indem wir beispielsweise die Einstiegshürden senken, die Serverinfrastruktur bereit stellen, Veranstaltungen organisieren, Reisekosten bezahlen und somit den Ehrenamtlichen das Mitmachen erleichtern.

Wir suchen so bald als möglich eine im Home-Office arbeitende

Assistenz der Geschäftsführung (m/w/divers)

in Teilzeit (20 Wochenstunden) zur Festanstellung.

Als spendenfinanzierte gemeinnützige Einrichtung können wir dir zwar keine teuren Boni bieten, dafür ist Arbeiten im Home-Office bei uns Standard, genauso wie flexible Arbeitszeiten und flache Hierarchien. Ideal ist, wenn du im Großraum München lebst, das macht den regelmäßigen Austausch mit den deutschsprachigen Kollegen noch einfacher.

Du kannst mit deinem Einsatz bei uns etwas für den guten Zweck tun und das Arbeiten in einer internationalen Community bereichert ungemein.

Zwar gibt es auch bei uns eine Probezeit, wir wollen mit dir aber langfristig zusammenarbeiten.

Deine Aufgaben

Wir sind in den letzten Jahren gewachsen, deswegen suchen wir jemanden, der verlässlich, zuverlässig, eigenverantwortlich und kompetent administrative Aufgaben übernimmt. Die Administration ist ein notwendiger Teil der Stiftungsarbeit und kommt vor allem unseren Ehrenamtlichen zugute, denen wir damit den Rücken freihalten und viele Projekte überhaupt erst ermöglichen.

Zu deinen Aufgaben gehört unter anderem

  • Du bist erster Ansprechpartner nach außen. E-Mails an unsere info@-Adresse, Anrufe auf der zentralen Nummer und der Posteingang landen bei dir, du antwortest entweder selbst oder leitest an’s Team weiter und du verschickst ausgehende Post.
  • Du kümmerst dich um die Spendenverwaltung. Du erstellst Spendenbescheinigungen, pflegst die Spendendatenbank, beantwortest Rückfragen, führst etwaige Rückbuchungen durch und behältst die verschiedenen Spendenkonten im Blick.
  • Du unterstützt uns bei der vorbereitenden Buchhaltung. Du sammelst, sichtest und prüfst Belege und Kontoauszüge, hast die Budgets, Sachkonten und Umsatzsteuervoranmeldungen im Blick und pflegst die nötigen Zahlen in das DATEV-Modul ein. Eingehende Rechnungen prüfst und bezahlst du. Die anonymisierten Monatsabschlüsse übersetzt du ins Englische, da wir diese regelmäßig veröffentlichen.
  • Du hilfst mit bei der Organisation von Projekten, Ausschreibungen und der jährlichen LibreOffice Conference, die im Jahr 2019 beispielsweise in Almeria in Spanien stattfindet.
  • Du pflegst und organisierst unsere interne Nextcloud-Dateiablage und scannst und archivierst Dokumente.
  • Du bist verantwortlich für unsere Inventarverwaltung und übernimmst den Versand von Marketing-Materialien und von Hardware für Veranstaltungen.
  • Du bearbeitet Reisekostenabrechnungen. Dazu prüfst du die Anträge und Belege, führst Überweisungen ins In- und Ausland durch und buchst ggf. auch Hotel, Konferenzräume und die Anreise für ganze Gruppen.
  • Du bereitest für Sitzungen und Telefonkonferenzen die Einladung, Tagesordnung und Beschlussvorlagen vor, führst und veröffentlichst das Protokoll (i.d.R. auf Englisch), stellst die Präsentationsfolien zusammen und prüfst regelmäßig, wann Entscheidungen des nichtöffentlichen Teils publiziert werden können.
  • Du unterstützt das Mitglieder-Komitee bei der Mitgliedsverwaltung und der Meldung an die Stiftungsaufsicht.
  • Du bereitest Veränderungsanzeigen unter anderem an Stiftungsaufsicht, Versicherung, Bank und Transparenzregister vor.
  • Du hilfst uns dabei, Termine, Fristen und Wiedervorlagen im Blick zu behalten.

Was du können solltest

Sag uns, warum du den Job kannst und welche Praxiserfahrung du hast! Wichtig sind folgende Punkte:

  • Du hast Erfahrung mit (gemeinnützigen) Organisationen.
    Begriffe wie Jahresabschluss, Sachkonto, Tätigkeitsbericht, Umsatzsteuervoranmeldung, A1-Meldung, VBG, DATEV, Zuwendungsbestätigung, Künstlersozialkasse und Zweckbetrieb sind dir nicht fremd. Mit fachlicher Unterstützung navigierst du auch durch die Grundzüge der Buchhaltung.
  • Du beherrscht fließendes und gutes Deutsch und Englisch in Wort und Schrift.
    Du wirst nach außen hin unter anderem mit Behörden, Dienstleistern und Partnern kommunizieren, die Projektsprache intern hingegen ist ausschließlich Englisch. Da du häufig als „Gateway zwischen den Welten“ fungieren wirst, musst du in beiden Sprachen sattelfest sein.
  • Da wir LibreOffice herausgeben und das natürlich auch selbst benutzen, ist ein souveräner Umgang damit wichtig.
    Ein Teil deiner Arbeit besteht in der Gestaltung von Dokumenten und Anschreiben (Writer), dem Erstellen von Präsentationen (Impress) und dem Kalkulieren von Budgets und Kosten (Calc).
  • Fit solltest du auch im Umgang mit vielen E-Mails sein, beispielsweise in Mozilla Thunderbird, mutt oder Roundcube.
    Die Hauptkommunikation im Projekt erfolgt mittels E-Mail – mittels vieler E-Mails! Den Umgang mit Mailinglisten, Mailfiltern und Verteilerlisten musst du beherrschen. Wir nutzen dabei bevorzugt freie Lösungen.

Ebenfalls sehr hilfreich ist Folgendes:

  • Wenn du dich für das Open-Source-Prinzip begeistern kannst und weißt, was es damit auf sich hat, hilft dir das definitiv, dich bei uns zurechtzufinden. Der beste Start gelingt dir, wenn du selbst bereits freie Software einsetzt!
  • Das Arbeiten im Home-Office bietet viele Freiheiten, verlangt aber auch gute Organisation und Selbstdisziplin, damit dir nicht die Decke auf den Kopf fällt. Wenn du mit dieser Arbeitsform schon Erfahrungen sammeln konntest, ist das sicher ein Plus.

Wir freuen uns über deine Bewerbung per E-Mail, inkl. Lebenslauf, Gehaltsvorstellung und frühestmöglichem Eintrittsdatum bis spätestens 5. April 2019 an Florian Effenberger unter floeff@documentfoundation.org. Du kannst deine E-Mail an diese Adresse mittels PGP verschlüsseln.

Bewerbungen, die bis zum 10. Mai keine Rückmeldungen erhalten haben, waren nicht erfolgreich.

Join our team! Job Search for a Development Mentor (#201902-01)

Note that we’re at FOSDEM (building K, level 1, group A) on February 2 and 3, so you can talk to us in person there!

The Document Foundation (TDF), the charitable entity behind the world’s leading free office suite LibreOffice, seeks an individual – or individuals part (or full) time – to be

a Development Mentor

to start work as soon as possible. The role requires the following:

  • Self-starting, remote working experience
  • Experience contributing to FLOSS communities
  • Excellent communication skills, with enthusiasm for mentoring
  • Coding experience (LibreOffice coding preferred)
  • Willingness to travel to Hackfests & conferences in Europe and globally

The role involves working from home at your location for at least 10 hours per week, up to full-time and includes among other items:

Supporting existing mentors in the LibreOffice community including:

  • Building relationships between existing mentors and new contributors
  • Identifying and on-boarding new contributors
  • Affirming and encouraging their contribution
  • Building initial relationships with them
  • Encouraging them to join IRC to meet the teams
  • Introducing them to domain experts for deeper learning
  • Helping to educate new contributors by
  • Positively reviewing their code contributions
  • Introducing them to our tooling and culture
  • Attracting new contributors by promoting the project
  • Interaction with UX volunteers

Previous experience with such tasks is highly welcome, so is using free software. Speaking and writing English reasonably well is a mandatory requirement.

The work time during the day is flexible, apart from some fixed times when availability is required (e.g. during meetings, which usually take place at 14:00 or 15:00 UTC once per week).

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

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

TDF is looking forward to receiving your applications, including curriculum vitae, your financial expectations, and the earliest date of your availability, via e-mail to Florian Effenberger at floeff@documentfoundation.org no later than March 29, 2019. You can encrypt your message via PGP/GnuPG.

If you haven’t received feedback by April 29, 2019, your application could not be considered.

DBMS migration in LibreOffice

In 2017, The Document Foundation (TDF) launched four tenders aimed at improving LibreOffice in several strategic areas, and documenting the approach and work carried out, to foster sharing of knowledge and inclusion of the wider volunteer community.

One of the tenders was focused on the implementation of a HSQLDB binary format import in LibreOffice (https://blog.documentfoundation.org/blog/2017/05/04/tender-implement-hsqldb-binary-format-import-libreoffice-201705-03/), and after a careful evaluation by the Foundation’s Board of Directors – with the help of competent and independent volunteers – has been assigned to Collabora.

Tenders are funded by donations, and are supposed to improve LibreOffice in specific areas where the tasks are beyond the capabilities of independent volunteer developers, and also share the knowledge amongst the volunteer community to foster active participation in development and related tasks.

Collabora has developed a mechanism to import database files with high fidelity from the HSQLDB binary file format, used by many existing ODB files, by reading the Java serialization code, and writing a filter to import all data into LibreOffice Base. The objective was to remove the legacy Java/HSQLDB database and to simplify the move to Firebird.

Tamás Bunth, the Hungarian software engineer working at Collabora who has worked at the tender, has extensively reported about the progress and the results on his personal blog:

  1. DBMS migration in LibreOffice: Firebird and HSQLDB schema import
  2. DBMS migration in LibreOffice: HSQLDB binary import
  3. Final steps of LibreOffice database migration
  4. Database migration in LibreOffice: bug fixes and more

The feature is going to be released with LibreOffice 6.1, as an experimental one (to allow some further testing before being officially released with LibreOffice 6.2). So, to access it users have to flag the “enable experimental features” option in Tools > Options > LibreOffice > Advanced. If the option is not enabled, the embedded HSQLDB database engine remains the default for new Base files with LibreOffice 6.1, as in any previous version.

If experimental mode is enabled, the embedded Firebird database engine will not only be enabled but will also become the default, while the embedded HSQLDB database engine – although deprecated – will still be available as an alternative.

LibreOffice Base users are encouraged to migrate their database using the embedded HSQLDB to embedded Firebird new migration assistant (released with LibreOffice 6.1 as part of the tender), which is not using the HSQLDB database engine and will be available in LibreOffice releases even after the embedded HSQLDB support will be fully removed.

At the same time, LibreOffice Base users who want to stick with the HSQLDB database engine should start planning the migration of their database to an external HSQLDB server.

Image handling rework for LibreOffice – Collabora’s tender results

Donations to The Document Foundation are used for many purposes, such as organising events, maintaining our infrastructure, and paying a small team to handle QA, marketing, documentation and other tasks. But donations are also used to fund tenders, whereby companies and individuals improve LibreOffice in specific areas and share knowledge with the community.

One such tender was posted in May 2017: “improve image handling in LibreOffice (#201705-01)“. When images are used in LibreOffice documents, the software manages them in a “life-cycle” which includes importing, displaying, modifying, exporting and more. To save memory – especially with large documents – images that are not currently on screen are sometimes moved out of memory and saved onto disk in a technique known as “swapping” or “paging”. The goal of the tender was to improve LibreOffice in these areas, making it more efficient at handling images and modernising the code base.

Collabora was selected to implement the tender; the work is now complete, and it will benefit all users in the upcoming LibreOffice 6.1 (due to be released in early August). Here are some technical notes about what was improved in the source code of LibreOffice, and what was achieved.

Problems with the image life-cycle

Currently, when an image is read from a document, a GraphicObject is created for the image and handled over to the GraphicManager which manages the life-cycle. When this happens we usually get back the string based unique ID of the GraphicObject with which we can always get access the image by creating a new GraphicObject with the unique ID (GraphicManager will look for the image with that unique ID).

Usually the unique ID is the one that is passed on between layers in LibreOffice (for example, from the ODF filter when loaded, to the model, where it is manipulated and then to the OOXML filter when saving) but the unique ID itself is just a “reference” to the image and by itself it doesn’t have any control over when the image can safely be removed and when not. It could happen that in a certain situation we would still have the unique ID referenced somewhere in the model, but the image would already be removed. This is dangerous and needs to be changed.

Usually for this kind of object we use a reference counting technique, where we pass an object around that holds a reference to the object resource. When the object is created, the reference count is increased; when destroyed, the reference count is decreased; when the reference count reaches zero, the resource object is destroyed.

The solution for the life-cycle

So instead of passing around a unique ID, the idea is to use the usual reference counting technique, which is normally used in this situation. The GraphicObject is mainly a wrapper around Graphic (which then holds a pixel-based image, or animated image, or possibly a vector image), and in addition it keeps additional attributes (gamma, crop, transparency etc.). It also has the implementation of swapping-in and out.

On the other hand, Graphic is properly reference-counted already (Graphic objects are reference counting the private ImpGraphic) so the solution to the life-cycle problem is that instead of GraphicObject unique ID, we would just pass along the Graphic object instead, or XGraphic, XBitmap which are just UNO wrappers around Graphic. Potentially we could also pass along the GraphicObject or XGraphicObject (UNO wrapper for the GraphicObject) when we would need to take into account the graphic attributes too. This should make the life-cycle much more manageable.

GraphicObject refactoring

GraphicObject and the implementation of XGraphicObject (UnoGraphicObject) and XGraphic (UnoGraphic) were located in module svtools, which is hierarchically above vcl. This is problematic when creating new instances like in Graphic.GetXGraphic method, which needs to bend backward to make it even work (ugly hack by sending the pointer value as URL string to GraphicProvider). The solution to this is to move all GraphicObject related things to vcl, which surprisingly didn’t cause a lot problem and once done, it looks like a much more “natural” place.

Managing memory used by images

Previously, the memory managing was done on the level of GraphicObjects, where a GraphicManager and Graphic-Cache were responsible to create new instances from uniqueID and manage the memory usage that GraphicObject take. Here’s the hierarchy before refactoring:

This is not possible anymore as we don’t operate with uniqueIDs anymore, but always use Graphic and XGraphic objects (in UNO), so we need to manage the creation of Graphic object or more precisely – ImpGraphic (Graphic objects are just reference-counted objects of ImpGraphic).

So to make this possible GraphicManager and GraphicCache need to be decoupled and removed from GraphicObject and a new manager needs to be introduced between Graphic and ImpGraphic, where the manager controls the creation and accounts for the memory usage:

Graphic swapping and swapping strategy

The new swapping strategy is relatively simple – if a lot of memory is needed by graphic objects in a certain time, we let it use it and don’t try to over-aggressively try to free it. In the past this cased swap-out and swap-in cycle that made the application completely unusable. In the future, external hints when a certain Graphic object can be swapped out may be added, so we can perform swapping more effectively. There are also several other ideas which will increase performance and reduce memory usage that can be implemented now with the new hierarchy where most all of the swapping is contained inside the Graphic itself, but all of this is currently out of the scope of this work.

In conclusion

Thanks to Collabora and Tomaž Vajngerl for their work on this. Although the details are highly technical, the end result is a faster and more robust office suite. If you’re an end user of LibreOffice and your documents include lots of images, you will be able to enjoy the benefits of this work in future releases, starting with LibreOffice 6.1.

Welcome gla11y, the user interface accessibility checker!

LibreOffice is designed with great attention to accessibility, to make the suite convenient and comfortable to use, and to cater to users with special needs. Last year The Document Foundation published a Tender to Implement Accessibility Improvements regarding user interface widgets that are added to the suite but which have accessibility shortcomings.

French company Hypra, which works on accessibility improvements in free and open source software, was awarded the tender. Today they are announcing the tool that they have developed – note that this tool is not targeted at end users of LibreOffice, but rather at developers. Of course, all users who have experienced accessibility issues in LibreOffice can benefit from it. Let’s hear what Hypra has to say…


Making LibreOffice usable by everybody, including disabled people, is a must so that anyone can work on documents for their own uses or their daily job. Accessibility concerns happen to be very diverse, and fixing or even just detecting them can be complex. Some of them can actually be detected automatically, and this is the goal of the “gla11y” tool, which is the result of the tender.

Gla11y (Glade accessibility) is a Python script which takes .ui files (Glade graphical interface description files), and reports the accessibility issues which can be found with static analysis. This includes mostly the missing labelling relations, which happens to be a very frequent accessibility issue. If, for instance, a dialog box contains several GtkEntry widgets to be filled in by the user, and several GtkLabel widgets to describe them, but with no relations between the two series, a blind user would have to remember the different parts, thus considerably reducing usability. This will show up in gla11y warnings as:

     myfile.ui:5 WARNING: 'GtkLabel' 'label1' does not specify what it labels within 'GtkFrame' 'frame1'
     myfile.ui:9 WARNING: 'GtkLabel' 'label2' does not specify what it labels within 'GtkFrame' 'frame1'
     myfile.ui:12 WARNING: 'GtkEntry' 'entry1' has no accessibility label while there are orphan labels within 'GtkFrame' 'frame1'
     myfile.ui:14 WARNING: 'GtkEntry' 'entry2' has no accessibility label while there are orphan labels within 'GtkFrame' 'frame1'
     4 new warnings 

Adding relations between each widget and its label will allow screen readers to tell users exactly when to type what.

Running a basic version of gla11y alongside compilation of LibreOffice was integrated on February 21; It only checked for broken relation links. It turns out that there is currently no such bug, so it didn’t raise any warning, but now we are sure that no such bug will be introduced in the future (as happened in the past).

Gla11y runs in all compilation cases, except when using the old version 2.6 of Python and python-lxml is not available, so it will be running in mostly all development scenarios, thus catching issues as early as possible. It is useful to have the python-lxml library installed, or make sure that it is built automatically by LibreOffice, so that the analysis can be done faster and warnings get displayed better.

An initial version of more advanced analysis, which actually finds some existing issues, was merged on February 28.

As of today, the tool reports a total of 2155 warnings in 434 .ui files (out of the existing 981 .ui files). Of course, we do not want to overwhelm developers with all of these existing issues, so a suppression mechanism has been implemented, so that only warnings for new issues will be emitted; warnings for existing issues will be silenced by rules in suppression files.

In this way, to start with we will prevent the introduction new accessibility issues, while existing issues are progressively fixed. Also, for now only very basic warnings are enabled, and we will enable the complete set progressively. That will allow us to observe how developers react to some warnings, and fix heuristics and documentation on the
wiki
for them, before enabling more warnings.

Regarding fixes for existing issues, gla11y reports both labels and widgets which don’t have relations (“orphaned” labels and widgets). Very often, it is very easy to find which relation is missing and remove the warnings (actually, remove the suppression rules) with a few lines of .ui files. Working on this could thus be part of “Easy Hacks” for new contributors.

Fixing warnings raised by gla11y will hopefully greatly improve usability in LibreOffice for disabled people. Of course, there remain many other accessibility issues which can not be detected by static analysis, but gla11y will helps to cover a fair bit of the work, and leave time to concentrate on the more difficult issues.


Thanks to Hypra for their work on this tool! Learn more about how TDF uses its tendering process to improve LibreOffice and share knowledge with the community.