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.


Thursday
02 April, 2026


face

PSFirebird is a PowerShell module focused on automating Firebird environments, databases, and common administrative workflows. The main goal is to make Firebird easier to script end-to-end without depending on a manual installer flow or a machine-specific setup. The problem is trying to solve was simple: working with Firebird in automation often means mixing shell scripts, ad hoc local installs,


Wednesday
01 April, 2026



Tuesday
31 March, 2026


face

<!-- Post Title: Modernizing the Firebird ODBC Driver: Moving to CMake and Cleaning House --> As part of an ongoing effort to improve the project's infrastructure, we have just merged Pull Request #281, which introduces a modern CMake build system and drastically cleans up our repository by removing over 62,000 lines of obsolete configurations, old headers, and broken test projects. This is the


Friday
27 March, 2026


face

I came here due to a (decades-spanning, arguably perverse) love affair with the LibreOffice code body. Less so for a love of organizational bodies.

So I mostly remained passive and watched the coup d’état unfold at the Document Foundation. Where some folks apparently felt the need to have us all thrown out. Oh my.

Should I have been more involved around the apparent issues at TDF? Maybe. But then again, I’m a naive little nerd who loves fixing dysfunctional code way more than navigating dysfunctional political setups. (And to be fair, I tried to do my duty, and did serve a term on the membership committee. Back when that was likely more pleasant than what it would be today.)

Luckily, the code and the fun will most certainly live on, one way or another. Not least at https://collaboraonline.github.io/.

Happy hacking, once more,
sberg


Friday
13 March, 2026


face

A major update has been merged into the FirebirdSQL/firebird-odbc-driver repository (PR #276), introducing a comprehensive Google Test suite to establish a strong regression testing baseline for the project. Authored by fdcastel, this addition is a crucial stepping stone before making future bug fixes or CI/CD improvements. Key Highlights: Extensive Coverage: The PR adds a


Tuesday
10 March, 2026


face

General Activities LibreOffice 26.2.0 was announced on February 4 LibreOffice 25.8.5 was announced on February 19 LibreOffice 26.2.1 was announced on February 26 Olivier Hallot (TDF) added help for Writer’s text dragging and dropping options, Calc’s “Enter key for paste & clear clipboard” option and “Reject silently” in Calc’s Data


Wednesday
18 February, 2026


face

Implementing Firebird 4 Protocol Versions 16 and 17 is crucial for utilizing the advanced features, security enhancements, and performance improvements introduced in Firebird 4.0 and 4.0.1. Using updated clients that support these protocols prevents performance degradation and ensures access to modern functionalities. Key Features Supported by Protocol 16 (Firebird 4.0)Wire Protocol Encryption:&


Wednesday
11 February, 2026


face

General Activities Olivier Hallot (TDF) improved Writer help for hyphenation zones and controlling section visibility, fixed the help example for Calc’s SUMIF function, clarified the topic of fixed colours in the help for document themes, expanded the help for Calc’s sort options, explained in help the option for removing cross-document


Saturday
07 February, 2026


face


Z veseljem najavljamo izdajo LibreOffice 26.2, najnovejše različice prostega in odprto-kodnega pisarniškega paketa, ki mu zaupajo milijoni uporabnikov po vsem svetu. Ta izdaja uporabnikom omogoča lažje ustvarjanje kot kdaj koli prej ter urejanje in deljenje dokumentov po lastnih željah. Razvit je bil za posameznike in organizacije ter ostaja zaupanja vredna alternativa lastniški pisarniški programski opremi.

LibreOffice 26.2 se osredotoča na izboljšave, ki pomembno vplivajo na vsakodnevno delo in prinašajo boljšo zmogljivost, bolj tekoče delovanje s kompleksnimi dokumenti in izboljšano združljivost z vsemi datotekami, ustvarjenimi v drugih pisarniških paketih. Ne glede na to, ali pišete poročila, upravljate s preglednicami ali pripravljate predstavitve, je delo bolj odzivno in zanesljivo.

LibreOffice je vedno omogočal uporabnikom nadzor. LibreOffice 26.2 nadaljuje to tradicijo s krepitvijo podpore za odprte standarde za dokumente in zagotavljanjem dolgoročnega dostopa do vaših datotek brez naročnin, licenčnih omejitev ali zbiranja podatkov. Vaši dokumenti ostanejo vaši, za vedno.

Za to izdajo stoji svetovna skupnost sodelavcev. Razvijalci, oblikovalci, prevajalci, preizkuševalci kakovosti in prostovoljci iz vsega sveta so sodelovali pri pripravi več sto popravkov in izboljšav. Rezultat njihovih prizadevanj je paket, ki ne le dodaja nove funkcije, ampak iz izdaje v izdajo izboljšuje tudi kakovost, doslednost in stabilnost.

Kaj je novega v LibreOffice 26.2

  • Izboljšana zmogljivost in odzivnost celotnega paketa, ki omogoča lažje odpiranje, urejanje in shranjevanje velikih dokumentov.
  • Izboljšana združljivost z dokumenti, ustvarjenimi z lastniškimi in odprtimi pisarniškimi paketi, kar zmanjšuje težave z oblikovanjem in neprijetna presenečenja.
  • Izboljšano delovanje uporabniškega vmesnika za bolj pregledno in dosledno uporabniško izkušnjo.
  • Razširjena podpora odprtim standardom, ki krepi dolgoročni dostop do dokumentov.
  • Na stotine popravkov napak in izboljšav stabilnosti, ki jih je prispevala globalna skupnost LibreOffice.
Glejte opombe ob izdaji, kjer se nahaja celoten seznam vseh novosti.

»LibreOffice 26.2 kaže, kaj se zgodi, ko je programska oprema zasnovana na uporabnikih in ne na poslovnih modelih, ter kako lahko odprto-kodna programska oprema ponudi sodoben, izpopolnjen pisarniški paket, ne da bi pri tem ogrožala svobodo uporabnikov,« je dejal Florian Effenberger, izvršni direktor The Document Foundation. »Ta izdaja je namenjena hitrosti, zanesljivosti in omogočanju nadzora uporabnikom nad svojimi dokumenti.«

LibreOffice 26.2 je na voljo za operacijske sisteme Windows, macOS in Linux ter podpira več kot 120 jezikov. Uporabljate ga lahko doma, v podjetjih, šolah in javnih ustanovah, brez licenčnin in vezave na enega ponudnika.

LibreOffice 26.2 lahko prenesete danes z uradne spletne strani LibreOffice. Vabimo uporabnike, da preizkusijo novo različico, delijo svoje mnenje in se pridružijo skupnosti, ki pomaga oblikovati prihodnost LibreOffice. Če so zadovoljni, lahko s svojim prispevkom podprejo neodvisnost in prihodnji razvoj projekta.


O LibreOffice in The Document Foundation



LibreOffice je prost pisarniški paket z odprto-kodno kodo, ki ga uporabljajo milijoni ljudi, podjetij

face

Not too long ago, a change landed, that brought Biff12 clipboard format support in Calc v.26.2 – thanks Laurent!

It was an easyhack that I authored some time ago; and Laurent volunteered to implement that long-standing missing feature. The small detail was, that the feature was Windows-specific (it is trivial to get the wanted clipboard content there, simply copying from Excel), while Laurent developed on another platform.

Laurent had made the majority of work, before he was stuck, without being able to test / debug further changes. Then, he asked me, if there a way to continue on the platform he used.

At that time, I answered, that no, one would need Windows (and Excel) to continue the implementation. So I jumped in, and added the rest, and in the end, we have created the change in co-authorship.

But later, when part of my code turned out problematic, and I needed to fix it and create a unit test for it, I discovered a trick, that could put Biff12 data into system clipboard on any platform, without Excel – allowing then just paste, and debug everything that’s going on there. It relies on UNO API, and can be implemented e.g. in Basic:


function XTransferable_getTransferData(aFlavor as com.sun.star.datatransfer.DataFlavor) as variant
  if (not XTransferable_isDataFlavorSupported(aFlavor)) then exit function
  oUcb = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
  oFile = oUcb.openFileRead(ConvertToURL("/path/to/biff12.clipboard.xlsb"))
  dim sequence() as byte
  oFile.readBytes(sequence, oFile.available()) ' changes value type of 'sequence' to integer
  XTransferable_getTransferData = CreateUnoValue("[]byte", sequence)
end function

function XTransferable_getTransferDataFlavors() as variant
  aFlavor = new com.sun.star.datatransfer.DataFlavor
  aFlavor.MimeType = "application/x-openoffice-biff-12;windows_formatname=""Biff12"""
  XTransferable_getTransferDataFlavors = array(aFlavor)
end function

function XTransferable_isDataFlavorSupported(aFlavor as com.sun.star.datatransfer.DataFlavor) as boolean
  XTransferable_isDataFlavorSupported = (aFlavor.MimeType = "application/x-openoffice-biff-12;windows_formatname=""Biff12""")
end function

sub setClipboardContent
  oClip = CreateUNOService("com.sun.star.datatransfer.clipboard.SystemClipboard")
  oClip.setContents(CreateUNOListener("XTransferable_", "com.sun.star.datatransfer.XTransferable"), nothing)
end sub

The first three functions are Basic implementation of XTransferable interface.

Running setClipboardContent will prepare the system clipboard on any platform, using a trick of implementing arbitrary UNO interface using CreateUNOListener; and after that, pasting into Calc would allow to see if things work (if content of /path/to/biff12.clipboard.xlsb is pasted, as expected), and make improvements. If I knew this trick back then, I would of course share it with Laurent; but I thought I’d put it here now, so maybe it helps me or someone else in the future. (Note that application/x-openoffice-biff-12;windows_formatname="Biff12" there in the code was the name introduced by Laurent in the discussed commit; indeed, that, and the actual data in the file, would depend on the exact format that you work with.)


Wednesday
04 February, 2026


face

If you have a commented text range, which gets deleted while track changes is on and you later save and load this with Writer's DOCX filter, that works now correctly.

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

Motivation

It was already possible to comment on text ranges. Comments were also supported inside deletes when track changes is enabled. These could be already exported to and imported from DOCX in Writer. But you could not combine these.

With the increasing popularity of commenting text ranges (rather than just inserting a comment with an anchor), not being able to combine these was annoying.

Results so far

Here is how a commented text range inside a delete from DOCX now looks like, note the semi-transparent comment hinting it's deleted:

Commented text range, inside a tracked delete, in DOCX, Collabora Online

As a side effect, this also fixes the behavior in desktop Writer, which crosses out deleted comments:

Commented text range, inside a tracked delete, in DOCX, desktop

In the past, the "is this deleted" property was not visible in the render result:

Commented text range, inside a tracked delete, in DOCX, Collabora Online, old bad state

And it was also bad in desktop Writer:

Commented text range, inside a tracked delete, in DOCX, desktop, old bad state

This required changes to both DOCX import and export: a comment could be deleted or could have an anchor which is a text range, but you couldn't have both.

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 using this?

You can get a development edition of Collabora Online 25.04 and try it out yourself right now: try the development edition. Collabora intends to continue supporting and contributing to LibreOffice, the code is merged so we expect all of this work will be available in TDF's next release too (26.8).


Thursday
22 January, 2026


face

In LibreOffice development, there are many cases where you want to validate some documents against standards: either Open Document Format (ODF) or MS Office Open XML (OOXML). Here I discuss how to do that.

Update: Article updated to reflect that odfvalidator 0.13.0 has just released.

Open Document Format (ODF) Validation

ODF is the native document file format that LibreOffice and many other open source applications use. It is basically set of XML files that are zipped together, and can describe various aspects of the document, from the content itself to the way it should be displayed. These XML files have to conform to ODF standard, which is presented in XML schemas. The latest version of ODF is 1.4, which is yet to be implemented in LibreOffice.

You can find more about ODF in these links:

There are various tools to do the validation, but the preferred one is the ODF Toolkit Validator:

Compiled binaries of ODF Toolkit can be downloaded from the above Github project:

Then, you can use the ODF validator this way:

$ java -jar odfvalidator-0.13.0-jar-with-dependencies.jar test.odt

You may also use the online validator, odfvalidator.org, to do a validation.

odfvalidatorOnline odfvalidator tool

Please read this disclaimer before using:

This service does not cover all conformance criteria of the OpenDocument Format specification. It is not applicable for formal validation proof. Problems reported by this service only indicate that a document may not conform to the specification. It must not be concluded from errors that are reported that the document does not conform to the specification without further investigation of the error report, and it must not be concluded from the absence of error reports that the OpenDocument Format document conforms to the OpenDocument Format specification.

Office Open XML (OOXML) Validation

MS Office Open XML (OOXML) is the native standard for Microsoft documents format. It is also a set of XML files zipped together, and conform to some XML schemas.

You can find out more about OOXML here:

There are tools to do the validation, and the one is used in LibreOffice is Office-o-tron. One can use it with below command to validate an example file, test.docx:

$ java -jar officeotron-0.8.8.jar ~/test.docx

Office-o-tron can be downloaded from dev-www.libreoffice.org server of LibreOffice, and this is currently the latest version:

It is worth noting that Office-o-tron can be also used to validate ODT files.

Extensions to ODF Standard

To go beyond the current ODF standard, new features are sometimes introduced as “ODF extensions”, then are gradually added to the standard. You can read more in TDF Wiki:

In these cases, you may see validation errors for such extensions. For example:

test.odt/styles.xml[2


Tuesday
20 January, 2026


face

LibreOffice 26.2 will be released as final at the beginning of February, 2026 (check the Release Plan). LibreOffice 26.2 Release Candidate 2 (RC2) brings us closer to the final version, which will be preceded by Release Candidate 3 (RC3). Since the previous release, LibreOffice 26.2 RC1, 137 commits have been


Friday
16 January, 2026


face

Happy new year 2026! I hope that this year will be great for you, and the global LibreOffice community, and the software itself! I hereby discuss the past year 2025, and the outlook for 2026 in the development blog.

At The Document Foundation (TDF), our aim is to improve LibreOffice, the leading free/open source office suite that has millions of users around the world. Our work is community-driven, and the software needs your contribution to become better, and work in a way that you like.

My goal here, is to help people understand LibreOffice code easier via EasyHacks and tutorials, and eventually participate in LibreOffice core development to make LibreOffice better for everyone. In 2025, I wrote 14 posts around LibreOffice development in the dev blog (4 of them are unpublished drafts).

Outlook For the New Year

Focus of the development blog for 2026 in this blog will be:

  • Introducing new EasyHacks
    • Using new C++20 constructs
    • Difficulty Interesting EasyHacks
  • Describing user interface creation with VCL
    • VCL weld mechanism
    • Various weld widgets
  • Describing UNO Components

You can provide feedback simply by leaving a comment here, or sending me an email to hossein AT libreoffice DOT org.

We provide mentoring support to the individuals who want to start LibreOffice development. You are welcome to contact me if you need help to build LibreOffice and do some EasyHacks via the above email address. You may also refer to our Getting Involved Wiki page:

Let’s hope a better year for LibreOffice (and the world) in 2026.


Thursday
08 January, 2026


face

General Activities LibreOffice 25.8.4 was announced on December 18 Olivier Hallot (TDF) added a help page for Markdown in Writer, JSON in Calc, updated or improved help for View and Appearance options, accessibility options, sort criteria in Calc, file conversion filters, ODF versions, handling of empty cells in Calc, Data


Monday
05 January, 2026


face

The bullet support in Impress got a couple of improvements recently, some of this is PPTX support and others are general UI improvements.

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

Motivation

Probably the most simple presentations are just a couple of slides, each slide having a title shape and an outliner shape, containing some bullets, perhaps with some additional images. Images are just bitmaps, so let's focus on outliner shapes and their outliner / bullet styles.

What happens if you save these to PPTX and load it back? Can you toggle between a numbering and a bullet? Can you return to an outliner style after you had direct formatting for your bullet?

Results so far

The first case was about bullet editing of this document:

Outliner shape with 3 outliner styles

If you pressed enter at the end of 'First level', then pressed <tab> to promote the current paragraph to the second level, nothing happened. The reason for this was that our PPTX export was missing the list styles of shapes, except for the very first list style. And the same was missing on the import side, too. With this, not only the rendering of the bullets are OK, but also adding new paragraphs and using promoting / demoting to change levels work as expected.

The second case was about this document, where the second level had a numbering, not a bullet:

Outliner shape with a numbering on the second level

We only had UI to first toggle off a numbering to no numbering, then you could toggle on bullets. Now it's possible to do this change in one step.

The last case was about styles. Imagine that you had a master page with an outline shape and some reasonably looking configuration for the first and second levels as outline styles:

Outliner shape with two outline styles

Notice how the last paragraph has a slightly inconsistent formatting, due to direct formatting. Let's fix this.

Go to the end of the last bullet, which is currently not connected to an outline style, toggle bullets off and then toggle it on again. Now we clear direct formatting when we turn off the bullet, so next time you turn bullets on, it'll be again connected to the outline style's bullet configuration and the content will look better.

Note how this even improves consistency: Writer was behaving the same way already, when toggling bullets off and then toggle on again resulted in getting rid of previously applied unwanted direct formatting.

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:


Friday
19 December, 2025


face

Developers and database administrators often operate under a common assumption: unlocking powerful new software features requires significant, time-consuming, and expensive development work. New capabilities frequently sit on the shelf, waiting for the budget and time to rewrite applications to take advantage of them.This assumption, however, doesn't always hold true. Recent versions of the


Monday
15 December, 2025


face

General Activities LibreOffice 25.8.3 was announced on November 13 Olivier Hallot (TDF) improved the help on sort options and keyboard shortcuts, added help for field variable formats, the Slide Properties Sidebar deck, named Calc formulas and Arabic fonts and right-to-left direction for Math. He also updated help for paragraph alignment


Thursday
11 December, 2025


face

LibreOffice 26.2 will be released as final at the beginning of February, 2026 ( Check the Release Plan ). LibreOffice 26.2 Beta1 is the second pre-release since development of version 26.2 started at the beginning of June, 2025. Since the previous release, LibreOffice 26.2 Alpha1, 419 commits have been submitted


Saturday
06 December, 2025


face

A modern C++ wrapper for the Firebird database API.Documentation | Repositoryfb-cpp provides a clean, modern C++ interface to the Firebird database engine. It wraps the Firebird C++ API with RAII principles, smart pointers, and modern C++ features.Features&nbsp;Modern C++: Uses C++20 features for type safety and performanceRAII: Automatic resource management with smart pointersType Safety:


Thursday
04 December, 2025


face

After submitting a patch to LibreOffice Gerrit, one has to wait for the continuous integration (CI) to build and test the changed source code to make sure that the build is OK and the tests pass successfully. Here we discuss the situation when one or more CI builds fail, and how to handle that.

Why Build and Test on CI?

After you submit code to LibreOffice Gerrit, reviewers have to make sure that it builds, and the tests pass with the new source code. But, it is not possible for the reviewers to test the code on each and every platform that LibreOffice supports. Therefore, Jenkins CI does that job of building and testing LibreOffice on various platforms.

This can take a while, usually 1 hour or so, but sometimes can take longer than that. If everything is OK, then your submission will get     Verified +1    .

CI Platforms for LibreOffice

Currently, these are the platforms used in CI:

  • Linux / GCC:  gerrit_linux_gcc_release
  • Linux / Clang: gerrit_linux_clang_dbgutil
  • Android Viewer: gerrit_android_x86_64 and gerrit_android_arm
  • Windows: gerrit_windows_wsl
  • macOS: gerrit_mac

Some of the tests are more extensive, for example Linux / Clang also performs additional code quality checks with clang compiler plugins. Also, UITests are not run on each and every platform.

Jenkins LibreOffice CILibreOffice CI uses Jenkins

Why Failures Happen and How to Fix?

There can be multiple reasons for why a CI build fails, and give your submission    Verified -1   . These are some of the reasons, and depending on the reason, solution can be different.

1. Your code’s syntax is wrong and compile fails

In this case, you should fix your code, and then submit a new patch set. You have to wait again for a new CI build.

2. The code’s syntax is OK, but it is not properly formatted

You should refer to the below TDF Wiki article and use clang-format tool to format your code properly.

3. Your code’s syntax is OK, but it logically not OK and fails some tests.

In this case, you should try fixing your code logic, and run the tests that fail and make sure they pass. After that, you may send a new patch set and wait for a new CI build.

4. Your code’s syntax and logic is OK, but some machine fails for other reasons like their disk being full or other software/hardware failures or hiccups

In this case, usually resuming the build can be a good option. You may ask on #libreoffice-dev or #tdf-infra IRC rooms for such a resume, or request access, if you submit many patches.

Resume CI buildResume build in LibreOffice CI

5. Your code’s syntax and logic is OK, but there are issues from other patches.

In this case, intervention from other LibreOffice developers is needed. Informing people on #libreoffice-dev can help, and then you have to re-base your submission in case new patches fix the build issue.

Final Notes

The best way to know the reason of the build failure is to look into


face

I fetched the release notes for FirebirdSQL/php-firebird and made a concise summary of the user-visible changes and upgrade impact for versions from PHP Firebird 5.0.2 up through 6.1.1-RC.2.I retrieved the release entries for 5.0.2, 6.1.1-RC.0, 6.1.1-RC.1 and 6.1.1-RC.2 and distilled the highlights and upgrade impact into a short, actionable summary below.Summary of changes (5.0.2 → 6.1.1-RC.2)-


face

The Firebird Book, Second Edition is made publicly available via the IBPhoenix digital store. Everyone can download the complete edition free of charge — no strings attached.If you'd like to support Helen’s legacy and the Firebird community, there is an optional pay‑what‑you‑like contribution. Funds will support the organization of the Helen Borrie Memorial Award, recognizing individuals with


Wednesday
03 December, 2025


face

LibreOffice 26.2 will be released as final at the beginning of February, 2026 ( Check the Release Plan ) being LibreOffice 26.2 Alpha1 the first pre-release since the development of version 26.2 started at the beginning of June, 2025. Since then, 4651 commits have been submitted to the code repository


face

Writer recently got a new markdown import option to take styles from a template, leading to much prettier output when converting markdown to PDF, DOCX or ODT.

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

Motivation

A previous post mentioned recent improvements to the markdown import/export in Writer.

But if you convert some markdown to e.g. PDF, all the headings just have the default look, wouldn't it be nice to take your organization template and add colors and other formatting there, automatically?

Also, wouldn't it be nice if you could paste as markdown in COOL or copy the current selection as markdown? Which would enable all sorts of interesting use-cases, like using an external API to turn the selection into a summary or translating it to a different language.

Results so far

Here is a sample input markdown:

# heading 1

body text

Here is how it looks like if you template it using the core.git sw/qa/filter/md/data/template.docx sample:

PDF result: templated

curl invocation for this:

curl -k -F "data=@/path/to/test.md" -F "template=@/path/to/template.docx" -F "format=pdf" -o out.pdf https://localhost:9980/cool/convert-to

Or example desktop command-line:

soffice --infilter='Markdown:{"TemplateURL":{"type":"string","value":"./template.ott"}}' test.md

While it would look like this by default:

PDF result: default

The other part is the PostMessage API of COOL, if you want to copy and paste as markdown. What's newly possible:

  • Copy the current selection: set MessageId to Action_Copy and the value to {"Mimetype": "text/markdown;charset=utf-8"}
  • Paste at the current cursor position: set MessageId to Action_Paste and the value to something like {"Mimetype": "text/markdown;charset=utf-8", "Data": "foo _bar_ baz"}

You can read more about the PostMessage API in the COOL SDK.

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:

Online side:

Want to start using this?

You can get a development edition of Collabora Online 25.04 and try it out yourself right now: try the development edition. Collabora intends to continue supporting and contributing to LibreOffice, the code is merged so we expect the core of this


Sunday
16 November, 2025


face

avtor: Italo Vignoli (objavljeno 14. novembra 2025 v LibreOffice, Open Document Format)

Digitalna suverenost ali sposobnost narodov, organizacij in posameznikov, da nadzirajo svojo digitalno usodo je temeljno vprašanje 21. stoletja. V središču tega izziva je na vi dez nepomembno vprašanje: kdo nadzira vrsto zapisa dokumentov, ki vsebujejo našo intelektualno lastnino ali osebne podatke?


V tem kontekstu je standardni in odprti zapis Open Document Format (ODF) – izvorni zapis dokumentov LibreOffice, ki ga podpirajo tudi drugi paketi – temeljna tehnologija za tiste, ki si prizadevajo za resnično digitalno neodvisnost.
Digitalna suverenost vključuje sposobnost nadzora dostopa do lastnih informacij brez odvisnosti od tretjih oseb, neodvisno izbiro tehnologije na podlagi lastnih potreb, zagotavljanje neodvisnega dostopa do strateških podatkov brez odvisnosti od komercialnih interesov velikih tehnoloških podjetij in ohranjanje te tehnološke samoodločbe kljub konsolidaciji trga.
Ko vladne agencije, podjetja ali državljani shranjujejo svoje dokumente v lastniških zapisih, ki jih nadzirajo velika tehnološka podjetja, se odpovedujejo delu svoje suverenosti in so odvisni od teh zunanjih subjektov za dostop do lastnih informacij.

Zakaj so zapisi dokumentov pomembni za suverenost

Oblika zapisa dokumentov je infrastruktura, ki je – podobno kot ceste, električna omrežja ali telekomunikacijska omrežja – temeljna za delovanje sodobnih družb. Premislite, kaj se zgodi, ko strateški dokumenti obstajajo le v zapisih, ki jih nadzira en sam ponudnik:
  • zavezanost ponudniku: organizacije se znajdejo v pasti, saj ne morejo preiti na alternativno programsko opremo brez dragih procesov pretvorbe in morebitne izgube podatkov.
  • izguba nadzora: oblike zapisa se lahko spremenijo brez predhodnega obvestila in brez nadzora uporabnikov, kar poveča učinek zavezanosti ponudniku.
  • ranljivost dostopa: če dobavitelj, ki nadzira obliko zapisa, spremeni zapis ali preneha z njegovo podporo, kot se je zgodilo v primeru Windows 10, dostop do dokumentov postane problematičen ali nemogoč.
  • ekonomska odvisnost: stroški licence, potrebne za izvajanje posodobitev programske opreme, ustvarjajo odnos ekonomske odvisnosti za dostop do lastnih podatkov in dejansko prenašajo lastništvo nad podatki na dobavitelja, ki nadzira obliko zapisa.

Zakaj je ODF edino orodje za digitalno suverenost?

Z ODF upravlja OASIS, mednarodna organizacija za standardizacijo, ki varuje njegov pregleden razvoj. Objavljen je kot standard ISO/IEC 26300-2015 (in kmalu ISO/IEC 26300-2025). Za razliko od lastniških oblik zapisa so specifikacije ODF javne in se lahko prosto izvajajo, razvijajo se v preglednem procesu, v katerem sodelujejo različne zainteresirane strani, ne nadzira jih ena sama vlada ali podjetje in so predmet mednarodnih organov za standardizacijo.
Izvajanje politik, usmerjenih v digitalno suverenost, zahteva jasno zavezo vodstva, ki mora dati prednost dolgoročni neodvisnosti pred kratkoročno udobnostjo.
Vse te izzive je mogoče obvladati in se sčasoma zmanjšujejo, medtem ko omejitve in stroški odvisnosti od lastniških oblik zapisov postajajo vse hujši.
To pomeni, da lahko vlade in podjetja sodelujejo pri opredeljevanju specifikacij oblike zapisa, namesto da so prisiljena pasivno sprejemati spremembe, ki jih vsiljuje en sam prodajalec na podlagi svojih poslovnih strategij.
Tako specifikacije ODF omogočajo komur koli, da

Thursday
06 November, 2025


face

General Activities LibreOffice 25.8.2 was announced on October 9 LibreOffice 25.2.7 was announced on October 30 Olivier Hallot (TDF) added help pages for R1C1 Calc formula syntax and DOI citation recognition and improved and updated help on dimension lines, form properties, master documents, command line operations, online update, text boundaries


Tuesday
04 November, 2025


face

Writer has some support for interdependent (or hierarchical) tracked changes: e.g. the case when you have a delete on top of an insert. See the third post for background.

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

Motivation

Interdependent changes mean that the UI shows one type of change on top of another change, e.g. formatting on top of insert. Writer knows the priority of each type, so in case you have an insert or delete change and on top of that you have a formatting, then the UI will look "through" the formatting and work on the underlying insert or delete when you navigate with your cursor to a position with multiple changes and you press Accept on the Review tab of the notebookbar.

Usually this is what you mean, but what if you want to work on the formatting at the top, directly? You can now open the Manage Changes dialog using the Manage button on the Review tab of the notebookbar and if you go to the formatting change row of the dialog, then pressing Accept there will accept the formatting change, not the insert or delete change. This is possible, because the dialog gives you a way to precisely select which tracked change you want to work with, even if a specific cursor position has multiple tracked changes.

Results so far

Here is a sample ins-then-format.docx document from the core.git testcases, the baseline has an insertion, and part of that is covered by an additional formatting change on top:

Interdependent tracked change: baseline

If you just go in the middle of the document and press Accept, that will work with the more important insert change, so the result looks like this:

Interdependent tracked change: default accept result

But now you can also open the Manage Changes dialog, to be more specific by directly selecting the formatting change:

Interdependent tracked change: direct accept via the dialog

And when you accept the formatting change directly, the result will be just the insert change:

Interdependent tracked change: direct accept result

You can save and load the results in both DOCX and ODT, as usual.

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 using this?

You can get a development edition of Collabora Online 25.04 and try it out yourself right now: try the development edition. Collabora intends to continue supporting and contributing to LibreOffice, the code is merged so we expect all of this work will be available in TDF's next release too (26.2).


Wednesday
22 October, 2025


face

In LibreOffice C++ code, there are many cases where developers want to use string literals in their code. If these are messages in the graphical user interface (GUI), they should add them to the translatable messages. But, there are many cases where the string literals has nothing to do with other languages, and there will not be any further translations. In these cases, enumarray is helpful. Although enumarray can be used beyond string literals, for any kind of data.

Using Symbolic Constants

In old C code, using #define was the preferred way one could give a name to a string literal or other kinds of data. For example, consider this code:

const char[] FRAME_PROPNAME_ASCII_DISPATCHRECORDERSUPPLIER = "DispatchRecorderSupplier";
const char[] FRAME_PROPNAME_ASCII_ISHIDDEN = "IsHidden";
inline constexpr OUString FRAME_PROPNAME_ASCII_LAYOUTMANAGER = "LayoutManager";
const char[] FRAME_PROPNAME_ASCII_TITLE = "Title"_ustr;
const char[] FRAME_PROPNAME_ASCII_INDICATORINTERCEPTION = "IndicatorInterception";
const char[] FRAME_PROPNAME_ASCII_URL = "URL";

And also, the relevant states:

#define FRAME_PROPHANDLE_DISPATCHRECORDERSUPPLIER 0
#define FRAME_PROPHANDLE_ISHIDDEN 1
#define FRAME_PROPHANDLE_LAYOUTMANAGER 2
#define FRAME_PROPHANDLE_TITLE 3
#define FRAME_PROPHANDLE_INDICATORINTERCEPTION 4
#define FRAME_PROPHANDLE_URL 5

Although this C code still works in C++, it is not the desired approach in modern C++.

Using enumarrays

In modern C++ code, you can use enumarry from o3tl library in LibreOffice. The above code becomes:

enum class FramePropNameASCII
{
    DispatcherRecorderSupplier,
    IsHidden,
    LayoutManager,
    Title,
    IndicatorInterception,
    URL,
    LAST=URL
};

And also, the string literal definitions:

constexpr o3tl::enumarray<FramePropNameASCII, OUString> FramePropName = {
    u"DispatchRecorderSupplier"_ustr,
    u"IsHidden"_ustr,
    u"LayoutManager"_ustr,
    u"Title"_ustr,
    u"IndicatorInterception"_ustr,
    u"URL"_ustr
};

Why an enumarray?

The names are much more readable, as they do not have to be ALL_CAPPS, as per convention for symbolic constants in C. Their usage is also quite easy. For example, one can use [] to access the relevant string literal:

- xPropSet->getPropertyValue( FRAME_PROPNAME_ASCII_LAYOUTMANAGER ) >>= xLayoutManager;
+ xPropSet->getPropertyValue( FramePropName[FramePropNameASCII::LayoutManager] ) >>= xLayoutManager;

Final Notes

In LibreOffice, enumarrays are not limited to string literals, and they can be used with other data. This task is tdf#169155, and if you like, you may try finding some instances in the code and modernize it using enumarrays.

To learn more about LibreOffice development, you can refer to TDF Wiki. You may follow this blog to read about EasyHacks, tutorials and announcements related to LibreOffice development.


Tuesday
21 October, 2025


face

General Activities LibreOffice 25.2.6 was announced on September 8 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

<- Current blog entries