Workshop: Introduction to LibreOffice Development
Preface
This is the programme for a three-day workshop for the LibreOffice Conference 2023 in Bucharest, focusing on LibreOffice development. Targeted audience are the undergraduate/graduate computer and IT students or anyone who knows programming well, and now want to become familiar with a large scale real world software project.
The below learning paths are based on the experiences from the previous hackfests and workshops dedicated to the LibreOffice development in the universities across the world.
These are the different sessions, suggested in a 3-day program:
Day One
No programming knowledge or specific tool is required for sessions 1, 2 and 3. For these parts, basic computer knowledge and skills would be sufficient. Participants should be able to install LibreOffice (portable versions can also be used), create accounts, work with LibreOffice, and report/triage bugs. Basic information about IRC/Wiki/mailing lists will be given during the sessions.
For sessions 4 and 5 (Git and Gerrit), the required knowledge is more. Having worked with a programming language is needed.
1. Office software, and the open source/free software development model (1 hour)
This is the introductory session for the participants to understand the development model of open source/free software, and its role in shaping the digital life of the people across the world. After that, the importance of office software and in case, LibreOffice is discussed. Also, a brief history of LibreOffice is also presented.
List of the topics to be discussed:
+ Free / open source software (FOSS) development model
+ Ideas and the history of FOSS
+ Importance and impact of FOSS throughout the world
+ Different FOSS Licenses
+ Knowing LibreOffice
+ Installing and working with the LibreOffice software
2. Effective communication in open source/free software projects (1 hour)
As there are multiple communication channels for the open source/free software projects, and specifically LibreOffice, we will discuss them in this session. In this session, participants will get connected to the LibreOffice community.
List of the topics to be discussed:
+ Open source /free software communication channels:
+ TDF websites and single sign on account
+ IRC channel and Matrix groups
+ Mailing lists
+ TDF Wiki
3. Bug reporting and triaging (2 hours)
LibreOffice uses Bugzilla to track the software bugs. In this session, various things around bug reporting and triaging will be discussed. Participants will have the time to have experience of reporting and triaging bugs in Bugzilla.
List of topics to be discussed:
+ Bug reporting and triaging
+ Importance of bug tracking
+ Bug reporting
+ Bug triaging
+ Hands on experience with Bugzilla
+ Setting up a Bugzilla account
+ Reporting bugs
+ Triaging bugs
4. Git basics (2 hours)
In this session, participants will learn basic git commands. The knowledge will be beneficial for the next sessions of the workshop, but it can be beneficial for other software projects as well, as version control systems are in use in many software projects today.
List of topics to be discussed:
+ Git basics
+ Understanding the version control systems
+ Setting up git
+ Staging environment
+ Doing a commit
+ Understanding the diff
+ Modifying the commit
+ Branches
+ Merge and re-base
5. Gerrit for code reviews (2 hours)
In this session, basics of code review is discussed. Participants will be able to work with the LibreOffice Gerrit. In this session, the importance of clean code, and the role and the process of code review will be discussed.
This session is also useful for any other software project, as code reviews are very common today to ensure the quality of the code.
List of topics to be discussed:
+ Gerrit for code reviews
+ Importance of clean code
+ Process of code review
+ Hands on experience with Gerrit
+ Setting up a Gerrit account
+ Setting up local environment
+ Submitting a patch
Day Two
We expect that the participants have completed at least a Java/Python programming course before. LibreOffice BASIC is something that should be easy to understand for those people, and is not counted as a prerequisite.
6. Software localization (l10n) and internationalization (i18n) (1 hour)
In this session, the role of software localization (l10n) and internationalization (i18n) is discussed. As an example, the localization process of LibreOffice through Weblate is shown, and participants will have the opportunity to work with it, and change the localization parameters of the software.
List of topics to be discussed:
+ Localization (l10n) and internationalization (i18n)
+ Role of l10n and examples
+ Role of i18n and examples
+ Process of localization
+ Hands on experience
+ Setting up a Weblate account
+ Translate strings through weblate
+ Modify the localization parameters
Usable resources for this session are:
LibreOffice Localization Guide
https://wiki.documentfoundation.org/LibreOffice_Localization_Guide
7. LibreOffice automation via scripting (BASIC, Python) (3 hours)
In this session, one only needs a working installation of LibreOffice. Two different scripting language are suggested in this path: Basic and Python.
The suggested activities are:
+ LibreOffice automation via scripting
+ Basic scripting in LibreOffice
+ Python scripting in LibreOffice
+ UNO API
+ ScriptForge
Usable resources for this session are:
+ LibreOffice BASIC programming guide
https://wiki.documentfoundation.org/Documentation/BASIC_Guide
+ LibreOffice help (ScriptForge parts)
https://help.libreoffice.org/latest/en-US/text/sbasic/shared/03/lib_ScriptForge.html
The focus in this session will be on running different examples, and writing various scripts that show the different aspects of LibreOffice and its automation capabilities. ScriptForge (Python) can be a good choice here, as it provides a modern API that can be easily used, but it should be noted that it is not as feature complete as the UNO API.
8. LibreOffice SDK development (Java, Python) (3 hours)
In this session, one does not require building LibreOffice, but a working installation of LibreOffice binaries and SDK would be enough. Several languages can be used in LibreOffice SDK programming, from Python to Java and even C++. But, we would avoid C++ here, and refer the participants with C++ knowledge to the last session.
The suggested activities are:
+ SDK examples
+ Running SDK examples
+ Python
+ Java
+ Modifying SDK examples
+ Writing extensions
+ Working with JLOP examples
Usable resources for this path are:
+ Java LibreOffice programming (JLOP)
https://flywire.github.io/lo-p/
Python Guide
https://wiki.documentfoundation.org/Macros/Python_Guide
For start, focus will be becoming familiar with LibreOffice project and compiling the examples and modifying them. Creating extension and working with examples from JLOP book will be more advanced parts of this session.
Day Three
This last part needs more programming experience, and specially C++. Participants who have had a C++ programming course before, and implemented some project in their courses should be able to understand the sessions.
9. Building LibreOffice from source code (4 hours)
This session is a prerequisite of the next session on C++ development. For this session, preparations are needed to speed up the process as downloading and compiling can be time consuming. For example, having source code and requirements downloaded, or preparing virtual machines with the prerequisites and LibreOffice source code can speed up the build process.
The suggested activities for building LibreOffice are:
+ Building LibreOffice from source code
+ Setting up the development environment
+ Getting the LibreOffice sources
+ Configuring LibreOffice with appropriate settings
+ Compiling LibreOffice
Usable resources for this path are:
Getting Involved in LibreOffice Development
https://wiki.documentfoundation.org/Development/GetInvolved
10. LibreOffice core development (C++) (4 hours)
This session requires more programming and general computer knowledge, and the prerequisite is building LibreOffice from source code. In this way, one can gain a better understanding of how LibreOffice is compiled, built and delivered to the user in the form of installation packages.
The suggested activities after building LibreOffice are:
+ Development and bug fix
+ Understanding EasyHacks
+ C++ development
+ Bug fixing
+ Fixing regressions
+ Writing tests
Usable resources for this path are:
+ LibreOffice developers’ guide (Devguide)
https://wiki.documentfoundation.org/Documentation/DevGuide
Required knowledge for this session are:
1. Knowing C++ and object oriented programming
2. Familiarity with compiling C/C++ code
3. Familiarity with office file formats in general
Follow Us