The changelog entry for this release is six lines, not the fifty-four the development log had accumulated: what a user of rc.166 gets is native miniCBF input, masters from other facilities opening, the beam centre measured on every run, a 2theta-swung detector placed where the file says, the unmerged MTZ and a P1 merge written by default, and a substantially reworked symmetry determination. The per-change detail is in the commits. update_version.sh regenerates the three clients from broker/jfjoch_api.yaml, so this also carries the one API description that had drifted from the generated code - fft_high_resolution_A, which sizes the FFT's projection histogram and does not filter spots by resolution. Everything else in the regenerated tree is the version string. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EFEJG6WBQv8th4UJFNe53N
11 KiB
Third-party software notices
Jungfraujoch is licensed under GPL-3.0 (see LICENSE); the FPGA design is
licensed under CERN-OHL-S-2.0 (see fpga/LICENSE). It builds on a number of
third-party components, acknowledged below as required by their licenses.
This file is the human-readable manifest. The verbatim license texts live in the
licenses/ directory (regenerate with bash licenses/COLLECT.sh). The frontend's
bundled JavaScript dependencies are listed separately in
frontend/dist/THIRD_PARTY_LICENSES.txt, generated at build time (npm run licenses).
All licenses below are GPL-3.0-compatible.
Fetched at build time and statically linked into the C++ binaries
These are downloaded by CMake (FetchContent / ExternalProject) during the first configure and
linked into the Jungfraujoch executables.
| Component | Version | Copyright | License (SPDX) | License text |
|---|---|---|---|---|
| spdlog | 1.17.0 | Gabi Melman | MIT | spdlog.txt |
| Zstandard | (pinned) | Meta Platforms, Inc. | BSD-3-Clause | zstd.txt |
| HDF5 | 2.1.0 | The HDF Group; UIUC | BSD-3-Clause-style | hdf5.txt |
| slsDetectorPackage | 8.0.2 / 9.2.0 | PSI | LGPL-3.0-or-later | LGPL, GPL |
| cpp-httplib | 0.39.0 | Yuji Hirose | MIT | cpp-httplib.txt |
| libzmq (ZeroMQ) | 4.3.5 | iMatix and contributors | MPL-2.0 | libzmq.txt |
| libtiff | 4.7.1 | Sam Leffler; SGI | libtiff (BSD-like) | libtiff.txt |
| FFTW | 3.3.10 | Matteo Frigo; MIT | GPL-2.0-or-later | fftw.txt |
| Ceres Solver | (pinned) | Google Inc. and contributors | BSD-3-Clause | ceres-solver.txt |
| fast-feedback-indexer | (pinned) | PSI | BSD-3-Clause | fast-feedback-indexer.txt |
| libjpeg-turbo | (pinned) | D. R. Commander and others; IJG | IJG + BSD-3-Clause + Zlib | libjpeg-turbo.txt |
| Catch2 | 3.13.0 | Catch2 Authors | BSL-1.0 | catch2.txt |
Catch2 is used only to build the test binary (jfjoch_test) and is not part of any shipped
artifact; it is listed here for completeness.
Vendored directly in the repository
These are copied into the source tree (see the path) rather than fetched.
| Component | Path | Copyright | License (SPDX) | License text |
|---|---|---|---|---|
| nlohmann/json | include/nlohmann/ |
Niels Lohmann | MIT | nlohmann-json.txt |
| Macaron Base64 | include/base64/ |
tomykaira | MIT | base64-macaron.txt |
| TinyCBOR | frame_serialize/tinycbor/ |
Intel Corporation | MIT | tinycbor.txt |
| Bitshuffle | compression/bitshuffle/ |
Kiyoshi Masui | MIT | bitshuffle.txt |
| Bitshuffle (h-perf) | compression/bitshuffle_hperf/ |
Kal Cutter (DECTRIS) | Apache-2.0 | bitshuffle-hperf.txt |
| LZ4 | compression/lz4/ |
Yann Collet | BSD-2-Clause | lz4.txt |
| HLS arbitrary-precision types | fpga/include/ |
Xilinx, Inc. | Apache-2.0 | xilinx-hls-headers.txt |
| GEMMI | gemmi_gph/ |
Global Phasing Ltd. | MPL-2.0 | gemmi.txt |
| PEGTL | gemmi_gph/gemmi/third_party/tao/ |
Dr. Colin Hirsch and Daniel Frey | MIT | pegtl.txt |
| sajson | gemmi_gph/gemmi/third_party/sajson.h |
Chad Austin | MIT | sajson.txt |
| fast_float | gemmi_gph/gemmi/third_party/fast_float.h |
The fast_float authors (Daniel Lemire et al.) | Apache-2.0 OR MIT OR BSL-1.0 | fast-float.txt |
| half | gemmi_gph/gemmi/third_party/half.hpp |
Christian Rau | MIT | half.txt |
| pocketfft | gemmi_gph/gemmi/third_party/pocketfft_hdronly.h |
Max-Planck-Society; Peter Bell; MIT (FFTW-derived parts) | BSD-3-Clause | pocketfft.txt |
| tinydir | gemmi_gph/gemmi/third_party/tinydir.h |
Cong Xu, Lautis Sun, Baudouin Feildel, Andargor | BSD-2-Clause | tinydir.txt |
| traccc (ACTS) | image_analysis/spot_finding/StrongPixelSet.cpp, SpotExtractorGPU.cu |
CERN, for the benefit of the ACTS project | MPL-2.0 | traccc.txt |
| xbflash.qspi | tools/xbflash.qspi/ |
Xilinx / AMD | Apache-2.0 | xbflash-qspi.txt |
| wingetopt | tools/wingetopt/ |
Todd C. Miller; The NetBSD Foundation | ISC AND BSD-2-Clause | wingetopt.txt |
Runtime libraries and SDKs (shipped in binaries, not in the source tree)
| Component | Used by | License | Notice |
|---|---|---|---|
| Qt 6 | jfjoch_viewer |
LGPL-3.0 | notice, LGPL-3.0 |
| NVIDIA CUDA Toolkit (cudart, cuFFT) | CUDA builds | NVIDIA CUDA EULA | notice, EULA |
| zlib | everywhere (compression) | Zlib | zlib.txt |
| Eigen | analysis libs, Ceres, ffbidx (header-only) | MPL-2.0 (+ BSD parts) | eigen.txt, README |
Frontend (npm) dependencies
The React/TypeScript frontend (frontend/) bundles a large transitive tree of npm packages,
overwhelmingly MIT/ISC/BSD/Apache-2.0 licensed. Their full notices are generated automatically:
cd frontend && npm run licenses # writes dist/THIRD_PARTY_LICENSES.txt
The generated file is produced as part of the frontend build target and installed alongside the
served frontend, so the shipped web UI carries its own attribution.
Notes on weak-copyleft and attribution-sensitive components
- MPL-2.0 (Eigen, GEMMI, libzmq, traccc): file-level copyleft. GEMMI is vendored in
gemmi_gph/in trimmed form; libzmq is fetched at build time; Eigen is provided externally (header-only). The corresponding source is available from each project upstream. - GEMMI's own bundled third-party headers — PEGTL, sajson, fast_float, half, pocketfft and
tinydir, all under
gemmi_gph/gemmi/third_party/— are listed separately above rather than being absorbed into GEMMI's row: they are other authors' code under other licences (MIT, BSD and Apache/MIT/BSL), and GEMMI's MPL-2.0 does not speak for them. Their terms are carried in the headers themselves rather than inLICENSEfiles, so thelicenses/*.txtcopies are kept by hand; only PEGTL ships aLICENSE, whichCOLLECT.shcopies. - traccc is the one entry that is not a vendored directory. Its sparse connected-component
labelling enters two otherwise first-party files:
StrongPixelSet.cppadapts the SparseCCL source, andSpotExtractorGPU.cufollows the design of its GPU counterpart. MPL-2.0 is file-level, so both files name the origin at the top and are covered bylicenses/traccc.txt. See ACKNOWLEDGEMENT.md for the citation. - FFTW is GPL-2.0-or-later — compatible with, and absorbed by, this project's GPL-3.0 license.
- Apache-2.0 components: where upstream ships a
NOTICEfile, it is reproduced in the correspondinglicenses/text. - Qt (LGPL-3.0) and NVIDIA CUDA (EULA) carry redistribution conditions beyond a copyright
notice; see their dedicated notice files. The verbatim LGPL-3.0 and CUDA EULA texts are bundled
(
licenses/Qt6-LGPL-3.0.txt,licenses/NVIDIA-CUDA-EULA.txt); the CUDA EULA is the one shipped with CUDA Toolkit 12.8 — replace it if you build against a different toolkit version.