Tender to finish transition of LibreOffice to ODF 1.3 (ODF 1.3 delta) (#202010-01)

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 finish transition of LibreOffice to ODF 1.3 (ODF 1.3 delta).

This tender builds on the previous ODF 1.3 tender and aims to implement additional features.

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


The following required features (section A) need to be implemented:

  • chart:data-label-series. Missing feature. It is needed for import from Excel.
    • Relevant bugs in TDF’s Bugzilla: #94235, #133176
    • OASIS reference: OFFICE-2117
  • chart:regression-moving-type. Implementation of types “center” and “average-abscissa” is missing. It is needed for interoperability with Gnumeric.
    • For this feature, there is existing code that can be extended.
    • Relevant bug in TDF’s Bugzilla: #133423
    • OASIS reference: OFFICE-3959
  • <text:index-entry-link-start> and <text:index-entry-link-end> in user-index. The link marks exist, but the function itself is not implemented.
    • For this feature, there is existing code that can be extended.
    • Relevant bug in TDF’s Bugzilla: #121842
    • OASIS reference: OFFICE-3941

The following are desirable features (section B):

  • draw:fill for background of pages. Attribute draw:background-size specifies whether a background fill covers the entire page or only the content area of the page. It belongs to element <style:drawing-page-properties>. ODF 1.3 has extended its use to all kind of pages. Some related bug reports have been set to “fixed”, but the problem is not completely solved, details in the bug report.
    • The respective attribute seems to get written by LibreOffice already. All Writer documents are now the entire page.
    • Relevant bug in TDF’s Bugzilla: #134734
    • OASIS reference: OFFICE-3937
  • draw:z-index more precise with increase from back to front. Problem needs to be solved too for cases when converting from docx to odt.
    • Relevant bug in TDF’s Bugzilla: #133487
    • OASIS reference: OFFICE-2122

The following features are nice to have (section C):

  • Wrong icon of master document template in Windows Explorer
    • Relevant bug in TDF’s Bugzilla: #133285
    • OASIS reference: OFFICE-2580
  • pivot table based on named range with local scope
    • The previous implementation didn’t work out. This is a rather complex task.
    • Relevant bug in TDF’s Bugzilla: #37268
    • OASIS reference: OFFICE-3665

The following features are purely optional (section D):

  • Adapt function wizard to the fact, that the second parameter of DCOUNT and DCOUNTA may be empty (i.e. optional)
    • This can be qualified as an “EasyHack”.
    • OASIS reference: OFFICE-3906
  • chart:coordinate-region. There is no help about this topic. There exists no option to not use this kind of position and size reference.
    • That feature was handled differently until OpenOffice.org 3.0, where the coordinates included the description, now they are without, i.e. the reference changed.
    • OASIS reference: OFFICE-3928
  • fo:min-height as attribute of draw:text-box. LibreOffice does not use that attribute and ignores it on file open. Missing feature.
    • That element seems to be written by Word, but likely not yet by LibreOffice.
    • OASIS reference: OFFICE-3735

The following feature is purely optional, and not trivial from a UX point of view (section E):

  • svg:stroke-linecap at object style vs draw:style in element. Implementation of draw:style is incomplete. Especially there is no UI to define a line style with round dashes.
    • Relevant bugs in TDF’s Bugzilla: #133499 (Implementation has error), #127509, #127348, #127266, #123349, #53276, #127207
    • OASIS reference: OFFICE-3742

Required skills

  • Extensive knowledge of C++
  • Experience working on the LibreOffice source code
  • Knowledge of the OpenDocument Format standard, particularly in version 1.3.

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.

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 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 (sections A-E) to take in the region of 32 days of work.

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 tender20201001@documentfoundation.org no later than November 10, 2020.

Applicants who have not received feedback by December 8, 2020 should consider that their application, after careful review, was not accepted.

LibreOffice and Google Summer of Code 2020: The results

Google Summer of Code logo

This year, LibreOffice was once again a mentoring organization in the Google Summer of Code (GSoC) a global programme focused on bringing more student developers into free and open source software development. We ran six projects – and all were finished successfully. Students and mentors enjoyed the time, and here we present some of the achievements, which should make their way into LibreOffice 7.1 in early February 2021!

You can experiment with the new functionality by using daily builds and report any problems in our bug tracker.


Styles Inspector for Writer by Shivam Kumar Singh

Mentors: Tomaž Vajngerl, Mikhail Kaganskiy (Collabora)

Dealing with styles and formatting in complex documents can become tedious, especially when you are working on something you did not create yourself. The Styles Inspector implemented by Shivam conveniently displays all the properties of the elements making up a document. It will surely become an essential tool for Writer experts.

Learn more about the Styles Inspector in the final report.

Styles Inspector


Additions – Tight integration of extensions by Yusuf Keten

Mentor: Muhammet Kara (Collabora)

Thanks to the work of Yusuf, users are now able to fetch extensions, templates and other resources as well as discover guide books without ever leaving LibreOffice.

Learn more about Additions in the final report.

Additions


Extending the UI testing framework by Ahmed ElShreif

Mentor: Markus Mohrhard

A domain-specific language (DSL) for LibreOffice’s Python-based UI testing framework was originally implemented by Saurav Chirania in 2018. Ahmed ElShreif continued the work in 2019 and now tackled further improvements in the DSL and in the testing framework itself. This means that the automated quality assurance system is better at preventing bugs from slipping into LibreOffice.

Learn more about the UI testing project in the final report.


Impress shape animations with a real physics engine by Sarper Akdemir

Mentor: Thorsten Behrens (CIB)

Sarper added the ability to enrich presentations with animations powered by the physics simulator engine Box2D.

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.

Learn more about the physics engine project in the final report.


Moving the gallery code to a friendly format by Aditya Sahu

Mentors: Tomaž Vajngerl, Michael Meeks (Collabora)

It was not simple to work on galleries due to them being stored in a custom binary format. Now Aditya got us out of this unfortunate situation and designers will have a much easier time.

Learn more about the gallery project in the final report.


Blurry shadows by Ahmad Ganzouri

Mentors: Tomaž Vajngerl, Miklos Vajna (Collabora)

Shapes and objects in LibreOffice used to only support hard shadows. Now Ahmad implemented proper blurriness for the shadows, supporting both ODF and OOXML formats.

Blurry shadows

Learn more about blurry shadows in the final report.


Wrapping up

Many thanks to all students who spent their summer time improving LibreOffice. You are awesome! And special thanks also to the mentors who always put so much love and energy into these tasks. That‘s what makes LibreOffice rock.

Now we are looking forward to next year’s GsoC. If you are interested, why not prepare early? Learn more at out wiki page where some ideas are listed. Participating in GSoC is a great way to build your skills, and show future employers what you’re capable of!

Tender for implementing support for a dedicated, built-in UNO object inspection tool in LibreOffice (#202007-02)

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 support for a dedicated, built-in UNO object inspection tool in LibreOffice, to start work as soon as possible.

In order to make working with UNO objects easier and to avoid the need to always install extensions before debugging, it is necessary to be able to inspect UNO objects in a running LibreOffice instance effectively.

This task involves reading the existing Basic IDE Watch code, evaluating how it can be improved based on ideas implemented in external tools like xray and MRI and extending the Watch code to be a first-class inspector that allows focusing the relevant part of the UNO API for opened documents and also based on your current selection (similar to what is possible in web browsers).

A good part of the features are implemented already. Work carried out under this tender will therefore mostly consist in making the features more accessible and more stable, adjusting the UI and refactoring things.

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


The following required features need to be implemented:

  • Dockable toolbar that can appear at the bottom of a document frame, similar to find-bar.
  • Left-hand side of the toolbar exposes a snapshot of a useful subset of the DOM as a tree view: Writer paragraphs, Calc sheets, Impress slides
    • This tree widget should populate its content on-demand whenever possible in order to ensure performance.
  • Point&click inspect mode (similar to F12 in Chrome): combine Help -> What’s this (point on something & then an action) and normal selection, so it’s possible to point on something (e.g. an image), make it the current selection and automatically launch DevTools on it. Perhaps rename ‘DevTools’ to something else.

    Note that this is mostly UI work, ThisComponent.CurrentController.Selection in Basic already gives access to the current selection in a not-so-convenient way.

  • Right-hand side: show details in a table about the current selected item in the “DOM tree-view”, which is implemented as part of the watch window in the Basic IDE:
    • object’s UNO properties
    • object methods
    • supported services and interfaces
  • User documentation for the new dialog is mandatory.
  • Brief developer documentation for the newly introduced classes is required.
  • Whenever adding new functionality, it should be considered if it’s possible to test the functionality with automated tests with reasonable amount of effort.

The following are optional features:

  • Configuration support: remember which tabpage was open last time (properties, methods, etc.)
    • Remember sorting settings (prioritize paragraphs/sheets/slides and other relevant properties or sort alphabetically)
  • Click on value for details: primitive types
    • This is useful if the user selected lots of text for inspection, we can’t show all the content in a table cell, but can if a multi-line edit replaces the table widget.
  • Click on value for details: re-launch DevTools on a sub-object on the right-hand side. This is already handled to a large degree in the existing watch variable code, which represents the object already as a tree.
    • This allows recursion: double-click on a value with a complex type, which has its own properties, methods, etc -> inspect it.
  • Show implementation name of object
    • If a consistent name is provided by the object, this can allow jumping to the relevant C++ code from DevTools easily.
  • Copy&paste support:
    • Normally content of a table in a widget is not easily copy&paste-able. It can help debugging if add explicit support to copy the table content still, e.g. all property names and their primitive values.
  • Improved presentation of the DOM for Writer/Calc/Impress:
    • The inspector tool could be just a generic presenter for any UNO object, but in practice macro and extension authors are interested in a subset of the extremely rich and generic API we provide.
    • The idea is to select a few key properties for each component, so it’s trivial for the user to see how to access the most important details of a document:
      • Writer: style families, paragraph list, text portion list, etc.
      • Calc: sheets, columns, cells, named ranges, etc.
      • Impress: slides, shapes, etc.

Required skills

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

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.

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.
Further discussions on this tender took place on the public board discussion mailing list of The Document Foundation.

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 (incl. optional tasks) to take in the region of 60 days of work. Bidders are free to bid on the required features only. Bidders who bid on both the required and optional features are asked to provide a breakdown in terms of costs for each.

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 tender20200702@documentfoundation.org no later than September 1, 2020.

Applicants who have not received feedback by October 15, 2020 should consider that their application, after careful review, was not accepted.

Status of LibreOffice for Android and iOS

Here’s a quick status update on LibreOffice for Android and iOS (iPhone/iPad).

LibreOffice is an application for desktop platforms, including Linux, macOS and Windows. The Document Foundation, the non-profit entity behind LibreOffice, is currently focused on delivering the best experience on the desktop. (There is also LibreOffice Online, a cloud-based version of the suite, for use in web browsers.)

While The Document Foundation doesn’t currently offer an Android or iOS version of LibreOffice, there is a LibreOffice-based product in app stores from Collabora, one of our certified developers and ecosystem members:

(More apps will be added to this list as they are developed and released.)

For more technically-oriented users: our developer community has been working on a mobile app, LibreOffice Viewer for Android, which also includes experimental editing support. This is not yet ready for widespread usage, but work is ongoing. (Binary builds are also available on F-Droid, but may not represent the latest state of the code.) If you’re familiar with Android app development, we’d appreciate your contributions!

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 summary of achievements was published later that year. Now it is time for another review.

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.

Import/export

nd101 (PPT/X team):
Preserve table background colour when importing PPTX file

Table before nd101’s fix
Table before nd101’s fix
Table after nd101’s fix
Table after nd101’s fix

Preserve text position when importing PPTX file

Text position before nd101’s fix
Text position before nd101’s fix
Text position after nd101’s fix
Text position after nd101’s fix

Ayhan Yalçınsoy:
Export the scaling handle of custom shape


Gülşah Köse (Collabora):

Import table style in PPTX

No table style before before Gülşah’s fix
No table style before before Gülşah’s fix
Table style correct after Gülşah’s fix
Table style correct after Gülşah’s fix

Missing bullet in Smartart

Extra margin on second list level in SmartArt

Missing bullet and extra margin before Gülşah’s fix
Missing bullet and extra margin before Gülşah’s fix
Bullet and margin correct after Gülşah’s fix
Bullet and margin correct after Gülşah’s fix

Tamás Bunth (Collabora):

Chart labels in PPTX appear as “[PERCENTAGE]”

Chart labels before Tamás’s fix
Chart labels before Tamás’s fix
Chart labels after Tamás’s fix
Chart labels after Tamás’s fix

Performance

Gülşah Köse (Collabora):

Presentation does not move forward in Linux (not smooth in Windows)

A big thanks to everyone who helped out! We look forward to further updates.

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. A progress report was published in November 2019, so let’s review everything that 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.

Wiki docs

Thanks to Nathan Ullberg, many wiki articles previously only available in French can now be read in English as well. Nathan also updated existing articles and created an article about manipulating LineShape objects in Impress. Detailed lists of his work can be found on his wiki user page.

Alain Romedenne worked alongside Nathan with the macro articles and translations. He added LibreOffice Basic cheatsheets from Jean-François Nifenecker into the wiki and created a new article concerning input/output to screen with Python. Alain also started creating syntax diagrams for LibreOffice Basic.

Code contributions from macro team members

Andreas Heinisch:

Alain Romedenne:

  • Tests for VBA Enum statement, VBA Err object raise method and LibreOffice Basic Property Get/Set

Code contributions from honorary associate members

Mike Kaganski (Collabora):

Samuel Mehrbrodt (CIB):

Jan-Marek Glogowski (CIB):

Caolán McNamara (Red Hat):

Stephan Bergmann (Red Hat):

  • Various internal improvements to stability

Help content

Improved by Alain Romedenne:

Added by Alain Romedenne:

Improved by Mike Kaganski (Collabora):

Improved by Stephan Bergmann (Red Hat):

Thanks to everyone who worked on these tasks! Everyone is welcome to join our community and get involved – just email ilmari.lauhakangas@libreoffice.org and we’ll get back to you.