Skip to content
Snippets Groups Projects
Tobias Triffterer's avatar
Tobias Triffterer authored
This is a remnant from the protocol and login development that is no
longer needed.
48a17956

⚠ 🚧 Under Construction 🚧 ⚠

The project is in its early stages right now, so please come back later...

Fp311Online Client Application

About

Client application of the project to simulate the setup of the Advanced Lab Course for Physics Students on the Rutherford Experiment (F-Praktikum Physik Versuch 311 – Rutherford-Experiment) at the Faculty of Physics and Astronomy at Ruhr-Universität Bochum.

Using this software, students can still complete this lab course despite of the Covid-19 pandemic which makes working on the physical setup at the university impossible.

The client and server part of Fp311Online share a lot of code, which is thus been put into a common library that is integrated as a Git submodule and CMake subdirectory into this application.
It's Git repository can be found here: https://gitlab.ep1.rub.de/fp311online/libfp311online

License

This application is free software, it is licensed under the terms and conditions of the GNU General Public License (GPL) as published by the Free Software Foundation, either version 3 of the GPL or — at your option — any later version.

Build Requirements

  • GNU C and C++ Compiler, version 8 or higher
    • Alternatively, Clang version 7 or higher should work, but has not been tested
  • GNU Toolchain or compatible (ld, make, etc.)
  • CMake, version 3.13 or higher
  • Qt 5.12 or higher, including header files and tools
  • ROOT version 6.16 or higher, if host ROOT installation is used
  • Dependencies for ROOT, if the ROOT submodule is built (see https://root.cern/install/dependencies/ for details):
    • libX11 and development headers
    • libxpm and development headers
    • libxft and development headers
    • libxext and development headers
    • libpng and development headers
    • libjpeg and development headers
    • Python, version 2.7 or higher
    • libssl and development headers

Build Instructions

To compile the application, first clone the Git repository:

git clone --recurse-submodules https://gitlab.ep1.rub.de/fp311online/fp311online-client.git

Create a build directory and enter it:

mkdir build-fp311online-client
cd build-fp311online-client

If you have a ROOT installation on your computer that can be discovered by CMake, you can use it. To do this, execute:

cmake -DUSE_HOST_ROOT_INSTALL=ON -DCMAKE_CXX_STANDARD={14|17|20|...} ../path/to/fp311online-client

Fp311Online uses C++17 by default, but you may have to change it to the C++ standard your ROOT installation was compiled with, otherwise you may get compilation errors.

The libfp311online repository contains a modified ROOT version as a submodule. To compile this version of ROOT and libfp311online based on it, execute:

cmake -DUSE_HOST_ROOT_INSTALL=OFF ../path/to/fp311online-client

In both cases, after CMake has sucessfully prepared the build system, run

make

to do the actual compilation. Please be advised that compiling ROOT from scratch can take a lot of time depending on the speed of the machine. You can add the parameter -jN with N being a natural number to run N compilation steps in parallel.

Instructions to Create a Flatpak Bundle

Flatpak is the main distribution path of this application as it is distribution-agnostic.

To create a Flatpak bundle, a working installation of flatpak and flatpak-builder is required.

Inside the Flatpak ecosystem, version 5.15 of the KDE runtime environment org.kde.Platform and the KDE software development kit (SDK) org.kde.Sdk is required. Please note that Fp311Online does not depend on Plasma, the desktop environment made by KDE, but the KDE Project maintains the SDK for building applications based on Qt with Flatpak.

To download and install these prerequisites, execute:

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install org.kde.Platform//5.15
flatpak install org.kde.Sdk//5.15

Depending on your system, it may be necessary to prefix each command with sudo to let it run with administrator/root rights.

The build process within Flatpak is controlled by a Flatpak manifest. The Fp311Online Resources Repository contains the manifest for the client application that has to be downloaded:
https://gitlab.ep1.rub.de/fp311online/resources/-/blob/master/flatpak/fp311online-client.flatpak.yml

To initiate the build process, create a directory where the files created while building can be stored. (Any content of this directory will be wiped, so please be careful.)

The command to run the compilation inside Flatpak is:

flatpak-builder --force-clean $builddir path/to/fp311online-client.flatpak.yml

This command will take some time, as it compiles ROOT from source. The hidden directory .flatpak-builder is created during the process, it contains a Flatpak repository from which the final bundle can be exported:

flatpak build-bundle .flatpak-builder/cache fp311online-client.flatpak de.ruhr_uni_bochum.ep1.tobias.fp311online.client

After this command has finished, the file fp311online-client.flatpak can be distributed.

Open Source Frameworks used by this Application

This project uses code from other open source projects. Under their respective licenses, you have the right to access their source code and distribute unmodified as well as modified versions of them.

Qt

Qt is a cross-platform C++ framework developed by “The Qt Company” to build graphical applications. It is used in this software to create the user interface and to handle the client/server communication via the websockets protocol.

This application and the common library use the modules “Core“, “Gui“, “Widgets“, “Network”, and “WebSockets“ from Qt. All of them are licensend under the GNU Lesser General Public License (LGPL), version 3.

If you use the Flatpak build of this application, Qt is not shipped with the Flatpak bundle, but is part of the Flatpak runtime environment org.kde.Platform, see the Flatpak webpage for details. The source code can be accessed on the GitLab installation of the KDE Project:

If you compiled this application from source, the Qt libraries and header files installed on your computer are used. Please consult your distributor for access to the source code of these libraries.

ROOT

ROOT is a data analysis framework developed by CERN. It is used in Fp311Online to generate the events on the server and display and fit the histogram on the client.

ROOT is licensed under the terms of the GNU Lesser General Public License (LGPL), version 2.1 or later.

This project has a modified version of ROOT to make it run (better) inside the Flatpak sandbox. The source code of this modified version is available on the GitLab of Institut für Experimentalphysik I:
https://gitlab.ep1.rub.de/fp311online/cern-root

The source code of the original ROOT project can be found on GitHub: https://github.com/root-project/root

When run outside of the Flatpak sandbox, this application can also use the unmodified version of ROOT. Inside the sanbox, unmodified versions should work, but the startup performance may be reduced.

Contact

Dr. Tobias Triffterer

Ruhr-Universität Bochum
Institut für Experimentalphysik I
NB 2/126 – Fach-Nr. 125
Universitätsstraße 150
44801 Bochum
Germany

E-Mail: tobias@ep1.ruhr-uni-bochum.de
S/MIME Certificate (Fingerprint: DF35 4C01 A72C E689 2D95 F52D 8426 5187 BE21 2DEE)
GnuPG/OpenPGP Key (Fingerprint: 32FC 7266 0504 437B BF8A AFB6 7B74 849A 85A6 0E50)

Matrix-ID: @trifftmp:ruhr-uni-bochum.de

This project has a public Matrix room: #physikfp311online:ruhr-uni-bochum.de