Skip to content

Instantly share code, notes, and snippets.

View moabo3li's full-sized avatar

Mohamed Ali moabo3li

View GitHub Profile

LibreOffice Rust UNO Bindings - Final Report

Project Overview

We developed a Rust language binding for LibreOffice's Universal Network Objects (UNO) API. This work allows Rust developers to write LibreOffice extensions, automation scripts, and document processing applications while maintaining Rust's memory safety principles.

For detailed technical documentation, see: LibreOffice Rust UNO Bindings - Complete Technical Report

What We Accomplished

@moabo3li
moabo3li / LibreOffice Rust UNO Bindings.md
Last active September 25, 2025 05:05
LibreOffice Rust UNO Bindings

LibreOffice Rust UNO Bindings: Building a Type-Safe Bridge to Office Integration

The LibreOffice Rust UNO Bindings project delivers a production-ready, type-safe Rust language binding for LibreOffice's Universal Network Objects (UNO) API, featuring automatic code generation for all UNO types through an innovative three-layer FFI architecture. We successfully bridged Rust's memory safety guarantees with LibreOffice's complex C++ UNO system, enabling direct runtime integration and safe office automation capabilities. This technical report explores our architectural decisions, implementation challenges, and lessons learned that can benefit developers working on similar cross-language integration projects.

Why We Built This - Enabling Rust for LibreOffice Scripts and Extensions

We built this project to enable Rust developers to write scripts, extensions, and business logic for LibreOffice using Rust's safety and performance advantages.

This binding system allows developers to create LibreOffice scripts i

@moabo3li
moabo3li / Implementing Master Page Copying in LibreOffice Impress.md
Last active September 11, 2025 13:21
Implementing Master Page Copying in LibreOffice Impress

Overview

This report details my contributions to enabling master page copying in LibreOffice Impress, addressing a 13-year-old bug (Bug 45617) that prevented users from duplicating master page templates. My work, delivered through two Gerrit patches (Change 179832 and Change 182206), was integrated into LibreOffice 25.8.0, released in 2025. The changes involved refactoring a complex codebase and implementing robust master page copying functionality, significantly improving Impress’s usability for creating presentation templates.

2025-04-29.07-00-23.mp4

Bug Context