fair-acc / opendigitizer

Generic Digitizer Framework based on OpenCMW
GNU Lesser General Public License v3.0
6 stars 3 forks source link

OpenDigitizer

OpenDigitizer is an open-source project modernising FAIR’s time- and frequency-domain digitizer infrastructure embracing modern C++20 standards and uses the OpenCMW, GNU Radio (version 4.0), ImGUI and WebAssembly ecosystems.

While initially designed for the FAIR facility, the expressed intent is to be highly adaptable also for use by other research facilities, industry, academia, as well as private users.

Digitizer System Layout

The primary applications of OpenDigitizer include:

Key Components

The key components are:

Building

Follow these instructions in the subdirectories to compile the individual parts of the project. The top-level CMakeList can be used to compile the complete project in one go:

cmake -S . -B build -DEMCMAKE_COMMAND=`which emcmake` && cmake --build build

This will compile the native UI, the WebAssemblyUI (in a subbuild), and the service which includes the wasm artifacts in its assets.

Running

export DIGITIZER_CHECK_CERTIFICATES=0                   # to disable certificate checking, if wanted
export DIGITIZER_HOSTNAME=localhost           # set a custom host
export OPENCMW_REST_CERT_FILE=${BUILD_DIR}/_deps/opencmw-cpp-src/src/client/test/assets/server-cert.pem
export OPENCMW_REST_PRIVATE_KEY_FILE=${BUILD_DIR}/_deps/opencmw-cpp-src/src/client/test/assets/server-key.pem
build/src/service/opendigitizer &              # launches the service
build/src/ui/opendigitizer-ui &                # launches the native digitizer UI
xdg-open https://localhost:8080/web/index.html # launches the webassembly UI
xdg-open https://localhost:8080/flowchart      # launches the html based web ui for the flowgraph property
xdg-open https://localhost:8080/acquisition    # launches the html based web ui for the acquisition property

Sustainable, FAIR, Clean- and Lean- Principles

We are committed to:

  1. Clean & Lean Code (Muda 無駄 & Kaizen 改善 )

    Boost maintainability and adaptability through concise, modular code, eliminating waste and fostering continuous improvement

  2. Test-Driven & Extreme Programming

    Ensure software reliability, accelerate, and keep developing applications fit-for-purpose

  3. Bus Factor & Knowledge Distribution

    Foster collaborative environments and respect for people to enhance team resilience by sharing knowledge and responsibilities

  4. FAIR Principles (see here and here for details)

    Improve the discoverability, accessibility, interoperability, and reusability of digital assets, benefiting the research community and wider public through standardisation

  5. Automation & Efficiency

    Streamline processes and improve productivity with continuous integration/deployment, optimising resource usage and promoting continuous improvement

  6. Scalability & Resource Optimisation

    Ensure software longevity and efficient resource usage by designing with future growth in mind, eliminating waste, and optimizing delivery

  7. Security & Long-Term Planning

    Safeguard data and software by prioritizing security, while fostering sustainable development through long-term planning and continuous improvement

  8. Develop People & Teams

    Capitalise on the inverse of 'Conway's Law' by nurturing skilled engineers, create opportunities for experimentation, inspiring and guiding them towards sound solutions, allowing them to continuously adapt organisational structures that support producing better technical outcomes

References