Motivation
Software design for long-term sustainability and maintainability
Science experiments are often build and operated over periods of several decades. During this time, computing hardware is regularly replaced every few years. Each new piece of hardware brings its lot of new features, deprecated usages and requires to adapt software to use it, let alone use it optimally. In fields such as data acquisition or high-performance computing which are by nature close to the hardware, the cost of adapting software to new hardware can become unbearable if the software is not designed appropriately.
The phoenix libraries tackle this challenge by implementing an ecosystem of libraries: each functionality is expressed as an abstract API and the actual interaction with the hardware (or any underlying technology) are encapsulated into "backends" which can be easily replaced or exchanged as hardware evolves. The purpose of this modular approach is to improve maintainability, extensibility and reusability of research software.
- provide modular and extensible solutions to data acquisition and analysis software
- provide general purpose utilities for research programs
- enable multi-language, multi-platform yet consistent software and development environment
- improve software quality with extensive usage of continuous integration for testing, documentation, packaging and deployment
Open Source and free-licensed
Phoenix is completely open-source and free-licensed: anyone is welcomed to use and contribute!
The Phoenix libraries are primarily developed by engineers and researchers at LAPP for their own and other developers usage. It is and will be published under free licenses and is currently hosted by the IN2P3 gitlab. Anyone is welcome to use it or contribute, either to the main repositories managed by LAPP or as a extension under your control.
Phoenix intends to be a generic base layer for research software, providing reliable and modular features that can be build upon by research experiments. For instance the CTAO real-time analysis will use the testing (mocks), serialization and data exchange features to implement its solution. The LAPP team is committed to phoenix long-term support to enable its usage by long-running experiments.