Software Management Workplan 2020

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)
  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 and Geant4GNUmake build systems (Ben Morgan, Gabriele Cosmo)

Development Tasks

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

  1. Geant4 Tools and Releases
    1. Build and Publication of Docker/Singularity Images for Geant4 Releases (Jonathan Madsen, Ben Morgan, Guilherme Amadio)(2)
    2. Drop support for 32bit Windows (*)(1)
    3. Support Geometry Working Group task on enabling VecGeom as default (1)(2)
    4. Evaluate use of GitLab CI for Continuous and Nightly Testing, and other automation tasks (Ben Morgan, Gabriele Cosmo, Gunter Folger, Guilherme Amadio)
    5. Evaluate manpower and tooling requirements to officially support Geant4 in downstream packaging systems such as Spack (Ben Morgan)
  2. Global Category (Gabriele Cosmo, Jonathan Madsen, Ben Morgan)
    1. Integrate and test new Tasking Framework
    2. Use of TiMemory library for profiling
    3. Review mandatory and optional compiler flags needed to build and link to Geant4 (*)(1)
    4. Evaluate use of C++17 as minimum required ISO C++ Standard (*)(1)
  3. Integrate Geant4Py Build/Install (Ben Morgan, Koichi Murakami, Jonathan Madsen(1)
    1. Evaluate replacement of Boost.Python with pybind11 
  4. Modularization of Geant4 Libraries (Ben Morgan(*)(1)
    1. Migrate to new simpler CMake API for declaring global libraries built from current granular modules, including its public/private headers, sources, unit tests and dependencies on other Geant4 modules
    2. Identify libraries/modules for merging or splitting, including optional modules that a user may choose to drop/add to the build
    3. 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
  6. Configuration/Build tools for User Applications (1)
    1. Provide pkg-config scripts for use by non-CMake build systems (Ben Morgan)