Interview with Jennifer Liebel and Tobias Madl from Munich

Last summer, German students Jenny and Tobias started a work placement organised and funded by the City of Munich. One of the most famous Linux deployments in the world, Munich began switching to Free Software across its desktop and server infrastructure in 2003, and completed the process ten years later. LibreOffice is included on all desktop computers, and the City manages its own development of the application, including training students on placements.

Tobias and Jenny talked with Sam Tuke about how they sped up LibreOffice significantly by reorganising its internal task management, with the help of their Mentor Michael Meeks, and the LibreOffice community. This work is a foundational technology for future improvements to our rendering model, converting it from immediate to deferred (ie. idle) rendering, which is necessary to get smooth double-buffered rendering without flicker. It’s great to see the investment from Munich improving the LibreOffice user experience for all.

Tobias and Jenny - students in Munich
Tobias and Jenny – students in Munich


About Jenny

  • Name: Jennifer Liebel
  • Web nicknames: jeyli
  • Nationality: German
  • Location: Munich Germany
  • Blog: Google+
  • Hobbies: personal fitness

About Tobias

  • Name: Tobias Madl
  • Web nicknames: tobaem
  • Nationality: German
  • Location: Neufahrn bei Freising, Germany
  • Blog: Google+
  • Hobbies: sword fighting, bouldering, fire fighting

When was your first LibreOffice contribution?
In August 2014, while completing a work placement with the City of Munich (Landeshauptstadt München), we started working on some LibreOffice ‘Easy Hacks‘; translating German comments into English, and working on automated quality checks with CppUnit tests. Around 20,000 city-owned computers run Linux, and LibreOffice comes pre-installed with the Limux distribution of Linux that they use. In our work placement we had the choice of what to work on, and we chose LibreOffice.
For the next seven months we worked on LibreOffice consistently.
Had you used LibreOffice before that?
Yes we were using it at University for coursework and presentations. It has all the features we need. Later on, Tobias presented his talk at FOSDEM using LibreOffice Impress.
When we began our Computer Science studies we started using Linux because it made software development easier. We chose Linux Mint, and as LibreOffice came bundled with it, we started using it.
How do you explain LibreOffice to others?
It’s an awesome alternative to Microsoft Office and if people don’t want to waste their money, they should definitely try it.
Do your fellow students use LibreOffice too?
Yes, many. Maybe even most of them. Mainly it’s used for presentations and text documents. Students here don’t get provided with a copy of Microsoft Office like at some universities, and many use LibreOffice instead. A few use Latex. Students here use LibreOffice on all operating systems.
What was your initial experience of contributing to LibreOffice like?
It was exciting and challenging: we were using new tools for the first time, like the Gerrit review platform for managing LibreOffice code contributions. Getting used to these tools was a lot of fun.
How did you choose what part of LibreOffice to work on?
We were members of a group of five students whose placement focused on LibreOffice. We worked on different parts. We were both lucky enough to be invited to the LibreOffice Conference in Bern, where we met Michael Meeks who works for the Document Foundation and Collabora. It was a fantastic event, and he proposed tasks that we could work on, and became our mentor.
One of the hardest options proposed was improving LibreOffice’s "main loop". This loop executes the most important actions that LibreOffice needs to start up and run itself, including loading macros, generating previews, updating menus, and more. It sounded demanding, and we both wanted to learn as much as possible, so we chose that.
Together we went through every single timer used in this loop, and invented a new task scheduling system, which manages the loop more efficiently. The list of tasks in the loop is huge; we wrote them up in documentation of our work on the Document Foundation Wiki. We planned and developed the new scheduler together to prioritise important tasks and drop some which were unnecessary.
Optimizing the main loop has been a huge and interesting task. We’ve learned a great deal, and are still improving the quality of our code.
How did you make decisions and distribute the work?
‘Scrum’ is an agile software development methodology that we used to organise our work. We had regular stand-up meetings, did paired programming (especially for harder tasks), and generally worked in the same space for easier communication.
Michael was in England, while we were in Germany, so we had video calls and communicated via email.
What was it like to be mentored?
Working with Michael was demanding but awesome, great to meet and get to know him. He’s very motivated! We had a few communication issues because of distance, and time available, but he was very helpful. He reviewed our code, gave us tips and direction, he spent a lot of time with us on our project.
Did you communicate with other LibreOffice community members?
Markus Mohrhard and Jan "Kendy" Holesovsky helped us a lot when we were starting out with setting up our working environment, and teaching us how to debug code efficiently with the GDB debugging tool.
Building LibreOffice binaries from source code on our own machines was easy thanks to the great documentation, but building a good development environment with the right Vim editor plugins was harder. We went to a LibreOffice/Debian Hackfest and were shown how to do it in person, which was really useful. Kendy also explained the purpose of other LibreOffice libraries that we didn’t understand which clarified things a lot.
Every day we were in the #LibreOffice IRC Chat channel talking with Kendy, Markus, Thorsten Behrens, Stephan Bergmann, Noel Grandin, and others. We had an opportunity for lots of chatting with nice people online, and then met many of them at the FOSDEM conference.
Caolán McNamara was also reviewing our work at the end of our placement, and we were very happy there was someone looking over our code because it was our first time merging code using Git for version control. We’d also like to thank Miklos Vajna, Michael Stahl, Tor Lillqvist, and Bjoern Michaelsen for helping us and reviewing our work.
Once we started chatting with people we felt accepted as part of the LibreOffice community. We were just some students, but people made time to help us.
Had you contributed to Free Software before your work on LibreOffice?
No, this was our first project, but we are thinking about contributing to other projects, maybe the Kodi home theatre application.
What aspect of LibreOffice do you like the most?
Clearly the friendly and open community, which supported us a lot. We had great fun with them.
What the one thing you’d like to change about LibreOffice?
Improve OpenGL support (hello Michael Jaumann, Stefan Weiberg 😉 ).
Michael Jaumann, a close friend of ours, developed OpenGL support for LibreOffice Impress. It was really awesome to get to know how that worked. We’re developing OpenGL shaders in another part of our Computer Science course, and we love it. It’s got so much potential. There are still some issues with implementing full-scale support in LibreOffice due to its use of some older APIs; it’ll be great when those are fixed.
What will you do after your studies?
Jenny: As part of our course commitment, we have to work for the City of Munich for three years after our degree. The City has a large IT department catering for most of its own technical needs, including software and hardware development, and sub-departments dedicated to Java applications, network infrastructure, and custom development workgroups. Our work placement was with the Linux Desktop branch, which caters to the many thousands of City staff using Linux in Munich and the region.
I’m not sure; I’ll probably stay in Munich. Let’s see after three years!
Tobias: I’m definitely interested in software development, but also in information security and embedded development. I’d like to work in a company in one of those fields, or even better a mixture from all of them, but I’m not sure if something like that exists.
Both: You can read more technical details about our work in the Document Foundation Wiki report.

Read More

LibreOffice for Android: prototype editor preview

Contents

  1. Suite improvements
  2. Under the hood
  3. Reaching out
  4. Joining in

A continuous effort

Since January, Collabora’s engineers have been working on the next generation of LibreOffice for Android: a fully functional mobile office suite, running natively, ready to edit rich documents. Thanks to Document Foundation sponsorship, we’ve spent the last three months working intensively towards this vision. Today we’re delighted to present a new prototype with spreadsheet, slideshow, and text editing built-in.

Writer: formatting text
Writer: formatting text
Calc: selecting cells
Calc: selecting cells

Suite improvements

Like LibreOffice Desktop, LibreOffice for Android has separate components for different types of task. On Android, we include Writer, Calc, Draw, and Impress.

All components of the the prototype benefit from the following features:

  • Text editing with on-screen keyboard
  • Simple text formatting with bold, italic, underline and strikethrough
  • Text selection by touching and holding part of a section of text (aka ‘long push’)
  • Easy resizing of shapes and images by tapping them to select, then dragging one of eight directional handles and releasing
  • High quality rendering of a wide range of filetypes, including Open Document Format, OOXML, and MS Office file formats (both binary and rich text format)
  • One tap access to the on-screen keyboard for quickly switching between viewing and editing mode
  • Smooth scrolling between pages

In addition to these, each component has its own distinct features.

Writer

  • Document saving support, updating the originally opened file by default
  • Support for movable embedded images, drawings, and shapes

Calc

  • Touch-triggered selections of table and spreadsheet cells flows across columns, rows, and pages with the drag of a finger.
  • The “parts” sidebar switches between spreadsheets within the document

Draw

Impress

  • The “parts” sidebar shows a scrollable overview of all slides
  • User interface interaction and overlays are now far more accurate

Under the hood

Powerful internals

The editor consists of two parts: LibreOffice core compiled for the Android platform, and a Java component that is responsible for the user interface. They interact with each other via LibreOfficeKit — a thin C++ library that allows any application to access LibreOffice’s powerful internals via a consistent interface.

All three parts (LibreOffice core, LibreOfficeKit, and the Android interface) have been extended to enable them to handle user-specified selections, cursor placement and movement, and commands like loading a document and applying formatting. The signals we’ve implemented make way for other LibreOffice-powered applications to support editing too.

Input and interface accuracy

  • Highlighted text selections can include table contents, allowing for formatting of contents of multiple document sections simultaneously. Previously selections used different internal identification systems and had to be selected separately.
  • All Impress interaction data has been ported to TWIPs — or ‘twentieth of an inch points’, from millimetre based measurements, resulting in much finer internal measurements, and improvements to display and selection for all versions of the application.

Impress: slide overview in sidebar
Impress: slide overview in sidebar
Impress: more accurate selection via TWIPs
Impress: more accurate selection via TWIPs

Performance

More efficient rendering of documents tiles: those relating to non-visible areas are deprioritised and rendered in the background without blocking the initial page view from loading. The result: faster loading of documents for the user and more efficient use of the mobile device’s resources.

Documentation

  • We’ve added extensive javadoc/doxygen comments to pre-existing and updated methods
  • We’ve included javadoc/doxygen comments for all new classes and methods

Performance: non-visible pages deprioritised
Performance: non-visible pages deprioritised
Writer: cross-page text selection
Writer: cross-page text selection

Reaching out

On the rare occasion that our engineers hands haven’t been busy under LibreOffice’s hood, they’ve been writing up their work in blogs and demonstrating it at conferences.

Joining in

This is the start of a journey that you can be part of — get involved with any number of ongoing LibreOffice activities, including LibreOffice for Android documentation, demonstration, and development.

  • Unstable daily builds can be found here
  • A user introduction is available on the Document Foundation Wiki
  • A developer introduction is also available
  • Report any problems you find to the bug tracker, and attach any documents related to the issue so developers can investigate

To complete this prototype preview we’d like to again thank The Document Foundation for making the work possible, and remind you that, as a charitable foundation, donations power their work. Support the foundation by donating via their website.

Read More

Kolab and Collabora target streamlined Kolab filecloud connection at Kolab Summit

The Kolab Summit in The Hague on May 2-3 sets the stage for intensified collaboration between Kolab Systems AG and Collabora Productivity.

The Kolab collaboration suite is a community driven, fully featured groupware solution. Born free, it has been the first choice of security oriented professionals for years, and seen adoption by companies and governments around the world, making it a leading corporate light in the field of Free Software and Open Standards.

LibreOffice-from-Collabora is the professionally supported, enterprise-hardened edition of the world’s most popular Open Source office suite. These two open source products are a natural fit, bringing communication and document editing together.

Users of LibreOffice-from-Collabora can already read and write Kolab-hosted documents directly via the Open Standard WebDAV protocol. To further improve the user experience and ease of configuration of LibreOffice products, engineers from the two companies will be working on an automated Kolab filecloud setup process at the Kolab Summit in a dedicated development room. Collabora is also an official Bronze sponsor of the event.

“This will not only bring an improved document workflow to users of both Kolab and LibreOffice-from-Collabora, but also serves as the first step towards future integration work involving these two leading Free software products,” noted Aaron Seigo, a senior technologist with Kolab Systems.

About Collabora Productivity:
Collabora Productivity delivers LibreOffice products and consulting. With the largest team of certified LibreOffice engineers, it is a leading contributor to the LibreOffice code base and community. LibreOffice-from-Collabora provides a business-hardened office suite with long term multi-platform support. Collabora Productivity is a division of Collabora Ltd., the global software consultancy specializing in providing the benefits of Open Source to the commercial world, specialising in automotive, semiconductors, digital TV and consumer electronics industries.
About Kolab Systems
Kolab Systems AG is an Open Source Independent Software Vendor (ISV) developing, maintaining, supporting and providing a wide range of services around the Kolab Groupware Solution. Fully committed to Open Source / Free Software and Open Standards, it is the global competency leader and custodian for a process open to community participation. The results of that process reach our customers as a quality assured solution that brings all the benefits true Open Source. Part of a company group that excels in security and cross platform solutions, Kolab Systems is prepared to provide you with the level of mission critical data integrity you deserve.

Read More

Good news for Windows Server Administrators: Group Policy template for LibreOffice available

Today we’ve published a new configuration template for Windows Server administrators, making configuration of LibreOffice copies on Windows a snap. By leveraging the flexible configuration back-end built into LibreOffice, thousands of computers can be configured to run LibreOffice in a particular way at once. Any of 25,000 LibreOffice settings can be controlled in this way using Windows Registry keys. Knowing which key does what is a lot less obvious however, which is where the new template comes in.

LibreOffice-from-Collabora Product Development Manager Andras Timar had collected and documented the most important LibreOffice settings into a Group Policy ADMX template file. This can be easily installed into Windows Server to expose those settings in plain English, including language, security, and file format options.

Help make deploying LibreOffice on Windows easier: share your template translations and improvements with libreoffice@collabora.com.

LibreOffice settings management

Internally, LibreOffice-from-Collabora stores its configuration data in XML files, which are organized in hierarchical layers. Each layer can store configuration data for any of 25,000 available settings. Layers stored lower in the stack overrule those above them. In this way the hierarchy shares the model used by the CSS (Cascading Style Sheets) style sheet language.

Different configuration layers may have different access rights. It’s possible to lock a setting in a lower layer, so that it can’t be modified by higher layers. This allows administrators to use low-layer settings to overrule high-layer settings desired by users and groups.

The very lowest layer is the application’s own configuration layer, which is pre-defined in its install set. The very highest layer is the user’s layer, where individual user profile settings are stored. Between these two layers many othes may exist, including a layer for software extension configuration.

How Windows Registry keys are used

Group Policy helps to control the work environment of users and computers in Windows’ Active Directory. LibreOffice-from-Collabora features a configuration reader back-end, which can load settings from the Windows registry, and apply those settings to its own configuration when it starts.

Registry key translation and use

LibreOffice-from-Collabora policies are stored in HKLM\SOFTWARE\Policies\LibreOffice. This registry tree corresponds to the structure of XML in the application’s own configuration files. The last element of each Key is its prop. The first part is the path and optionally the nodes (when the node has oor:op attribute).

The following values may be set: Value (string) and Final (dword, optional). Final means that the setting is locked, and cannot be modified by higher layers. In practice this means that the user cannot modify the setting from their LibreOffice-from-Collabora user interface.

Here is a setting from the Windows registry:

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\LibreOffice\org.openoffice.UserProfile\Data\o]
"Value"="Example Corp."
"Final"=dword:00000001

And the same setting applied to LibreOffice-from-Collabora’s XML configuration file:

<!-- set the Company name -->
<item oor:path="/org.openoffice.UserProfile/Data">
    <prop oor:name="o" oor:finalized="true">
        <value>Example Corp.</value>
    </prop>
</item>

Another Windows registry setting:

[HKEY_LOCAL_MACHINE\Policies\LibreOffice\org.openoffice.Office.OptionsDialog\OptionsDialogGroups\ProductName/#fuse\Pages\Java/#fuse\Hide]
"Value"="true"

And the same setting applied to the application’s own XML configuration file:

<!-- Hide Tools - Options - LibreOffice - Advanced panel -->
<item oor:path="/org.openoffice.Office.OptionsDialog/OptionsDialogGroups">
    <node oor:name="ProductName" oor:op="fuse">
        <node oor:name="Pages">
            <node oor:name="Java" oor:op="fuse">
                <prop oor:name="Hide">
                    <value>true</value>
                </prop>
            </node>
        </node>
    </node>
</item>

Creditable work

The Windows registry-reading backend which supports these templates was developed by order of the Hungarian E-Governmental Free Software Competence Centre in LibreOffice 4.2. Thanks to those engineers for adding this important feature.

Read More