As development is currently taking place mainly under Linux, specifically Debian-based Linux distributions such as Debian and Ubuntu, all instructions are based on the assumption that one of these systems is used.

On Windows, it is also possible to use one of these systems via the Windows Subsystem for Linux (WSL). Please see the chapter explaining how to develop under WSL for some WSL-specific considerations.

This section describes how to install Kadi4Mat in a development environment. There are currently three ways to perform the installation: manual installation, installation via Docker containers and a hybrid installation combining both approaches. Manual installation, as well as the hybrid approach, include quite a few more manual steps. However, these approaches also offer much more flexibility in terms of how the development environment is set up and are therefore the recommended installation methods at the moment.

Regardless of the method of installation, the first step is always to obtain the source code of Kadi4Mat using git, which might have to be installed first using:

sudo apt install git

Before actually obtaining the code, it is recommended to create a fork of the main repository first. Afterwards, the code can be cloned into a local directory via SSH (recommended) or HTTPS, the latter being shown in the following command. Note that the <username> placeholder needs to be substituted with the correct username/namespace that the new fork resides in:

git clone<username>/kadi.git ${HOME}/workspace/kadi

This will copy the code into the workspace/kadi directory in the current user’s home directory. This directory can of course be changed freely, however, the rest of this documentation assumes that the source code resides there and that all commands are run within this directory:

cd ${HOME}/workspace/kadi

To be able to update the code from the central repository, it should be added as an additional remote, often called upstream (note that the default remote after cloning, pointing to the new fork, is always called origin):

git remote add upstream