Code Review Tools Used in LibreOffice Development

LibreOffice relies on a robust suite of development tools to maintain code quality, automate testing, and manage contributions from hundreds of global developers. At the heart of this workflow is Gerrit Code Review, an open-source, web-based tool tightly integrated with Git and continuous integration (CI) systems. This article outlines the role of Gerrit in LibreOffice development and explores the supporting tools that complete their peer review and testing infrastructure.

Gerrit Code Review

Gerrit is the primary code review platform for the core LibreOffice repository. It acts as an intermediary between a developer’s local Git workspace and the central LibreOffice repository. When developers push commits, Gerrit stages them as proposed changes rather than applying them directly to the main branch.

Key aspects of how LibreOffice employs Gerrit include:

Jenkins for Continuous Integration

Gerrit in LibreOffice is integrated with Jenkins, an automation server that executes automated builds and unit tests across multiple platforms (Linux, macOS, and Windows) for every submitted patch set.

Bugzilla Integration

While Bugzilla is primarily an issue tracker rather than a dedicated review tool, it is integrated into the LibreOffice review pipeline. Developers reference Bugzilla ticket numbers (e.g., tdf#12345) in their commit messages. Gerrit automatically links these commits to the relevant Bugzilla issues, and when a review is approved and merged, Bugzilla is updated automatically with the commit reference and the status of the bug.

Tinderbox System

Complementing Gerrit and Jenkins is the LibreOffice Tinderbox infrastructure. Tinderboxes are dedicated build machines that continuously pull the latest integrated code from the main repository to compile and run the full test suite under various environments and configurations (such as different compiler versions or specialized optimization flags). This catches platform-specific regressions that quick pre-merge CI checks might miss.