Repliversion Software Architecture

Tip

If you are an end-user (as opposed to a software developer…) this section can be skipped.

This is a brief summary of the points of design interest for repliversion. Repliversion was written with python, and where complex or frequently time-intensive tasks were done the python was compiled with cython and a binary executable used at runtime. Initially the repliversion service module (repliversioner.py), a utility for generating fading popup notfications (dolphin-notify.py), and utilities to upload to git repositories (repliversion-gitlab.py and repliversion-github.py) are cython compiled. All other python modules are run as python, in order to afford the best possible runtime error reporting, and since they are not as time-sensitive.

Software Paths

All the software for repliversion is confined to “/usr/local/repliversion”. Global configuration files are stored in “/etc/repliversion”. User scripts/binaries are defined as symbolic links in “/usr/local/bin”. Since the git utilities are privileged, symbolic links for them are to be found in “/usr/local/sbin”.

Socket files used for interprocess communication are placed in “/var/run/repliversion” (“/var/run” is a memory-mapped folder, so this is performant and will reduce disk drive wear…)

The systemd service file for repliversion can be found at “/etc/systemd/system/repliversion.service”. When repliversion is installed, this service will be automatically enabled and started. A log file of messages generated by the repliversion service can be found in “/var/log/repliversion.log”. This is a tab-delimited text file that can be reviewed using a spreadsheet application such as LibreOffice Calc.

_images/log.png

Reviewing repliversion.log as a spreadsheet.

Provided there are few errors, the amount of messages generated by the repliversion service are not voluminous -though it wouldn’t hurt to configure a logrotate file for it (and that is on the TO DO list…)