Skip to content
Kyle Robbertze edited this page Jul 27, 2022 · 12 revisions

Welcome to the LibreTime wiki! This is deprecated and is being moved to the website. Any new information should be added there by opening a PR against this repo.

Git

The LibreTime code is maintained using git. LibreTime uses Github flow with topic branches. This wiki describes how to use git rebase and git commit --amend to ensure that all topic branches are kept up to date with master and have a clean commit history.

Codebase

LibreTime is a complicated platform and uses a variety of technologies and languages. Most of the interface and business logic is implemented in PHP using the zf1s framework. The back-end audio processing is written in Python 3 and liquidsoap is used for stream and play-out management. Version 2 of the API is also written in Python using the Django framework. The documentation is built using Jekyll. This wiki includes a technical overview of LibreTime under the hood. It also tracks the supported distributions and software versions.

Updating the PHP dependencies is tricky because LibreTime supports PHP >=5.4. This is because CentOS 7 ships with PHP 5.4. When updating the PHP dependencies, developers must follow this guide.

This wiki also takes developers through proposing a change to the code base here.

Testing Changes

LibreTime uses pre-commit for managing linting and code-style checks. This is run on GitHub actions on every pull request and can be set up locally as described here. Test instances of LibreTime can be easily spun up using Vagrant. See the setup guide to get it set up and working.

There are unit tests for some of the PHP and Python code and these are run in GitHub Actions on every pull request. Xdebug is also useful when working on the PHP code and can be enabled by following this guide.

Clone this wiki locally