Presented by:



Build an extensible and robust collection of macro scripting resources for LibreOffice to be invoked from user Basic or Python scripts.


This project comes with a bunch of subprogram “primitives” aimed at filling some programming gaps in LibreOffice Basic. These primitives cover many of LibreOffice functionalities and are meant to be extended by any contributor over time. They complement - and often replace - the usual Tools library made available under LibreOffice packages since the OpenOffice years.

Integration into LibreOffice

The development of the software is done currently with LibreOffice 6.4. Tests are undergone both under the Windows and Linux operating systems.

When ready, the code will be integrated into the master branch of Libreoffice. It will appear as one or more additional "LibreOffice Macros & Dialogs" libraries.

The intent is to have the software ready for production for the next LibreOffice 7.1 release.

Deliverables (version 1.0)

  • A set of Basic + Python modules and classes covering next topics
    • about data containers
      • an extensive set of primitives for array handling, including sorts, set operations and interfaces with csv files and Calc sheets
      • an extensive set of primitives for string handling, including replacements, regular expressions, encodings, hashing and localization
      • a Dictionary mapping class
    • a coherent error handling for both user and ScriptForge scripts
    • complete FileSystem and TextStream classes for file and directory handling, and text files read & write
    • detailed context information: platform, operating system, directories, ...
    • interconnection of Basic and Python modules
    • easy access to and management of actual windows and documents
    • specific modules for
      • automation on Calc sheets
      • Dialogs and their controls
      • Toolbars and their controls
      • Accessing data contained in databases
  • The corresponding unit tests grouped in a QA library
  • The user documentation as a set of LibreOffice Help pages


The described modules and classes will be invoked from user scripts as "Services". A generic constructor of those services has been designed for that purpose: CreateScriptService("servicename"[, arg0, Arg1, ...])

Symmetrically services are registered with the RegisterScriptServices(...) method. This method may be implemented in external libraries to extend the set of available services.

Above mechanisms make ScriptForge an easily extensible ecosystem combining standard libraries, libraries published as extensions or distributed as company extensions.

Current status

Progress can be tracked on ScriptForge on GitLab.

Presented from

Brussels - CEST — Central European Summer Time - UTC/GMT +2 hours

2020 October 17 - 14:30
30 min
Room 1
Development, APIs, Extensions, Future Technology

Happening at the same time:

  1. LibreOffice Virtual Hackfest
  2. Start Time:
    2020 October 17 14:00

    Workshop Room

  3. WollMux
  4. Start Time:
    2020 October 17 14:30

    Room 2