# Extending ROOT through Modules

**Authors:** Oksana Shadura (1), Brian Paul Bockelman (1), Vassil Vassilev (2), ((1) University of Nebraska Lincoln, (2) Princeton University)

arXiv: 1812.03145 · 2019-10-02

## TL;DR

This paper proposes a modularization strategy for the ROOT software framework to improve extensibility, maintainability, and ease of embedding by formalizing component dependencies and enabling post-install additions.

## Contribution

It introduces a formal component layering approach for ROOT, leveraging modern C++ features to enhance modularity, reduce dependencies, and facilitate external package management.

## Key findings

- Formalized component description improves maintainability.
- Enabling post-install package additions enhances extensibility.
- Reduces intra-component dependencies for better code hygiene.

## Abstract

The ROOT software framework is foundational for the HEP ecosystem, providing capabilities such as IO, a C++ interpreter, GUI, and math libraries. It uses object-oriented concepts and build-time components to layer between them. We believe additional layering formalisms will benefit ROOT and its users. We present the modularization strategy for ROOT which aims to formalize the description of existing source components, making available the dependencies and other metadata externally from the build system, and allow post-install additions of functionality in the runtime environment. components can then be grouped into packages, installable from external repositories to deliver post-install step of missing packages. This provides a mechanism for the wider software ecosystem to interact with a minimalistic install. Reducing intra-component dependencies improves maintainability and code hygiene. We believe helping maintain the smallest "base install" possible will help embedding use cases. The modularization effort draws inspiration from the Java, Python, and Swift ecosystems. Keeping aligned with the modern C++, this strategy relies on forthcoming features such as C++ modules. We hope formalizing the component layer will provide simpler ROOT installs, improve extensibility, and decrease the complexity of embedding in other ecosystems

## Full text

_Full body text omitted from this summary view._ Fetch the complete paper as Markdown: https://tomesphere.com/paper/1812.03145/full.md

## Figures

3 figures with captions in the complete paper: https://tomesphere.com/paper/1812.03145/full.md

## References

7 references — full list in the complete paper: https://tomesphere.com/paper/1812.03145/full.md

---
Source: https://tomesphere.com/paper/1812.03145