Join the LibreOffice Team as a Paid Developer focusing on the Base database application, preferably full-time, remote (m/f/d)

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 of course your financial expectations. We expect you to provide details about your C++ experience. Pointing to public repositories with your code is very helpful. Please send us an e-mail to developers@documentfoundation.org no later than October 22, 2025. If you haven’t received feedback by November 20, 2025, your application could not be considered.

Also note: we only accept applications from the applicant, and not from any intermediary. We do not accept agency resumes. Please do not forward resumes to any recruiting alias or employee.

Austria’s military switches from Microsoft Office to LibreOffice

Logo of Bundesheer

Like we’re seeing in Schleswig-Holstein, Denmark and many other government bodies and organisations, the Austrian military (Bundesheer) has migrated 16,000 PCs from Microsoft Office to LibreOffice.

As Heise reports, the main reasons behind the switch are to:

  • strengthen digital sovereignty
  • maintain independence of IT infrastructure
  • ensure that data is processed in-house

The initial plan to move to LibreOffice was formed in 2020, and detailed planning and training of internal developers for improvements began in 2022. In 2023, a company in Germany was contracted to provide technical support and additional development.

The Austrian military’s migration reflects a growing demand for independence from single vendors. With free and open source software like LibreOffice, anyone can study and modify the source code to make improvements specifically for their setup and workflow. Government bodies and organisations can free themselves from vendor lock-in, spending taxpayer’s money on local companies to provide support and further development – rather than paying for license fees from overseas companies.

At the recent LibreOffice Conference 2025, representatives from the Austrian armed forces gave a talk about their switch from Microsoft Office, highlighting some of the new features and improvements that they have sponsored:

Presentation slide of improvements in LibreOffice, such as notes pane, and import of pivot table protected sheets

Click here to view the slides

LibreOffice turns 15: a celebration of freedom, collaboration and open technologies and standards

Fifteen years ago, we announced our ambitious plan to provide the world with a fully free and open office suite created by and for the community. Today, we are celebrating 15 years of LibreOffice — a milestone not only for the software itself, but also for the global movement that it represents.

LibreOffice was born on 28 September 2010 when it was launched as a fork of OpenOffice. This was not just a technical split, but also a declaration of independence, transparency, and freedom. LibreOffice would be free: free to use, free to modify, and free from corporate constraints.

From day one, our mission has been clear: to empower people through open technology.

A community like no other

LibreOffice has never been alone. Throughout its journey, it has been supported by a community of thousands of contributors and dozens of companies who have contributed to development, design, localisation, quality assurance and other services to support its growth. Many have simply dedicated their time, skills and passion to creating something unique and better for everyone.

Over the years, the community has:

  • Released dozens of major versions, each more powerful and significantly better than the last;
  • Localised LibreOffice into over 120 languages, some of which are rare or at risk of disappearing, making it accessible to more than 5 billion people;
  • Kept the source code open, making it more modern and secure thanks to countless improvements and rewrites;
  • Organised conferences, workshops, and hackfests that have stimulated innovation and mentoring.

This is not just software. It is a living project, fuelled by real people and companies who are committed to its daily growth.

Why LibreOffice is more important than ever

In an era of cloud lock-in, creeping surveillance and disappearing ownership, LibreOffice remains a bastion of digital autonomy. It gives individuals, schools, non-profit organisations and governments the opportunity to own their tools rather than “renting” them under licence.

It supports ODF (Open Document Format), the only open document standard, which guarantees users transparent access to and management of their documents and perpetual control over their content. No subscriptions. No forced updates. No strings attached.

Looking back, moving forward

Fifteen years is a significant milestone, but LibreOffice is not slowing down. Thanks to continuous improvements to the user interface, increased compatibility, and greater integration with modern systems (including the cloud), the project is moving forward with the same energy with which it was launched.

Here’s what the future looks like:

  • More powerful collaboration tools for teams and organisations
  • Ever-improving compatibility with proprietary formats and native handling of the open document format standard
  • A flexible user interface and user experience to meet the compatibility needs of users accustomed to the rigid interface of proprietary software
  • Continuous performance and security improvements at all levels
  • An ever-expanding network of volunteer contributors and partner companies around the world.

Join the celebrations!

This anniversary is about more than just LibreOffice; it’s about you too: the users, volunteer contributors, ecosystem companies, supporters and everyone who believes in open-source software.

If you have ever reported a bug, done a translation, answered user questions, contributed to the documentation, written source code, organised an event, made a donation, or simply shared LibreOffice with someone else, then you are part of the story.

So raise your glass (or open a text document, spreadsheet, presentation, or drawing) and join us in celebrating 15 years of LibreOffice and the people who made it possible. The best is yet to come!

The artificial complexity of OOXML files (the XLSX case)

The post, published on 18 July 2025, which explained why an artificially complex XML schema, such as that used by Microsoft 365 (formerly Microsoft Office) files, is in fact a subtle tool for locking in users because it is invisible and impossible to detect without in-depth study, was picked up by various IT media outlets. This was probably because it explained a problem that everyone faces without having the tools to solve it in a way that was accessible to everyone.

Some of these articles sparked a debate between those who supported my thesis and those who defended Microsoft, the true champions of lock-in, who claimed that the complexity of the XML schema was not artificial but rather a reflection of the complexity of the documents themselves.

This complexity relates to various factors, such as size (number of pages), structure (text, tables, graphs and images), content management (data entry by multiple people and systems) and customisation through metadata. These factors influence the management, classification and storage of the document itself.

The different approaches to complexity management between ODF and OOXML

However, the ODF and OOXML formats handle this complexity in completely different ways. In the first case, the XML schema seeks to simplify the work of developers and users by ensuring that both sets of requirements are met. Developers have all the descriptive tools related to document complexity at their disposal, and users can distinguish between descriptive elements and content because the two are almost always separate. The content is also consistent in syntax with the document.

In the second case, the XML schema does nothing to simplify the developer’s task and complicates the user’s task by putting all the elements – description and content – together without any apparent logic. This makes the two difficult or even impossible to distinguish.

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.

Added to this is the widespread use of convoluted descriptions, such as those relating to dates, which are linked to a bug introduced by Visicalc and still present in Excel 67 years after it was discovered, and the arbitrary separation of content, such as sentences or even words that are broken between two content elements. The format reflects the internal data structures and legacy features of Microsoft Office. It uses non-standard language encodings and units of measurement, as well as inconsistent naming conventions and rules between modules. It also uses abstruse tag names that are difficult to decipher.

The XLSX case

To illustrate the difference in complexity between the ODF and OOXML XML schemas, I created a simple spreadsheet containing dates from my life that are either significant or ironic. These include the date I broke my nose, the date it was repaired, and the date I re-married my wife in Las Vegas to celebrate the 30th anniversary of the marriage with an informal ceremony (a drive-through wedding in a limousine).

This is a screenshot of the spreadsheet:

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 of the respective XML schemas.

The LibreOffice folder contains three subfolders and six files, one of which is called content.xml and immediately catches the eye due to its evocative name. Opening it reveals all the contents, while the other files contain instructions for displaying the spreadsheet correctly.

This is the significant portion of the LibreOffice content.xml file:

<office:body>
<office:spreadsheet>
<table:calculation-settings table:case-sensitive=”false” table:automatic-find-labels=”false” table:use-regular-expressions=”false” table:use-wildcards=”true”>
<table:iteration table:maximum-difference=”0.0001″/>
</table:calculation-settings>
<table:table table:name=”Foglio1″ table:style-name=”ta1″>
<office:forms form:automatic-focus=”false” form:apply-design-mode=”false”/>
<table:table-column table:style-name=”co1″ table:default-cell-style-name=”ce2″/>
<table:table-column table:style-name=”co2″ table:default-cell-style-name=”ce4″/>
<table:table-column table:style-name=”co3″ table:number-columns-repeated=”16382″/>
<table:table-row table:style-name=”ro1″>
<table:table-cell table:style-name=”ce1″ office:value-type=”string” calcext:value-type=”string”>
<text:p>Event</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce3″ office:value-type=”string” calcext:value-type=”string”>
<text:p>Date</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>Was Born in Umbria</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”1954-08-12″ calcext:value-type=”date”>
<text:p>08/12/1954</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>Broke Nose in Rome</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”1965-01-18″ calcext:value-type=”date”>
<text:p>01/18/1965</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>University Degree in Milan</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”1978-11-19″ calcext:value-type=”date”>
<text:p>11/19/1978</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>First Job at Italian Touring Club</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”1981-01-10″ calcext:value-type=”date”>
<text:p>01/10/1981</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>Hired by Honeywell and Got 1st PC</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”1983-01-09″ calcext:value-type=”date”>
<text:p>01/09/1983</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>1st Wedding in Assisi</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”1984-08-09″ calcext:value-type=”date”>
<text:p>08/09/1984</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>BBC Show Interview in Birmingham</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”1987-02-17″ calcext:value-type=”date”>
<text:p>02/17/1987</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>Installed OpenOffice</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”2003-02-01″ calcext:value-type=”date”>
<text:p>02/01/2003</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>Repaired Nose in Rozzano</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”2008-12-04″ calcext:value-type=”date”>
<text:p>12/04/2008</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>Launched LibreOffice</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”2010-09-28″ calcext:value-type=”date”>
<text:p>09/28/2010</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro1″>
<table:table-cell office:value-type=”string” calcext:value-type=”string”>
<text:p>2nd Wedding in Las Vegas</text:p>
</table:table-cell>
<table:table-cell table:style-name=”ce7″ office:value-type=”date” office:date-value=”2014-08-08″ calcext:value-type=”date”>
<text:p>08/08/2014</text:p>
</table:table-cell>
</table:table-row>
<table:table-row table:style-name=”ro2″ table:number-rows-repeated=”1048563″>
<table:table-cell table:number-columns-repeated=”2″/>
</table:table-row>
<table:table-row table:style-name=”ro2″>
<table:table-cell table:number-columns-repeated=”2″/>
</table:table-row>
</table:table>
<table:named-expressions/>
</office:spreadsheet>
</office:body>

This is an XML file of reasonable complexity. Even someone without technical knowledge can identify the contents of the two columns with a little effort. The file is in an understandable format for dates, text strings and tags (table row, table cell, text and date value).

The Microsoft 365 folder contains three subfolders and the [Content_Types].xml file. Opening this file reveals information about the other files, including those in the subfolders. It also shows that the contents should be found in the sheet1.xml file, which is hidden in the worksheets folder, which is hidden in the xl folder. There is no technical reason for this game of hide-and-seek other than to make the internal structure of the XLSX file more complicated.

The significant part of the Microsoft 365 sheet1.xml file is as follows:

<dimension ref=”A1:B12″/>
<sheetViews>
<sheetView tabSelected=”1″ workbookViewId=”0″>
<selection activeCell=”B1″ sqref=”B1:B1048576″/>
</sheetView>
</sheetViews>
<sheetFormatPr defaultRowHeight=”15″/>
<cols>
<col min=”1″ max=”1″ width=”34.140625″ style=”2″ bestFit=”1″ customWidth=”1″/>
<col min=”2″ max=”2″ width=”11.7109375″ style=”4″ bestFit=”1″ customWidth=”1″/>
</cols>
<sheetData>
<row r=”1″ spans=”1:2″>
<c r=”A1″ s=”1″ t=”s”>
<v>0</v>
</c>
<c r=”B1″ s=”3″ t=”s”>
<v>1</v>
</c>
</row>
<row r=”2″ spans=”1:2″>
<c r=”A2″ s=”2″ t=”s”>
<v>2</v>
</c>
<c r=”B2″ s=”4″>
<v>19948</v>
</c>
</row>
<row r=”3″ spans=”1:2″>
<c r=”A3″ s=”2″ t=”s”>
<v>3</v>
</c>
<c r=”B3″ s=”4″>
<v>23760</v>
</c>
</row>
<row r=”4″ spans=”1:2″>
<c r=”A4″ s=”2″ t=”s”>
<v>4</v>
</c>
<c r=”B4″ s=”4″>
<v>28813</v>
</c>
</row>
<row r=”5″ spans=”1:2″>
<c r=”A5″ s=”2″ t=”s”>
<v>5</v>
</c>
<c r=”B5″ s=”4″>
<v>29860</v>
</c>
</row>
<row r=”6″ spans=”1:2″>
<c r=”A6″ s=”2″ t=”s”>
<v>6</v>
</c>
<c r=”B6″ s=”4″>
<v>30560</v>
</c>
</row>
<row r=”7″ spans=”1:2″>
<c r=”A7″ s=”2″ t=”s”>
<v>7</v>
</c>
<c r=”B7″ s=”4″>
<v>30933</v>
</c>
</row>
<row r=”8″ spans=”1:2″>
<c r=”A8″ s=”2″ t=”s”>
<v>8</v>
</c>
<c r=”B8″ s=”4″>
<v>31825</v>
</c>
</row>
<row r=”9″ spans=”1:2″>
<c r=”A9″ s=”2″ t=”s”>
<v>9</v>
</c>
<c r=”B9″ s=”4″>
<v>37623</v>
</c>
</row>
<row r=”10″ spans=”1:2″>
<c r=”A10″ s=”2″ t=”s”>
<v>10</v>
</c>
<c r=”B10″ s=”4″>
<v>39550</v>
</c>
</row>
<row r=”11″ spans=”1:2″>
<c r=”A11″ s=”2″ t=”s”>
<v>11</v>
</c>
<c r=”B11″ s=”4″>
<v>40449</v>
</c>
</row>
<row r=”12″ spans=”1:2″>
<c r=”A12″ s=”2″ t=”s”>
<v>12</v>
</c>
<c r=”B12″ s=”4″>
<v>41859</v>
</c>
</row>
</sheetData>
<pageMargins left=”0.7″ right=”0.7″ top=”0.75″ bottom=”0.75″ header=”0.3″ footer=”0.3″/>

It’s an extremely cryptic XML file. Apart from a few tags – col, row, sheetview and sheetdata – the XML schema is completely incomprehensible. Where are the dates? Where are the event descriptions?

They are actually there, but I challenge anyone to find them unless they know that Excel describes them with a sequential number starting from 1 January 1900. For 29 February 1900, it adds one, despite this being a “phantom” day that the programme – which is incompatible with the Gregorian calendar, a standard recognised even by the Chinese and Muslims – stubbornly continues to consider as existing, even though the “leap year bug” was discovered by Bob Bemer in 1958.

Therefore, in Excel, 19948 corresponds to 12 August 1954, but in reality it is 13 August 1954. The other dates are obviously 23,760; 28,813; 29,860; 30,560; 30,933; 31,825; 37,623; 39,550; 40,449; and 41,859. This is intuitive and easy to calculate, and above all it is imposed by the complexity of the document. Bullshit.

However, the mystery of the event descriptions remains. According to sheet1.xml, they do not exist since they do not appear in any way, not even as a reference. It is as if the spreadsheet consisted only of the second column.

So, I return to the [Content_Types].xml file and open the XML files in the order they are listed, searching for them in the subfolders.

<Types xmlns=”http://schemas.openxmlformats.org/package/2006/content-types”>
<Default Extension=”rels” ContentType=”application/vnd.openxmlformats-package.relationships+xml”/>
<Default Extension=”xml” ContentType=”application/xml”/>
<Override PartName=”/xl/workbook.xml” ContentType=”application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml”/>
<Override PartName=”/docProps/core.xml” ContentType=”application/vnd.openxmlformats-package.core-properties+xml”/>
<Override PartName=”/docProps/app.xml” ContentType=”application/vnd.openxmlformats-officedocument.extended-properties+xml”/>
<Override PartName=”/xl/worksheets/sheet1.xml” ContentType=”application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml”/>
<Override PartName=”/xl/theme/theme1.xml” ContentType=”application/vnd.openxmlformats-officedocument.theme+xml”/>
<Override PartName=”/xl/styles.xml” ContentType=”application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml”/>
<Override PartName=”/xl/sharedStrings.xml” ContentType=”application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml”/>
</Types>

Just as I was about to give up hope, I finally found the event descriptions in the sharedStrings.xml file. The file contains the following:

<sst xmlns=”http://schemas.openxmlformats.org/spreadsheetml/2006/main” count=”13″ uniqueCount=”13″>
<si>
<t>Event</t>
</si>
<si>
<t>Date</t>
</si>
<si>
<t>Was Born in Umbria</t>
</si>
<si>
<t>Broke Nose in Rome</t>
</si>
<si>
<t>University Degree in Milan</t>
</si>
<si>
<t>First Job at Italian Touring Club</t>
</si>
<si>
<t>Hired by Honeywell and Got 1st PC</t>
</si>
<si>
<t>1st Wedding in Assisi</t>
</si>
<si>
<t>BBC Show Interview in Birmingham</t>
</si>
<si>
<t>Installed OpenOffice</t>
</si>
<si>
<t>Repaired Nose in Rozzano</t>
</si>
<si>
<t>Launched LibreOffice</t>
</si>
<si>
<t>2nd Wedding in Las Vegas</t>
</si>
</sst>

If Sheet1.xml was cryptic, this is downright incomprehensible. I would like to know how the events are related to the dates within the sheet1.xml file through the different tags used in the two files: <t> and <v>. There are no cross-references linking the two elements, and if there are any, I challenge anyone to explain them to me in a way that I can understand and justify the mysterious format of these references.

Unfortunately, the reality is what I have already tried to explain without going into technical detail, as I have done in this post and will do in the next one dedicated to the DOCX case. Microsoft has developed an unnecessarily complex format – if LibreOffice can handle the information more simply, I don’t understand why Microsoft 365 can’t do the same – with the aim of making it extremely difficult to emulate the OOXML format without reverse engineering, which is widely used in some countries.

Furthermore, office suites that use reverse engineering to adopt OOXML as their native format merely help Microsoft to defend its market share by promoting a proprietary format that goes against users’ interests and their right to ownership and control of the content they have developed, generally referred to as digital sovereignty.

Users should learn to protect their rights by choosing an open, standard format such as ODF. This guarantees control over content and all that this entails, including protection of privacy, proper management of sensitive data and the ability to decide what to share and with whom.

This is a format whose development process, features and version are known, and whose description corresponds to what happens on the user’s PC, so even the least technical user can understand when a problem occurs and, in many cases, solve it.

In short, it is the standard document format that we would all like to have, but which only a minority use due to a lack of knowledge about the reality of the OOXML format, and the messianic trust that many have in Microsoft. This leads them to believe that there cannot be a commercial strategy behind the document format that protects the company’s interests at the expense of users.

LibreOffice and Software Freedom Day 2025 in Nepal

Opening slide of Suraj's talk

Updates from the Nepalese LibreOffice community:

Recent protests and stress in Nepal have disrupted regular activities. Almost everything was affected, including in-person events being canceled rapidly. For open source software users, Software Freedom Day 2025 was a big celebration. But many felt disillusioned about the event.

Despite all this, our community members in Nepal tuned in to an online call and turned Software Freedom Day 2025 into a success. Birendra Open Source Club – one of the student clubs and LibreOffice project contributors in Nepal, with support from Liaison Suraj Bhattarai and other key open source clubs, hopped onto Discord on 20 September. They carried out a series of talks among new and old enthusiasts and learners. The talks ranged from the importance of community and good first contributions, all the way up to open source in cybersecurity and open source pieces of hardware.

Suraj shared a short talk about Open Formats and added a little fun with the Easter hunt available on the LibreOffice Asia site.

Participants learned that a sense of freedom for software is only true when all the components, including formats or what we generally call “extensions,” share the same freedom as speech. It matters most in the case of canvas-based software and What You See Is What You Get (WYSIWYG) software, where there are different options to export or save the work in progress.

He emphasized that open formats are essential to software freedom because they let free software and users interoperate without barriers. Also, he highlighted the difference between open formats and closed formats.

TDF says: thanks to the Nepalese community for all their work! Click here to see Suraj’s presentation slides.

Community Member Monday: Devansh Varshney

Devansh Varshney

Today we’re talking to Devansh Varshney, who added histogram chart support to LibreOffice and is working on improvements to the Basic IDE…

Tell us a bit about yourself!

I am from Mathura in India, one of the historical cities where the first image of Buddha was carved during the Kushan Empire, Jain Tirthankar Neminatha’s birthplace and the more famous Bhagwan Krishna birthplace. A city where Greek kings also ruled and whose history has been documented by many travellers, the more famous Xuanzang and Faxian.

The rich history and diverse art culture of Mathura also reflects my interests too. My interests range from history to astrophysics to economics, and from tweaking custom Android ROMs back in high school to now tweaking the LibreOffice codebase which is one of the most interesting puzzles I came across. Even the people around me noticed and back in school I was given the name “Internet” – which was quite an interesting name but really reflects my nature.

Besides working on the LibreOffice codebase, I am also planning to complete my book on ADHD which I have mapped around first principles and physics. Hopefully by next year it will be complete.

Vishram Ghat by Umang108 on Wikimedia Commons

Vishram Ghatl on the banks of river Yamuna in Mathura (image: Umang108 on Wikimedia, CC-BY-SA)

What are you working on in the LibreOffice project right now?

This year I am working on making the Basic IDE better and more powerful by introducing a new Object Browser in the IDE, which is one of the most-demanded features as users working with LibreOffice had to visit the online API webpage to refer to the details of UNO APIs. That was quite a friction, and slows down not just the work but also decreases the user experience specially for macro developers.

Along with this, there is also the Basic code suggestion which will be available to users, so that they do not have to look every time what is going to be put when the suggestion can show the list of possible parameters and variables that can be placed.

Why did you choose to join the LibreOffice project, and how was the experience?

This is an interesting question. Back in 2017-2018 I experienced a lot of challenges with the Chrome browser, and thought about fixing them. That’s when I came across the Chromium project – upon which Chrome is based – and I did try to ask how to contribute and got some reply, but it was different from what I got in the LibreOffice project.

Here I did not get silence or confusion when I picked a bug, rather people showed interest and curiosity, and helped me do what I intended to fix. I am not putting other open-source projects on a pedestal – it’s just what I experienced at LibreOffice.

I also made some small contributions to the Google Benchmark and Blockly project and Phoenix Framework previously, but the big twist came last year when Ilmari got curious and asked me why I hadn’t mentioned the Google Summer of Code (GSoC) yet and pushed me to apply for 2024. I looked at the projects and found “Adding Native Histogram support to LibreOffice“.

Since in the past I had worked with machine learning, I saw that the need for these new chart types is crucial. But this is not just the point — while preparing the proposal for the histogram project, I found that CERN uses LibreOffice for their work and they even had a tutorial on a workaround of making histogram charts via column charts (link).

Which showed me two things: first, the lack of this feature is not just slowing human research, but also that the impact of LibreOffice is worldwide. This was the exact moment I realised that LibreOffice is not just about an office suite that lets people have autonomy over their data – but also its impact on human evolution and development is of sheer size.

Histogram charts in LibreOffice

Anything else you plan to do in the future? What does LibreOffice really need?

Yes, there is a lot of work remaining. First and foremost is the addition of Histogram Chart and other new chart types, as we later found challenges with how charts are being mapped in the codebase, and the newly introduced namespace by Microsoft for OOXML export made work more challenging. Then this year I got more interested in OCR with images and files like PDFs, natively available to users locally.

I tried to make an extension with Tesseract but its efficiency is not that great and it misses the whole structure of how the text was in the image.

Since LLMs (large language models) are something famous nowadays, I looked at how they are processing and reading images, and found they really can’t read images directly. The images first have to be processed by something called Vison Language Models (VLMs).

Nowadays there are some amazing open-source VLMs available which are also small in size and can run locally – even with the computing power of a mobile device. So I am also looking at ways we can get this working with LibreOffice, so that not just OCR but also reliable translation from text to the captured structure and modifying that structure can be done.

Many thanks to Devansh for the great contributions to LibreOffice! Everyone is welcome to find out what they can do to make the suite even better 😊