Speaker
Description
Deployment of scientific software across diverse platforms like MacOS, Windows, and Linux is a requirement for any software which is developed for the broader community. Such deployment presents multifaceted challenges, particularly when mixed-language programming (e.g., C/C++, Fortran and Python) with intricate dependencies (like Qt or Python) is a part of the build mechanism.
Addressing library dependencies adds another layer of complexity, particularly in the choice between static or dynamic linking and maintaining consistency across versions and platforms. Furthermore, bundling libraries with the installer/package requires strategic choices to make a balance between efficient use of system resources, portability and easiness of installation for the normal user (with Windows MSI installers, MacOS DMG files, and Linux packages like DEB and RPM).
The incorporation of a separate Python package ("wheel") provides an straightforward installation mechanism for the user as Python's cross-platform compatibility simplifies certain deployment aspects and usage, yet incorporating the underlying C/C++ components (libraries) necessitates a proper configuration to ensure a smooth integration within the user's system.
This talk explores the complexities involved in deploying such software, with attention to platform-specific nuances, intricacies in terms of library linking, compilation and packaging (installers and Python wheels), and provides some insights and solutions acquired in the long-term experience with developing BornAgain, an open-source software to simulate and fit neutron and x-ray scattering.