Databases & Storage

MariaDB introduces Doxygen-generated documentation for Server Plugin API

Key Takeaway

MariaDB has launched a new, automated documentation system for its Plugin API to simplify extension development.

Summary

MariaDB has released a new, Doxygen-generated reference for its Server Plugin API, now integrated directly into the official MariaDB documentation. Previously, developers extending the database server had to manually parse header files, source code, and existing plugin implementations to understand available interfaces.

This new documentation is built dynamically from the source code, ensuring that the API reference remains synchronized with the main server branch. The initiative aims to lower the barrier for contributors by providing a centralized, structured guide for developing server extensions and plugins.

Technical implementation and documentation workflow

  • Documentation Pipeline: The system uses Doxygen to scrape comments and structure from header files in the include/mysql/ directory, converting the resulting XML into Markdown via Moxygen (version 2.1.19 or higher).
  • Build Integration: Developers can generate local documentation by enabling the -DWITH_GENERATED_DOCS=yes CMake target, which creates a plugin_api_docs target within the build directory.
  • Automated CI/CD: A nightly GitHub Action regenerates the API docs and automatically files pull requests to the mariadb-docs repository if changes are detected between the server tree and the documentation tree.
  • Containerized Environment: For contributors avoiding local toolchain setup, a dedicated Docker container (ghcr.io/mariadb/mariadb-doc-gen) is provided to replicate the official buildbot environment.

Why it matters

By formalizing the Plugin API documentation, MariaDB is reducing the technical debt and friction associated with third-party extensions. This encourages more robust community contributions and helps software engineers build more reliable, well-documented storage engines and server features.

Original reference: mariadb.org →