LIBRE is under active development, and contributions are welcome.

If you have a feature request, suggestion, or bug reports, please open a new issue on the GitHub issue tracker. To submit patches, please send a pull request on GitHub. Contributors are credited accordingly on the Authors section.

Source Control

LIBRE source is controlled with Git

The project is publicly accessible, hosted and can be cloned from GitHub using:

$ git clone

Git branch structure

LIBRE follows the model layout by Vincent Driessen in his Successful Git Branching Model blog post. Git-flow is a great tool for managing the repository in this way.

The “next release” branch, likely unstable.
Current production release (1.2).
Unfinished/ummerged feature.

Each release is tagged and available for download on the Downloads section of the LIBRE repository on GitHub

When submitting patches, please place your feature/change in its own branch prior to opening a pull request on GitHub. To familiarize yourself with the technical details of the project read the internals section.


LIBRE follows the Semantic Versioning specification.


Given a version number MAJOR.MINOR.PATCH, increment the:

MAJOR version when you make incompatible API changes, MINOR version when you add functionality in a backwards-compatible manner, and PATCH version when you make backwards-compatible bug fixes. Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.

How To Contribute

LIBRE is always open for suggestions and contributions by developers. Here are a few tips to get you started.


Thank you for considering to contribute to LIBRE!


LIBRE makes extensive use of Django’s new logging capabilities. To enable debug logging for the data_drivers app for example add the following lines to your file:

    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(name)s %(process)d %(thread)d %(message)s'
        'intermediate': {
            'format': '%(name)s <%(process)d> [%(levelname)s] "%(funcName)s() %(message)s"'
        'simple': {
            'format': '%(levelname)s %(message)s'
    'handlers': {
            'formatter': 'intermediate'
    'loggers': {
        'data_drivers': {
            'propagate': True,

Likewise, to see the debug output of the origins app, just add the following inside the loggers block:

'origins': {
    'propagate': True,