Ganga is an easy-to-use frontend for job definition and management, implemented in Python. It has been developed to meet the needs of the ATLAS and LHCb for a Grid user interface, and includes built-in support for configuring and running applications based on the Gaudi / Athena framework common to the two experiments. Ganga allows trivial switching between testing on a local batch system and large-scale processing on Grid resources.
The main paper reference is Ganga: a tool for computational-task management and easy access to Grid resources; Computer Physics Communications, Volume 180, Issue 11, (2009) ;arXiv:0902.2685 .
A job in Ganga is constructed from a set of building blocks. All jobs must specify the software to be run (application) and the processing system (backend) to be used. Many jobs will specify an input dataset to be read and/or an output dataset to be produced. Optionally, a job may also define functions (splitters and mergers) for dividing a job into subjobs that can be processed in parallel, and for combining the resultant outputs. Ganga provides a framework for handling different types of application, backend, dataset, splitter and merger, implemented as plugin classes. Each of these has its own schema, which places in evidence the configurable properties.
As it is based on a plugin system, Ganga is readily extended and customised to meet the needs of different user communities. Activities outside of ATLAS and LHCb where Ganga is successfully used include Geant4 regression tests and image classification for web-based searches.

