Software Management Workplan 2021 (Draft)

Ongoing Activities

  1. Geant4 Release and Reference Tags
    1. User support for installation and usage (Ben Morgan, Gabriele Cosmo)
    2. Release Management (Gabriele Cosmo)
    3. Release preparation (runtime and compile time checks) (Gabriele Cosmo, Gunter Folger)
    4. Build of binary releases (Gunter Folger, Ben Morgan)
    5. Contribute and support Geant4 packages in downstream package managers (spack, conda, Debian, gentoo)
  2. Support for Geant4 Tools, Services and Servers
    1. Support for collaboration GitLab, GitHub repositories and tools (Ben Morgan, Gunter Folger, Gabriele Cosmo)
    2. Support for Jenkins and CDash testing system (Gunter Folger)
    3. Support for public Bugzilla problem tracking tool (Koichi Murakami)
    4. Support for Discourse forum (Ben Morgan, Dennis Wright)
    5. Support for public LXR and Doxygen source code documentation (Koichi Murakami)
    6. Support for collaboration JIRA requirements tracker (Koichi Murakami)
    7. Support and maintenance for Geant4Config, geant4-config build helpers (Ben Morgan, Gabriele Cosmo)

Development Tasks

Items marked (1) will preview in the June 2021 Beta release, (2) items are expected in the December 2021 public release, those marked (*) are breaking, or potentially breaking, changes to CMake and/or C++/Python interfaces 

  1. Geant4 Tools and Releases
    1. Build and Publication of Docker/Singularity Images for Geant4 Releases (Jonathan Madsen, Ben Morgan)(2)
    2. Support Geometry Working Group task on enabling VecGeom as default, including integration of VecGeom as an external (1)(2)
    3. Drop support for building against CLHEP's "granular library" mode (*)(1)
    4. Evaluate use of Jenkins Pipelines and GitLab CI for Continuous and Nightly Testing (Ben Morgan, Gabriele Cosmo, Gunter Folger, Pere Mato)
    5. Evaluate GitLab CI for other automation tasks (Ben Morgan, Gabriele Cosmo, Gunter Folger)
    6. Support and test macOS on Apple M1 chip (1)(2) 
    7. Review use and integration of automatic performance monitoring tools (in collaboration with Testing and Quality Assurance Working Group)(1)(2)
  2. Global Category (Gabriele Cosmo, Jonathan Madsen, Ben Morgan)
    1. Enable Tasking Framework as default concurrency scheme (*)(1)(2)
    2. Review need for dedicated sequential only build mode, supporting sequential applications fully through Tasking Framework (*)(2)
    3. Review mandatory and optional compiler flags needed to build and link to Geant4 (*)(1)
    4. Require C++17 as minimum ISO C++ Standard (*)(1)
    5. Simplify implementation and use of G4Allocator (*)(2)
  3. Geant4Py Implementation and Support (Ben Morgan, Koichi Murakami, Jonathan Madsen)
    1. Replacement of Boost.Python for binding with pybind11 (*)(1)
    2. Provision of basic examples and documentation (in coordination with Examples and Documentation Working Groups(2)
  4. Modularization of Geant4 Libraries (Ben Morgan(*)(1)(2)
    1. Identify libraries/modules for merging or splitting, including optional modules that a user may choose to drop/add to the build
    2. Profile modularization scheme to ensure performance is not affected
  5. Data libraries (Ben Morgan, Gunter Folger, Gabriele Cosmo) (*)(2)
    1. Discuss potential for development/publication of libraries using GitLab/CVMFS
    2. Review access patterns and interfaces for data, evaluate API and format changes, if any, needed to simplify configuration and optimize read times (in collaboration with EM, Hadronic Physics Working Groups)
  6. Configuration/Build tools for User Applications (Ben Morgan)(*)(1)
    1. Provide pkg-config scripts for use by non-CMake build tools (1)
    2. Remove GNUmake system (*)(1)