About
Fermi Data Platform Tools is a client suite for the Fermi Data Platform (FDP): storage on
the dCache instance amsc.fnal.gov, the MetaCat / AmSC catalog, and the AmSC data movement service.
It is written by Andrew Norman (Fermilab) and kept in a private GitHub repository,
normanajn/Fermi-Data-Platform-Tools. FDP itself is documented at
fnal-scd.github.io/fdpdocs.
Design in brief
- One C++17 library (
libfdp) used by every front end: command-line tools, Python, Qt, Swift.
- Configuration in YAML with command line > environment >
.env > file > defaults.
- Transfers are verified with dCache's adler32; files are only renamed into place when verified.
- Tokens per vault role from
htgettoken; sent only to the configured endpoints.
- Design decisions are recorded with alternatives and reasons in
docs/DECISIONS.md
(D1–D46); status and test results in docs/STATUS.md and docs/TEST_MATRIX.md.
Dependencies
| Dependency | Used for | Needed by |
| libcurl | HTTP/WebDAV, MetaCat, Globus | libfdp |
| OpenSSL (libcrypto) | SHA-256, PKCE, CA handling | libfdp |
| Boost 1.75+ (JSON, PropertyTree, Program_options) | JSON, WebDAV XML, option parsing | libfdp, CLIs |
| yaml-cpp | configuration files | libfdp |
| XRootD client (XrdCl) | root:// access (optional) | libfdp |
| OpenMP | parallel transfers (optional) | libfdp |
| htgettoken | bearer tokens from the Fermilab vault | runtime |
| pybind11, scikit-build-core | Python extension and wheel | fdptools |
| Qt 6 (Widgets) | fdp-qt | fdp-qt |
| SwiftUI, Xcode, XcodeGen | FDP Browser | macOS app |
| CppUnit, pytest, QtTest, XCTest | tests | development |
| PyYAML | website build and deploy scripts | development |
Tested platforms
| Platform | Toolchain | Result |
| macOS 26 arm64 | AppleClang 17, Homebrew, Qt 6.11 | all suites; live checks; notarized packages |
| AlmaLinux 9.8 | GCC 11.5, distro/EPEL/OSG packages, XRootD 5.9 | all suites; interactive checklist |
| AlmaLinux 8.10 (no root) | conda-forge GCC 15, XRootD 5.8, Qt 6.9 | all suites; interactive checklist |
| Amazon Linux 2023 | GCC 11.5, Qt 6.11 (aqt), no XRootD runtime | all suites |
| Windows 11 | MSVC 2022, vcpkg | defined, not yet run |
This website
- Sources in the repository's
web/ directory: page fragments in web/src/pages, one
layout, one hand-written stylesheet; scripts/build-website.py assembles web/site.
- No JavaScript, no third-party resources at runtime, no cookies, no analytics.
- Hosted in a private S3 bucket behind CloudFront (TLS certificate from ACM, origin access control),
at
fdp.andrewnorman.org in Route 53; defined in infra/website.yaml and deployed
with scripts/deploy-website.py.