Contributions are welcome! Please open an issue first (or add a
comment to an existing issue) if you plan to work on any code or add a
new feature. This way, duplicate work is prevented and we can discuss
your ideas and design first.

More information and a description of the development environment can be
found in CONTRIBUTING.md.
A document describing the design of restic and the data structures stored on the
back end is contained in Design.

Important: If you discover something that you believe to be a
possible critical security problem, please do not open a GitHub issue
but send an email directly to alexander@bumpern.de. If possible, please
encrypt your email using the following PGP key
(0x91A6868BD3F7A907):

Backward compatibility for backups is important so that our users are
always able to restore saved data. Therefore restic follows Semantic
Versioning to clearly define which versions are
compatible. The repository and data structures contained therein are
considered the “Public API” in the sense of Semantic Versioning. This
goes for all released versions of restic, this may not be the case for
the master branch.

We guarantee backward compatibility of all repositories within one major
version; as long as we do not increment the major version, data can be
read and restored. We strive to be fully backward compatible to all
prior versions.

The restic documentation is built with Sphinx,
therefore building it locally requires a recent Python version and requirements listed in doc/requirements.txt.
This example will guide you through the process using virtualenv: