Software Management

Purpose

The Geant4 Software Management working group is responsible for Geant4’s development, testing, and support systems. It also develops and supports build and packaging tools for the toolkit across Linux, macOS, and Windows platforms, together with the core G4global library.

Members

Show responsibility

  • Ben Morgan(coordinator)

    • CMake setup and support

    • Support for Discourse Forum

  • Gunter Folger(deputy)

    • Support for web and development tools/infrastructure

    • Build/Deployment of binary releases

  • Guilherme Amadio

    • Support for development tools/infrastructure

    • Docker image development

  • Gabriele Cosmo

    • Development and maintenance of global source code category

    • Release Management

    • Software quality control

  • Koichi Murakami

    • Support for Bugzilla problem reporting and JIRA user requirements systems
  • Igor Semeniouk

    • CMake/install support for Windows

Responsible categories

Ongoing Activities

Geant4 Release and Reference Tags

  • User support for installation and usage (Ben Morgan, Gabriele Cosmo)
  • Release Management (Gabriele Cosmo)
  • Release preparation (runtime and compile time checks) (Gabriele Cosmo, Gunter Folger)
  • Build of binary releases (Gunter Folger, Ben Morgan)
  • Contribute and support Geant4 packages in downstream package managers (spack, conda, homebrew, Debian, gentoo) (Ben Morgan, Guilherme Amadio)

Support for Geant4 Tools, Services and Servers

  • Support for collaboration GitLab, GitHub repositories and tools (Ben Morgan, Guilherme Amadio, Gabriele Cosmo)
  • Support for Jenkins and CDash testing system (Guilherme Amadio, Gunter Folger)
  • Support for Coverity static analysis tool (Gabriele Cosmo)
  • Support for public Bugzilla problem tracking tool (Koichi Murakami)
  • Support for physics/collaboration data and management websites (Ben Morgan, Gunter Folger)
  • Support for Discourse forum (Ben Morgan)
  • Support for public LXR and Doxygen source code documentation (Koichi Murakami)
  • Support for collaboration JIRA requirements tracker (Koichi Murakami)
  • Support and maintenance for Geant4Config.cmake, geant4-config build helpers (Ben Morgan, Gabriele Cosmo)

2022 Development Topics

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

Geant4 Tools and Releases

  • Support Geometry Working Group’s integration of VecGeom (1)(2)
  • Review use and integration of performance monitoring tools (in collaboration with Testing and Quality Assurance Working Group)(1)(2)
  • Review locations and documentation for unit and integration tests (1)(2)

Global Category (Gabriele Cosmo, Ben Morgan)

  • Review need for dedicated sequential only build mode, supporting sequential applications fully through Tasking Framework (*)(2)
  • Review mandatory and optional compiler flags needed to build and link to Geant4 (*)(1)

Geant4Py Implementation and Support (Ben Morgan, Koichi Murakami)

  • Replacement of Boost.Python for binding with pybind11 (*)(2)
  • Provision of basic examples and documentation (in coordination with Examples and Documentation Working Groups) (2)

Modularization of Geant4 Libraries (Ben Morgan) (*)(1)(2)

  • Identify libraries/modules for merging or splitting, including optional modules that a user may choose to drop/add to the build
  • Profile modularization scheme to ensure performance is not affected

Data libraries (Ben Morgan, Guilherme Amadio) (*)(2)

  • Discuss potential for development/publication of libraries using GitLab/CVMFS
  • Move to use single environment variable to point to a default location of data libraries (1)
  • 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)

Configuration/Build tools for User Applications (Ben Morgan)(*)(1)(2)

  • Provide pkg-config scripts for use by non-CMake build tools (1)
  • Remove GNUmake system (*)(1)(2)