Welcome to The Document Foundation Planet

This is a feed aggregator that collects what LibreOffice and Document Foundation contributors are writing in their respective blogs.

To have your blog added to this aggregator, please mail the website@global.libreoffice.org mailinglist or file a ticket in Redmine.


Tuesday
21 October, 2025


face

General Activities

  1. LibreOffice 25.2.6 was announced on September 8
  2. Olivier Hallot (TDF) improved the help for Select Function in Calc’s formula bar, expanded help for the selection of chart data sources, added AutoFilter and Pivot Table/Chart to the help page on sheet protection, added information about summary above/below to the help of Calc’s SUBTOTAL() function, documented sensitivity in the help page for Solver and added the description meta element to the Help page templates
  3. Gábor Kelemen (Collabora) improved the script for finding unneeded includes in the code and did many code cleanups
  4. Tomaž Vajngerl (Collabora) implemented a sheet view functionality in Calc allowing to manipulate AutoFilters in one view without affecting other views
  5. Pranam Lashkari, Maya Stephens, Gökay Şatır, Rashesh Padia and Mohit Marathe (Collabora) worked on LOKit used by Collabora Online. Maya also fixed an issue with Ctrl+clicking hyperlinked objects
  6. Miklós Vajna (Collabora) expanded Writer Markdown export support, worked on change tracking of formatting, continued improving the handling of tracked changes that depend on each other and fixed bullet list style going missing with PPTX export
  7. Xisco Faulí (TDF) implemented right-to-left text direction and bidirectional text support in SVG import, added venv to the internal Python, fixed crashes, added several new automated tests, upgraded many dependencies and did many code cleanups and optimisations
  8. Michael Stahl (Collabora) improved the DOCX compatibility of floating tables, helped Miklós with interdependent change tracking in Writer and fixed an issue with document compression
  9. Mike Kaganski (Collabora) fixed Help for BASIC’s Str function, adapted Writer’s change tracking to DOCX’s inability to track the deletion of comments, made date handling code more robust, improved the Visual Studio IDE integration, made the handling of double variables in BASIC more robust, replaced dtoa library with fast_float for faster string-to-float parsing and fixed an RTF import issue with some paragraphs appearing outside of their frames. He also did many code cleanups and optimisations
  10. Caolán McNamara (Collabora) fixed many issues found by static analysers and did code cleanups and optimisations
  11. Stephan Bergmann (Collabora) worked on the WASM build. He also adapted the code to compiler changes and did code cleanups
  12. Noel Grandin (Collabora) fixed an (unreleased) issue with image fills disappearing at lower zoom levels, improved the performance of spreadsheets with thousands of shapes, improved the performance of 3D charts, fixed a performance issue with importing SVGs with small scaling, improved the performance of Calc’s Remove Duplicates, implemented Skia native rendering of bitmap tiling to improve the performance of filled polygons and fixed an issue with Insert Special Character dialog not being available with mergedlibs builds (Windows releases). He also did many code cleanups and optimisations, especially in the area of transparency handling
  13. Justin Luth (Collabora) fixed an issue with the alignment setting in Page Number Wizard, fixed localised accelerator shortcut conflicts, fixed many issues with page styles, page breaks and spell checking, improved the Bullets and Numbering dialog by showing the currently

Friday
17 October, 2025


face
  • Plugged through mail & tickets. Call with Dave. Sync with Laser, chat with a partner.
  • Published the next strip exploring the somewhat perverse way that those who do the most work are often blamed for not having doing more:
    The Open Road to Freedom - strip#39 - The Blame Game

Thursday
16 October, 2025


face
  • Up early, more Marketing & Sales updates lunch; tour from Doug of the Lava-Lab - driving all sorts of KernelCI and other testing goodness.
  • Bid 'bye to Eloy, wrapped up, fixed Alina's bluetooth setup, dropped her into Cambridge & home.
  • Out for new antibiotics - started on the mail and admin backlog, made some progress.

face

Since C++11 when enum class (also named scoped enum) is introduced, it is preferred to plain enum which is inherited from C programming languages. The task here is to convert the old enum instances to enum class.

Rationale

enum class has many benefits when compared to plain enum, as it provides better type safety among other things. Implicit conversion to integers, lack of ability to define the underlying data type and compatibility issues were some of the problems with plain enum that enum class solved in C++11. Although since then enum has improved and one can specify underlying type in the scoped enumerations.

Plain enums pollute namespace, and you have to pick names that are too long, and have to carry the context inside their names. For example: INETMSG_RFC822_BEGIN inside enum _ImplINetRFC822MessageHeaderState. With an enum class, it is simply written as HeaderState::BEGIN. When placed inside a file/class/namespace that makes it relevant, it is much easier to use: it is more readable, and causes no issues for other identifiers with possible similar names.,

See this change:

You can read more about that in:

Finding Instances

You may find some of the instances with:

$ git grep -w enum *.cxx *.hxx|grep -v "enum class"

When you count it with wc -l, it shows something more than 2k instances.

Examples Commits

You can see some of the previous conversions here, which is around 1k changes:

$ git log --oneline -i -E --grep="convert enum|scoped enum"

This is a good, but lengthy example of such a conversion:

Implementation

First of all, please choose good names for the new enum class and values. For example, you may convert APPLICATION_WINDOW_TITLE into Application::WindowTitle. Therefore, do not use the old names as they were.

Converting enum to enum class is not always straightforward. You should try to understand the code using the enum, and then try to replace it with enum class. You may need to add extra state/values for situations where 0 or -1 or some default value was used. There are cases where a numerical value is used for different conflicting purposes, and then you have to do some sort of conflict resolution to separate those cases.

You may end up modifying more and more files, and a few static_casts where they are absolutely necessary because you are interpreting some integer value read from input. These are the places where you should check the values yourself in the code. You have to make sure that the numerical value is appropriate before casting it to the enum class.

If you want to do bitwise operations, you should use o3tl::typed_flags, for example:

enum class FileViewFlags
{
    None = 0x00,
    MultiSelection = 0x02,
    ShowType = 0x04,
    ShowNone = 0x20,
};

template<> struct o3tl::typed_flags : o3tl::is_typed_flags<FileViewFlags, 0x26> {}

Then, you may use it like this:

    if (nFlags & FileViewFlags::MULTISELECTION)
        mxTreeView->set_selection_mode(SelectionMode::Multiple 

face

Look! Our Nepalese community is preparing a very cool LibreOffice event for early December. More details to come – stay tuned to this blog 😉

Picture of community members at LibreOffice event in Nepal, and the sentence: Dots that are connecting free communities


Wednesday
15 October, 2025


face
  • Up early, Marketing & Sales in-person all day; lunch at the cafeteria, out for dinner & darts together in the evening.

Tuesday
14 October, 2025


face
  • Up early somewhat better; partner meeting in Cambridge, great to show-off lots of new COOL features. Mini tour at the end.
  • Marketing & Sales in-person meetup; lots of planning, analytics, planning and more.
  • Pub quiz together in the evening, back with Eloy to Newmarket.

face

Today, Microsoft is ending official support for Windows 10. This leaves users who want to continue using the operating system with few alternatives — especially if they have an old PC that is not compatible with Windows 11’s demanding hardware requirements — other than buying a new PC.

If you’re tired of struggling with your operating system instead of getting work done, it might be time to reconsider your setup. Linux isn’t just for servers and developers; it’s also a viable alternative to Windows for desktop use. Whether you’re looking for better performance, greater privacy, or a more intuitive user experience, Linux is the answer.

Here are 10 reasons why switching to Linux is a good idea:

  1. No Forced Updates. Windows often interrupts your work with updates and sometimes restarts your system without permission. With Linux, you have full control over when and how you update. No surprises. No more restarts during a Zoom call!
  2. It’s Really Free. Linux costs zero in any currency. Most distributions are open source, meaning you can download, install and use them for free forever, with no licence fees or activation keys. There are also no “Pro” versions that hide features which are only available for a fee.
  3. Speed and Performance. Linux is generally faster than Windows, particularly on older PCs. It starts up faster, uses less RAM, and does not slow down due to background processes. Your old PC will be given a new lease of life and will continue to function well for years to come.
  4. Privacy Built In. Unlike Windows, Linux does not track users, collect data about your connection or send your data to the cloud for “diagnostics”. What you do on your PC stays on your PC — as it should be with all operating systems.
  5. No Useless Software. Windows comes with pre-installed software that you never asked for, such as games, shopping apps and trial versions. Microsoft also suggests Edge as if it were the only browser available. In contrast, Linux distributions allow you to choose exactly what to install, based on your needs.
  6. Security Without Issues. Linux is less targeted by malware because it has more robust user authorisation systems, meaning that an antivirus is not always required. It is more secure from the outset, especially for experienced users.
  7. You Own Your System. Linux enables you to customise every aspect of your desktop, from the user interface to the kernel. Windows locks you into its ecosystem, whereas Linux puts you in control.
  8. Easy Application Management. Linux uses package managers that enable you to install and update apps from trusted sources with a single command. This makes it much cleaner, safer and faster than Windows.
  9. Freedom of Choice. The fact that not all Linux systems are the same is a good thing, as it allows you to choose the distribution that best suits your needs. While Windows offers a single version, Linux offers dozens.
  10. Community Matters and Helps. Linux boasts a global community of passionate users

Monday
13 October, 2025


face
  • Fever in the night, antibiotics in the morning; not good. Sync with Thorsten, plugged away at admin, some hacking.

Sunday
12 October, 2025


face
  • St Johns in Cambridge with H. and Martha in the morning, as taxi driver - great talk on James from Chris.
  • Back for lunch together, played games, J. droped Martha home - feeling pretty unwell, slugged variously.

Saturday
11 October, 2025


face
  • Up lateish, H. off to Oxford; dug into creating a unit test to provoke an unusual race, seemingly getting it in the end.
  • Poked at J's reduction lino-print of seal & sea-creatures to try to get more uniform printing. Some proof-reading action with E, out for a walk.
  • David over for a nice roast dinner & birthday celebration.

Friday
10 October, 2025


face
  • Mail, patch review, sync with Dave, plugged away at admin, contract bits. Lunch. Catch up with Stephan.
  • Out for a run with J. More debugging on return, call with Mum. Dinner, back to work until extremely late.

face

This is the third and final post on the topic of the artificial complexity of the OOXML format. This complexity is the result of careful design aimed at preventing interoperability. Developers have to deal with a veritable “maze” of tags, even for the simplest content. This binds users to the Microsoft ecosystem, providing the first example of standard-based lock-in.

The PPTX case

To demonstrate the difference in complexity between Impress and PowerPoint XML schemas in ODF and OOXML formats, I created a simple eight-slide presentation summarising the most common types: title and subtitle, centred text, bulleted list, table, vector image, photo, colour graphics and video. I created the same file using both software programmes, starting from a basic template without a background to prevent interference with the slide format and, consequently, the XML schema.

This is the PDF file of the presentation (the first seven slides are identical, while the video on the last slide is replaced by a static image):

slidelo

To perform the analysis, I duplicated and renamed the two files, replacing the original extension with ‘ZIP’, and then unzipped them to create two folders containing all the files from their respective XML schemas.

The LibreOffice folder is very similar to the one created by Calc and Writer, containing five subfolders – three of which are identical to those of the ODS and ODT files – and five files. manifest.rdf is missing, but all the others are present and have the same characteristics. The Media and Pictures folders were added to contain multimedia content and images. Once again, all the content is located in the content.xml file, while the other files contain instructions for displaying the slides correctly and for displaying elements other than text.

Therefore, despite the diversity of the three applications (Calc, Writer and Impress), we are faced with an extremely consistent internal file structure, as one would expect from a standard that aims to simplify life for users and developers. This consistency is a key benefit and simplifies the reproducibility of the standard format.

The Microsoft 365 folder contains three subfolders and the [Content_Types].xml file, as with the XLSX and DOCX files examined in the last two weeks. One of the folders has a different name, but this relates to the application and does not increase complexity. Opening the ‘[Content_Types].xml’ file provides information about the other files, including those in the subfolders.

In this case, the content is located in eight slide*.xml files (where the asterisk is a sequential number) inside the slide folder within the ppt folder. These folders and files are completely different to those in the XLSX and DOCX files, but information relevant to displaying slides on screen is scattered throughout them. Again, there are no technical reasons for the differences in the XML schemas of the three files other than to make their internal structures more complex. This unnecessary complexity is also reflected in the XML files describing the contents of the presentation.

The ODP file

As with


Thursday
09 October, 2025


face
  • Early tech planning call, sync with Lily & Miklos, sync with Chris, chat with Till, poked at mail,
  • House-group in the evening, good to see it growing again.

face

Berlin, 9 October 2025 – LibreOffice 25.8.2, the second minor release of the free, volunteer-supported office suite for personal productivity in office environments, is now available on our download page for Windows, macOS and Linux.

This release includes over 60 bug and regression fixes over LibreOffice 25.8 [1] to enhance the software’s stability and robustness. It also solves several interoperability issues with the proprietary Microsoft Office/365 document format and improves the user interface and file opening and saving processes.

LibreOffice is the only office suite with a feature set comparable to the market leader. It also offers a range of interface options to suit all user habits, from traditional to modern, and makes the most of different screen form factors by optimising the space available on the desktop to put the maximum number of features just a click or two away.

LibreOffice 25.8.2 is available at www.libreoffice.org/download/.

For users who don’t need the latest features and prefer a version that has undergone more testing and bug fixing, The Document Foundation maintains the LibreOffice 25.2 family, which includes several months of back-ported fixes. The current release is LibreOffice 25.2.6.

The Document Foundation does not provide technical support for users, although they can get it from volunteers on user mailing lists and the Ask LibreOffice website: ask.libreoffice.org

LibreOffice users, free software advocates and community members can support the Document Foundation by making a donation on our donate page.

[1] Fixes in RC1: wiki.documentfoundation.org/Releases/25.8.2/RC1. Fixes in RC2: wiki.documentfoundation.org/Releases/25.8.2/RC2.


face

CPU on a motherboard

LibreOffice has been available for Linux since we started the project in 2010. The official builds from The Document Foundation (the non-profit entity behind LibreOffice) are designed to be self-contained and distribution agnostic – that is, they should work on as many distributions as possible.

To achieve this, we test on various Linux distributions, and now we consider Amazon Linux 2023 as another platform supported by LibreOffice. Amazon has provided resources for regular and automated CI (continuous integration) testing of LibreOffice builds against Amazon Linux 2023, including crash-testing runs, via the AWS Open Source Credits programme.

As part of this, and for the general benefit of other users, TDF has started to provide 64-bit ARM Linux builds (aarch64) in RPM format. We’ve worked on improving 64-bit ARM support for various platforms in recent years, including for Windows and on Apple silicon Macs, given that the chips are becoming increasingly used in desktops and servers.

64-bit ARM chips commonly power cloud infrastructure, where LibreOffice is often used in headless (non-GUI) tasks, such as batch conversions of large numbers of documents. But some users run LibreOffice graphically too. With the updates we’ve been working on, LibreOffice is now available on more infrastructure and can be deployed on Amazon Elastic Compute Cloud (Amazon EC2). If there’s anything else users would like to see, submit an enhancement request and let us know!


Wednesday
08 October, 2025


face
  • Mail chew, patch bits, sync with Dave.
  • Re-arranged the lounge to bring the Windows build machine back into action for VM-based build acceleration & office testing after its main role (and ethernet cable) got replaced by a cheap Android-TV box.
  • Published the next strip exploring whether maintenance should be free:
    The Open Road to Freedom - strip#38 - Free Maintenance
  • Chased a weird hanging in a Loading phase issue through reams of logs.

Tuesday
07 October, 2025


face
  • Mail chew, patch review, planning call, lunch.
  • Disabled Vaultwarden's browser plugin - after the performance horrors of re-scanning the DOM every keystroke - to seeing if that helps with my wayland/x11 clipboard issues.
  • Plugged away at a contract, still suffering from poor contrast between selected and un-selected window titles in GNOME in light-mode too on large-screen, tried highlight focus for my keyboard only flow.
  • Date night with J. lovely to spend some time with just her and eat out too, been a while.

face

LibreOffice Conference 2025 merchandise

Here’s our summary of updates, events and activities in the LibreOffice project in the last four weeks – click the links to learn more…

  • At the start of the month, the LibreOffice Conference 2025 took place in Budapest, Hungary. We had talks, workshops, fun social events and more. Thanks to all who attended 😊 See the schedule for information about the talks (and links to the slides, where available).

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.

LibreOffice 25.2 logo

Guidebook cover

  • The Annual Report of The Document Foundation describes the foundation’s activities and projects, especially in regard to LibreOffice and the Document Liberation Project. We’ve been posting sections of the 2024 report here on the blog, and now the full version is available.

TDF Annual Report 2024 cover

  • Companies around the world use LibreOffice to reduce costs, improve their privacy, and free themselves from dependence on single vendors. We talked to Flotte Karotte, a German company with 50 employees that recently made a generous donation to support the LibreOffice project and community.

Photo of food being delivered

Open Source Conference 2025 logo

  • We spoke to Devansh Varshney, who added histogram chart support to LibreOffice and is working on improvements to the Basic IDE.

Devansh Varney photo

Suraj Bhattarai

Montage of photos from LibreOffice events

Bundesheer logo

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


face

Writer recently got a Markdown import & export filter and there were a number of improvements to that.

This work is primarily for Collabora Online, but the feature is available in desktop Writer as well.

Motivation

Ujjawal Kumar contributed a markdown import to Writer, as part of Google Summer of Code (GSoC) this summer. Mike Kaganski of Collabora also created a minimal markdown export in Writer. I looked at the feature differences between the two, and filled in various gaps in the markdown export. I also added a few general markdown import/export improvements relevant for normal Writer documents, like embedded image support.

Results so far

Here is a sample case of a document using inline code spans:

Code span: baseline

Exporting this to markdown & loading back to Writer, the code span was lost:

Code span: old result

And now it's preserved:

Code span: new result

This also works with code blocks.

Second, here is a document with lists:

Lists: baseline

Exporting this to markdown & loading back to Writer, the lists were lost:

Lists: old result

And now they are preserved:

Lists: new result

This also works with nested lists.

Third, here is a document with an image:

Image: baseline

Exporting this to markdown & loading back to Writer, the image was lost:

Image: old result

And now it's preserved:

Image: new result

This also works with embedded and anchored images.

Fourth, here is a document with a table:

Table: baseline

Exporting this to markdown & loading back to Writer, the table was lost:

Table: old result

And now it's preserved:

Table: new result

This also works with table alignments and nested tables (to the extent the markdown markup allows that).

Fifth, here is a document with a quote block:

Quote: baseline

Exporting this to markdown & loading back to Writer, the quote's paragraph indentation was lost:

Quote: old result

And now it's preserved:

Quote: new result

How is this implemented?

If you would like to know a bit more about how this works, continue reading... :-)

As usual, the high-level problem was addressed by a series of small changes. Core side:

Want to start


Monday
06 October, 2025


face
  • Up early, poked at XML attribute ordering issues in PPTX export to minimize the diffs to what MS Office produces, used officeotron to find a problem, and pushed a tentative patch.
  • Lots of 1:1's with my reports - lots of goodness going on. Plugged away at a contract until late.

face

From October 6 to 9, Havana, Cuba, will host the Latin American LibreOffice 2025 Conference, a meeting that will bring together contributors, developers, universities, and governments from the region to celebrate and strengthen free software.

This year, the Latin American conference will be held as part of the IV International Congress on Digital Transformation (Cibersociedad 2025) in Havana, Cuba. This integration reinforces LibreOffice’s crucial role in the digital transformation of Latin American communities, promoting open innovation, technological sovereignty, and collaboration between countries.

The event will take place at the iconic Hotel Nacional de Cuba and will feature an intense program of lectures, panels, and workshops dedicated to LibreOffice, its communities, and institutional adoption initiatives.

🌍 A meeting that connects communities and governments

The opening ceremony will pay tribute to Cuban volunteer Carlos Parra, who passed away in 2022.

It was thanks to his dedication, articulation, and love for the community that the opportunity arose to hold the Latin American LibreOffice Congress in Cuba—a dream he helped make possible.

Carlos was the link between the Cuban community and The Document Foundation, and his contribution will remain as a legacy of collaboration and commitment to digital freedom.

During the event, Adlair Cerecedo-Méndez will present the experience of Office GobMX, the LibreOffice-based suite developed by the Mexican government. Other highlights include the panel “LibreOffice is freedom,” with Olivier Hallot, founding member of The Document Foundation and Documentation Coordinator for the LibreOffice Project, as well as discussions on government migration, extensions, technical quality, and the rebirth of the Cuban community — with participation from Gustavo Pacheco (Brazil), Mauricio Baeza (Mexico), and Xisco Faulí (Spain).

🧑‍🏫 Training and academic innovation

At the University of Information Sciences (UCI), the event will open space for young people and educators with the “LibreOffice and Universities” lab, led by Gustavo Pacheco, and the “Creating my first extension” workshop, conducted by Mauricio Baeza — a practical opportunity for those who want to learn how to expand LibreOffice and contribute technically to the project.

💬 Regional meetings and plans for 2026

The congress will close with meetings between Latin American members of the LibreOffice community, addressing:

  • the 2026 events calendar (including esLibre and the next Latin American Congress);
  • academic projects such as Google Summer of Code and Outreachy;
  • and new partnerships with other free software communities, such as GNOME Latam.

These sessions reflect the collective commitment to strengthening collaboration between countries and consolidating a more active presence for Latin America within The Document Foundation.

💪 An event driven by volunteers

The Congreso Latinoamericano de LibreOffice is an event organized entirely by volunteers, who dedicate their time, energy, and knowledge to make this initiative possible. Our special recognition and thanks go to Daniel Rodriguez (Argentina), Gastón Hannay (Uruguay), Omar Correa (Cuba), Gustavo Pacheco (Brazil), and Juan González (Mexico), who have been working tirelessly to make every detail of this edition possible.

We also express our sincere gratitude to the University of Computer Sciences (UCI) and the Cibersociedad 2025 organization for opening their doors


Sunday
05 October, 2025


face
  • Up lateish, All Saints - iSing + some bass & singing. Pizza lunch.
  • Picked, practiced songs, played guitar for the evening service. J. and H. doing some lino-printing action.
  • Ran the service, home, relaxed.

Saturday
04 October, 2025


face
  • Up lateish, plugged away at tax filing with J. H. and myself; three in one day - nice.
  • Lunch, bid 'bye to Nina, out for a walk with J. & H.
  • Bit of hacking, and out to Tash's 40'th birthday party and barn-dance in Isleham - fun.

Friday
03 October, 2025


face
  • Mail chew, great TTT on cypress testing of our UI, got a C++ unit test mend commit merged. Lunch.
  • Plugged away at code review, syncs with engineers, dug into some PPTX interoperability fun, and spent some time minimizing some OOXML diffs.
  • Watched Midway in the evening - gripping enough even if you knew the ending. Nina over to stay.

face

The complexity of the OOXML format is linked to its design and was deliberately created to make the format more difficult for non-Microsoft software developers to implement. Compatibility issues are caused by a veritable “maze” of tags used even for the simplest content, which binds users to the Microsoft ecosystem in the first example of standard-based lock-in.

The DOCX case

To demonstrate the difference in complexity between the XML schemas of Writer and Word text documents in the ODF and OOXML formats, I used two classic English theatre plays: William Shakespeare’s Hamlet and Oscar Wilde’s The Importance of Being Earnest. I downloaded the text versions of these works from Project Gutenberg — a library of classic texts for which US copyright has expired — and deleted the introductions and conclusions added by Project Gutenberg, without making any other changes.

I then repeated this process for both documents.

I copied all the text and pasted it, without any formatting, into two newly created blank documents. For Writer, I used the template that I usually use for unstructured documents; for Word, I did not use a template. This means that, in Writer, the XML schema contains information about the template (margins, paragraph and font formatting), but this does not increase its complexity.

To perform the analysis, I duplicated and renamed the two files, replacing the original extension with “ZIP”, and then decompressed them to create two folders containing all the files of the respective XML schemas.

The LibreOffice folder contained three subfolders and six files with the same names as those in the ODS file examined last week, as would be expected of a standard aiming to simplify life for developers and users. All the content is actually in the content.xml file, while the other files contain instructions for displaying the text document correctly.

The Microsoft 365 folder contains three subfolders and the [Content_Types].xml file, as with the XLSX file examined last week. One of the subfolders has a different name, but this is related to the application and does not increase complexity. Opening the [Content_Types].xml file provides information about the other files, including those in the subfolders.

In this case, the content is in the document.xml file inside the Word folder, which contains folders and files that differ completely from those in the XLSX file. Again, there is no technical reason for this difference in the XML schemas of the two files other than to make their internal structures different and more complex.

Let’s now analyse William Shakespeare’s Hamlet and then Oscar Wilde’s The Importance of Being Earnest.

Here is the PDF of Hamlet:

hamlet

 

The difference in complexity between the document.xml and content.xml files is striking when you compare their lengths: the content.xml file has 6,802 lines, while the document.xml file has 60,245 lines, compared to a text document of 5,566 lines.

Let us now compare the two files’ XML schemas from the beginning to the


Thursday
02 October, 2025


face
  • Up early, tech planning call, sync with Laser, plugged away at planning & admin.
  • Got a bit of trivial hacking in, trying to iterate CI into some more working mode.
  • Great to catch up with Markus in the evening who has done some great work on calc table styles. Encouraging partnering call with an old friend afterwards.
  • Played songs for house-group, then off to Dave's to minute Worship committee meeting.

face

LibreOffice strives to be accessible for people with special needs or limitations, such as visual impairment or limited motor abilities. How does the software work towards this? What accessibility features are in the pipeline? And how can all users help out? We talk to Michael Weghorn about these topics – and more. (This episode is also available on PeerTube.)

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.


Wednesday
01 October, 2025


face

The Document Foundation's team

Love LibreOffice development? Want to turn your passion into a paid job? We are The Document Foundation (TDF), the non-profit entity behind LibreOffice. We’re passionate about free software, the open source culture and about bringing new companies and people with fresh ideas into our community.

To improve the Base database application of LibreOffice, the office productivity suite for over 200 million users around the globe, we’re searching for a developer (m/f/d) to start work (from home) as soon as possible. This is what you’ll do:

  • Work on the LibreOffice codebase (mostly C++)
  • Focus on Base, its frontend and backend features and all the ways databases are used elsewhere in the software
  • Fix bugs, implement new features, and improve the quality of database code in LibreOffice
  • Document what you do, actively share knowledge in public with volunteers and contributors via blog posts, workshops and conference talks, so other developers and users have an easier time learning about your work

Examples of tasks:

  • Polish the Firebird integration
  • Improve the tool for migrating databases from HSQLDB to Firebird
  • Make the new C++-based Report Builder production-ready
  • Add support for SQLite databases

What we want from you:

  • Very good C++ development skills
  • Proven experience working with databases
  • Good team-playing skills
  • Speaking and writing English

Previous contributions to FOSS projects (show us your repos!) are a plus. A previously established relationship within the developer community, as well as with other teams such as QA is a plus, but it is not mandatory at the start and can be achieved during the work itself.

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 does not exclude any applicants from consideration.

Join us!

All jobs at The Document Foundation are remote jobs, where you can work from your home office or a co-working space. The work time during the day is flexible, apart from a few fixed meetings. The role is offered as full-time (ideally 40 hours per week). While we prefer full-time for the role, part-time applications, or proposals to grow the hours over time, will be considered. Candidates that are resident in (or willing to relocate to) Germany will be employed directly by TDF. Otherwise, external payroll services will be used if available in the candidate’s country of residence.

Are you interested? Get in touch! We aim to schedule the first interview within two weeks of your application. You can also approach us any time for an informal chat, to learn about the role or in case of questions.

TDF welcomes applications from all suitably qualified persons regardless of their race, sex, gender, disability, religion/belief, sexual orientation or age. Don’t be afraid to be different, and stay true to yourself. We like you that way! 😊

We’re looking forward to receiving your application, including information about you (your resume), when you are available for the job, and


Thursday
18 September, 2025


face

If you are working with LibreOffice code, trying to understand the code, fix bugs, or implement new features, you will need to debug the code at some point. Here are some general tips for a good debugging experience. Let’s start from the platform

Choose the Right Debug Platform

Choosing a platform to debug usually depends on the nature of the problem. If the problem is Windows-only, you need a Windows environment to build and debug the problem. But, if the problems can be reproduced everywhere, then you can choose the platform of your choice with the debugging tools that you prefer to debug the problem.

On Linux, it matters if you are running X11 or Wayland. Also, as there are multiple graphical back-ends available for LibreOffice, it matters if you are using X11, GTK3/4, or Qt5/6 back-end for your debugging. Some bugs are specific to GTK, then you should use GTK3 UI for testing. In 2025, GTK4 UI of LibreOffice is still experimental, so it is better to work with GTK3. For making the debugging easier, many developers work on X11 (gen) UI for debugging.

Debugging Tools

Various debugging tools can be used to debug the soffice.bin/soffice.exe LibreOffice binary that you have built. For the common debuggers, you can use GDB on Linux, lldb on macOS, and WinDbg or Visual Studio on Windows.

For using the above debuggers, you can use the IDE or front-end that support them. Various IDEs are usable with LibreOffice code. For a detailed explanation, refer to this Wiki article:

Make sure that you can build and debug a simple program before trying to build and debug LibreOffice.

Environment Variables

To have a better debugging experience, or to avoid problems you may have to customize the debugging session with environment variables. A complete article of the TDF Wiki is dedicated to discuss the environment variables that can be used with LibreOffice:

Here is some of the most important ones:

1) Using the X11 user interface:

If you want to use the X11 back-end that is simpler, and usually easier to work with on debug sessions, you have to set SAL_USE_VCLPLUGIN environment variable:

export SAL_USE_VCLPLUGIN=gen
That is specially useful when you are debugging graphical problems. But in some cases, you may need to avoid it or at least customize it. For example, while debugging mouse-related problems you may need to tell LibreOffice to avoid mouse grabbing this way:

export SAL_NO_MOUSEGRABS=1

2) Using GTK user interface

If you are using GTK user interface, then you may use GTK inspector to interactively debug LibreOffice GUI. You can use it this way:

export GTK_DEBUG=interactive

Pretty Printers

In solenv/gdb/ inside LibreOffice source code, you may find pretty printers for GDB. This is helpful when debugging LibreOffice with GDB, to be able to see data in a more readable way.

Dumping Data

Sometimes when you debug a LibreOffice application, it is easier to

Older blog entries ->