Tender to implement support for editing and creation of a Dynamic Diagram feature (#202108-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 editing and creation of Dynamic Diagrams.

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

The task is to solve the following problem: Our existing “SmartArt” import uses the fallback stream in OOX files (and has some issues). It therefore gives us only the draw shapes that are imported, so we lose the original layout. Additionally, in older file versions we don’t have the cached shapes, and therefore can’t render anything.

The solution we seek, and as such the scope of this tender, is to have a schema driven diagram layout as a core feature. This should be interoperable with OOX (at least MSO2016) and have suitable extensions for ODF. It should layout interoperability, and allow editing of the underlying data, and selection of a schema.

The tender consists of the packages

A) Import and export in ODF and OOXML

  • load/save diagram data (layout and data model)
  • show the diagram in a cross-platform and pixel-perfect way
  • this should solve the issues from tdf#106547
  • provide automated test for the diagram layout mechanism

B) Creation of new diagrams within all modules, at least Writer and Draw/Impress

    • the solution should provide a couple of exemplary layouts such as a hierarchy with rectangle for organizational charts, for example, and linear as well circular arrangements of shapes to illustrate processes
    • values should be entered by the user with a floating widget presenting a bullet list that describes the hierarchical position

  • consider accessibility at all UI parts

C) Modification of existing diagrams

  • It must be possible to modify the data model later and add or delete content to the diagram; ideally, the floating input widget opens when the diagram is selected

D) Sharing of diagram layouts via extensions

  • Diagrams are generated from complex XML layouts, which should be provided and shared by the community

E) Document the Dynamic Diagram feature

and optionally

F) Provision of an interactive diagram layout tool

  • In coordination with the UX/design team an user interface should be implemented that simplifies creation of XML layouts

The following two bugs are amongst the relevant ones for this tender:

Support for Editing and Creation of SmartArt: https://bugs.documentfoundation.org/show_bug.cgi?id=37932

Auto-Layout for flowcharts and automatic flowcharts from Calc / Excel: https://bugs.documentfoundation.org/show_bug.cgi?id=92902

Further information can also be found in these two blogposts:

Note: There was recent effort on the layouting side. While this is better than 2-3 years ago, it still requires much work. Especially the editing functionality is just a proof of concept.

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 fulfilment – 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 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 16 weeks 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 one or more of the aforementioned tasks, your financial expectations and the earliest date of your availability, via e-mail to a committee at tender20210802@documentfoundation.org no later than September 20, 2021.

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

All bidders are invited to ask their questions on this tender until September 6, 2021. Questions and answers will be made public in a collected and anonymized form.

 

Tender to implement autoupdater (#202108-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 implement an autoupdater for LibreOffice.

Currently, LibreOffice can notify the user about a new version, but download and installation require manual action by the user, it is not automated. With plans of a “rolling release” model, that results in more frequent updates, e.g. biweekly or monthly, we want to improve this system.

Mandatory requirements

  • The solution has to work on all currently LibreOffice-supported Windows, Linux and macOS versions.
  • The implemented solution should not break the MSI-based LibreOffice installation set.
  • The implemented solution cannot solely rely on app stores autoupdaters, as The Document Foundation does not provide binaries in app stores currently.
  • The work has to be developed on LibreOffice master, so that it will be released in the next major version.
  • The implementation has to be provided with extensive documentation, about the approach chosen to implement the above items. We expect bidders to provide documentation on both the code and the non-code parts of the implementation, e.g. methodology, structure and technical aspects.

Optional items

The proposed solution might include some of the items of the following list, which is neither complete nor exhaustive, and is presented as a set of examples. These items are not mandatory to the completion of the tender, but might favor the granting of the tender in case of ex aequos, after checking that mandatory requirements are fulfilled:

  • Achieve partial and/or delta downloads: in order to optimize the bandwidth of the users, the implementation might proceed with the sole download of the whole changed files (partial downloads) or chunks of changed files or the whole package (delta downloads).
  • The implementation might keep track of other languages than English that the user might have installed and currently uses, and implement the download of the respective updated language packs, as well as of eventual offline help packages.
  • The implementation might verify the compatibility and/or update any extensions the user might have installed and currently uses.
  • The implementation is ready for the integration with the app stores’ installers/updaters.

Additional considerations

The choice of technology or technologies used is up to the bidders. Some of the available options, with none of them being a sole strict requirement, are the following:

The idea behind this tender is described in the following required tickets, whereas the implementation we seek for does not mandate a specific technology to be used, even if the tickets suggest otherwise:

The Document Foundation will publish the related documentation under a free and open source license and make it available to the general public.

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 on the program code 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 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 60 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 one or more of the aforementioned tasks, your financial expectations and the earliest date of your availability, via e-mail to a committee at tender20210801@documentfoundation.org no later than September 20, 2021.

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

All bidders are invited to ask their questions on this tender until September 6, 2021. Questions and answers will be made public in a collected and anonymized form.

LibreOffice project recap: July 2021

Check out our summary of what happened in the LibreOffice community last month…

  • We started July by welcoming allotropia to The Document Foundation’s Advisory Board. Founded in late 2020 with five long-time LibreOffice developers, allotropia’s stated mission is to bring LibreOffice to shine – in as many different shapes and forms as necessary, to serve the modern needs of office productivity software. allotropia was spun off from CIB, another long-time provider of LibreOffice-based products and services (and also a member of the Advisory Board).

  • On the very same day, our documentation team announced the LibreOffice Getting Started Guide 7.1. Covering all LibreOffice modules, from the Calc spreadsheet to the Base database and including chapters on the suite settings as well as macro coding, the Getting Started Guide 7.1 is a valuable companion for organizations that want to deploy documentation on LibreOffice together with the software suite on their offices and also at user’s homes.

  • Meanwhile, we chatted with Tim Brennan Jr. from the Brazilian LibreOffice community. He’s on the Brazilian Portuguese translation and editing team, and recently decided to become a Member of The Document Foundation. Welcome, Tim!

  • Then the Spanish-speaking community held an online meeting with video talks streamed live. The activity was attended by several members, who are recognized for their participation and collaboration in the project.

  • Looking for LibreOffice tutorial videos? We have playlists in English, German and French – but the videos don’t just happen by magic. They’re created by volunteers, so we asked Harald Berger how he makes the German videos. Check it out, and help us to make more!

  • LibreOffice 7.2 is tantalisingly close; it’s due to be released in the middle of this month. We held a Bug Hunting Session for the first release candidate, to identify and squash any last bugs before it goes live.

  • Our LibreOffice New Generation project aims to bring new – and especially younger – contributors into the LibreOffice community. Earlier in the year, we created a flyer for schools and universities, and we’ve sent out printed versions to many people around the world. Now, here’s an alternative design, thanks to Rizal Muttaqin and the Indonesian community!

  • LibreOffice’s documentation team is driven by volunteers around the world. We wanted, we want to say a special thanks to members of the Brazilian Portuguese community, who’ve worked hard to translate and update user guides. So we sent out Open Badges – special, customised badges with embedded metadata, describing their achievements.

  • Our second community interview in the month was with Jackson Cavalcanti Junior, who told us about his work in the documentation project.

  • Release-wise, we had one update in July: LibreOffice 7.1.5 with 55 bugfixes and compatibility improvements.

  • The LibreOffice Conference 2021 is coming up: check out the sponsorship package. The event will run online again this year, due to the ongoing pandemic situation, from September 23 – 25.

  • Just before the end of the month, the documentation team announced another guide: the Draw Guide 7.1. This covers all aspects of the image-editing component of the suite. Great work, everyone!

Keep in touch – follow us on Twitter, Facebook and Mastodon. Like what we do? Support our community with a donation – or join us and help to make LibreOffice even better for everyone!

LibreOffice Conference 2021: Announcing the logo!

In late June, we started a competition to design the logo for our upcoming LibreOffice Conference 2021. We received 22 submissions with many great ideas – thanks to everyone who took part!

The conference organisers examined every design and ranked them, and today we’re announcing the winner, which is created by Alan Ward. Here’s how it looks:

Alan also provided a simplified monochrome version which can be used on merchandise – stay tuned to this blog for more on that. And here’s what he had to say about the design:

This design is inspired by the theme of a community coming together to share common experience. The hexagonal grid motif suggests networking from a technical and a human standpoint. The viewer’s attention is drawn to the LibreOffice emblem, as a focal point in the center. Colors have been chosen from a palette derived from the official LibreOffice typography, to suit both light and dark backgrounds.

Several versions of the logo have been prepared, to suit different applications. These include both full color and monochrome versions, in both hi and low resolution. High resolution printing process can reproduce thinner lines correctly (eg printed documents, PDF files). However, the use of several colors increases production costs or may not be available, so a simple monochrome may be required as an alternative to full-color. Either color or monochrome hires versions of the logo may easily be adapted as a base for a themed wallpaper.

Low-resolution printing processes such as those used to print T-shirts or engrave metal or wood articles require the use of relatively bold lines to show up correctly on the finished product. This is why a simple design with few elements is most effective in this situation. The use of several colors also increases production costs, so a simple monochrome approach is perhaps best for these applications. The monochrome design can easily be adapted for different colors of the support material (e.g. T-shirts in white, gray, black).

Thanks again to Alan for his design – a magic box of LibreOffice goodies is on his way to him! And thanks to everyone else for their submissions (we’ll get in touch and send you some LibreOffice stickers). Even though we had to choose one design in the end, there were plenty of great and creative ideas, and we really appreciate the input.

Now, onwards and upwards to the conference! Keep an eye on this blog for more updates…

Fixing an Interoperability Bug in LibreOffice: Missing Lines from DOCX (part 1/3)

By Hossein Nourikah, Developer Community Architect at The Document Foundation

In LibreOffice, interoperability is considered a very important aspect of the software. Today, LibreOffice can load and save various file formats from many different office applications from different companies across the world. But bugs are inevitable parts of every software:there are situations where the application does not behave as it should, and a developer should take action and fix it, so that it will behave as it is expected by the user.

What if you encounter a bug in LibreOffice, and how does a developer fix the problem? In these series of articles, we discuss the steps needed to fix a bug. In the end, we will provide a test and make sure that the same problem does not happen in the future.

The article is presented in three parts:

  1. Understanding the Bugs and QA
  2. Developing a Bug Fix
  3. Writing the Tests and Finishing the Task

This blog post is the first part.

1. Understanding the Bugs / QA

Bugs can be found in any software and in a broader view, every technological product. There are situations that a system behaves in a way that the user does not like or expect, and then the engineers come in, take action and fix that. It is proven that no software can be completely bug-free, because there is no exact way to describe all the aspects of a software, even mathematically using formal methods.

Although we can not avoid the bugs completely, we can improve the situation. The important thing here is to document these bugs, reproduce them using sample documents, investigate the cause(s), and hopefully fix them as soon as possible while considering the priority. The whole process of dealing with the bugs and improving the quality of the software is is called: “Quality Assurance”, or simply “QA”.

You can take a look at LibreOffice Wiki QA section and ask QA questions in the IRC channel #libreoffice-qa on the Libera.Chat network connect via webchat

1.1. Bug Report

So, you have encountered a problem in the LibreOffice! In this case, first of all you should try to report the bug to Bugzilla. If a bug is not recorded in Bugzilla, there is a little chance that it will be fixed.

So, everything starts with a bug report in TDF’s Bugzilla. A detailed explanation of what a good bug report should contain is available in the TDF Wiki: https://wiki.documentfoundation.org/BugReport

In short, a good bug report should have suitable summary for the problem, appropriate description and specific components/hardware/version for the context of the problem. Steps to reproduce the bug are important parts of every report, because a developer should be able to reproduce the bug in order to fix it.

The bug reporter should carefully describe the “actual results” and why it is different from the “expected results”. This is also important because the desired software’s behaviour is not always as obvious as it seems to be for the bug reporter.

Let’s talk about a regression bug that is recently fixed. The “NISZ LibreOffice Team” reported this bug. The National Infocommunications Service Company Ltd. (NISZ) has an active team in LibreOffice development and QA.

This is the bug title and description provided by the NISZ LibreOffice Team:

Bug 123321 – FILEOPEN | DOC, missing longer line when saved in LO (shorter line remains)

https://bugs.documentfoundation.org/show_bug.cgi?id=123321

Description:
When the attached original document gets saved in LO as doc the middle line gets its length resized.

Steps to Reproduce:

  1. Open the attached doc in LO.
  2. Save it as doc.
  3. Reload.
  4. Notice the changes.

Actual Results: The middle arrow gets smaller.
Expected Results: It should stay the same size even after saving in LO.
Reproducible: Always
User Profile Reset: No

Every bug has a number associated to it, and at TDF Bugzilla, it is referred to by its number, like tdf#123321.

1.2. Bug Confirmation

After a bug is reported, it is needed that someone else check and see If it is reproducible or not. If so, the bug is then confirmed and its status will be set to “New”. In this case, a user named Timur from the QA team of volunteers has confirmed this bug. It is needed that someone else other than the original bug reporter confirms the bug report.

Here, the bug reporter has provided several examples:

Attachments

  • The original file (39.50 KB, application/msword)
  • The saved file. (24.00 KB, application/msword)
  • Screenshot of the original and exported document side by
    side in Writer. (298.50 KB, image/png)
  • Minimized test document in docx format (19.66 KB,
    application/vnd.openxmlformats-officedocument.wordprocessingml.document)

Opening the first file, we see that it contains several shapes. 4 ellipses, 2 diagonal lines, and a vertical line. But if we look closely, we find out that the vertical line actually consists of 3 different vertical lines. This can be understood by try selecting the line, and then pressing the tab to select the other lines.

The Shapelinelength_min.docx only contains 3 overlapped vertical lines (the overlap is not important).

  • First one on the top with the length 0.17″ (Verified in Word 2007)
  • Second one in the middle with the length of 1″ (Verified in Word 2007)
  • Third one at the bottom with the length of 2.77″ (Verified in Word 2007)

When you save it in LibreOffice and reload it, the first and the third vertical lines disappear, but if you select the second one (the only visible after save and reload), you can select the two other lines by pressing “tab” button. If you look at the size of these two lines, you will see that both have the length of 0″.

By opening the examples, saving and reloading them, we can verify that the bug is present even in the latest master build.

Images showing the bug

(Good)

(Bad)

Figure 1. The visible lines in the middle become smaller after save and reload

1.3. Bisect / Bibisect

Regression bugs are special kinds of bugs. They describe a feature that was previously working well, but at some point a change in the code has caused it to stop working. They are source of disappointment for the user, but they are easier to fix for the developers compared to other bugs! Why? Because every single change to the LibreOffice code is kept in the source code management system (Git), it is possible to find that which change actually introduced the bug.

Git has a special tool for this purpose, which is call bisect. It uses a binary search to find the commit that introduced the bug. But for LibreOffice which is a huge piece of software consisting of roughly 10 million lines of code, this can take a lot of time. So, a trick is used here: bisecting with the binaries! If you have access to every built LibreOffice for the commits, you can use git bisect command to find the source for problem in a very short time: This is called bibisect!

A very detailed description is on the wiki: https://wiki.documentfoundation.org/QA/Bibisect

Aron Budea from Collabora Productivity Ltd’s core engineering team did the bibisect, and now we know the exact commit that caused the problem:

Bibisected to the following commit using repo bibisect-win32-6.0.

https://git.libreoffice.org/core/+/d72e0cadceb0b43928a9b4f18d75c9d5d30afdda

Watermark: tdf#91687 correct size in the .doc

Export:
* Watermarks saved using Writer were very small in the MSO.
  Export fUsegtextFStretch property in the Geometry Text
  Boolean Properties.
* tdf#91687: SnapRect contains size of Watermark after rotation.
  We have to export size without rotation.

Import:
* When import set height depending on used font and width.
  Text will keep the ratio. Remember the padding for export.

* added unit test
* introduced enum to avoid magic numbers for stretch and best fit
  properties.

Change-Id: 
I3427afe78488d499f13c543ca401c096161aaf34
Reviewed-on: 
https://gerrit.libreoffice.org/38979
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Andras Timar <andras.timar@collabora.com>

This bug is a regression. The DOCX import/export was working well before this commit, but after that, it doesn’t work: Good catch!

In the second part of this series, we talk about how we can create a fix for the bug.


Hossein Nourikhah is the Developer Community Architect at the The Document Foundation (TDF), the non-profit behind LibreOffice. If you need assistance getting started with LibreOffice development, you can get in touch with him:

E-Mail: hossein@libreoffice.org

IRC: hossein in the IRC channel #libreoffice-dev on the Libera.Chat network connect via webchat

The Draw Guide 7.1 has arrived!

Led by Peter Schofield, the LibreOffice Documentation Team is proud to announce the release of the LibreOffice Draw Guide 7.1, the ultimate guide for LibreOffice Draw.

LibreOffice Draw produces anything from a quick sketch to a complex plan, and gives the means to communicate with graphics and diagrams. With a maximum page size of 300cm by 300cm, Draw is an excellent package for producing technical drawings, brochures, posters and many other documents. Draw manipulates graphical objects, group them, crop them, use objects in 3D and much more.

“The Draw guide update is long due in the set of LibreOffice Guides and I am happy to have coordinated the effort to bring it to the community. LibreOffice Draw is a powerful vector drawing tool plenty of resources and the Guide is the most comprehensive text on the features. I hope the Draw community will thrive with this book.”

Peter Schofield
Peter Schofield

The Draw Guide is available in PDF format and is part of the LibreOffice Library, a set of advanced guides for the LibreOffice productivity suite. Download other important LibreOffice guides in our Documentation website.

Meet the documentation team page!

Happy documenting!