😊 Thanks for taking the time to contribute!
The maintenance team will welcome all types of contributions. No contribution will be rejected just because it doesn't fit to our quality standards, guidelines or rules. Every contribution is reviewed and if needed will be improved together with the maintainers.
Please always make a new branch when preparing a Pull Request ("PR") or a patch.
Baseline that feature or bug fix branch on dev (the latest development
state).
$ git checkout dev
$ git checkout --branch mynewfeature
$ [do your coding]
$ git commit -am 'my message'
$ git push
When open a pull request please make sure that it targets
bit-team:dev.
Please take the following best practices into account if possible (to reduce the work load of the maintainers and to increase the chance that your pull request is accepted):
- Follow PEP 8 as a minimal Style Guide for Python Code
- Follow Google Style Guide for docstrings (see our own HOWTO about doc generation).
- Be careful when using automatic formatters like
blackand please mention the use of it when opening a pull request. - Run unit tests before you open a Pull Request. You can run them via
make-system withcd common && ./configure && make && make testor you can usepytest. See section Build and install viamakesystem for further details. - Try to create new unit tests if appropriated. Use Pythons regular
unittestinstead ofpytest. If you know the difference please try follow the Classical (aka Detroit) school instead of London (aka mockist) school.
- Mailing list bit-dev for development related topics
- Source code documentation for developers
- Translations are done on a separate platform
- HowTo's and maintenance documents
This section describes how to build and install Back In Time in preparation
of your own contributions. It is assumed that you git clone this repository
first.
The following dependencies are based on Ubuntu. Please open an Issue if something is missing. If you use another GNU/Linux distribution, please install the corresponding packages. Be aware that some of the named packages can be replaced with PyPi packages.
-
Runtime dependencies for the CLI
python3(>= 3.8)rsynccron-daemonopenssh-clientpython3-keyringpython3-dbuspython3-packaging- Recommended
sshfsencfs
-
Runtime dependencies for the GUI
x11-utilspython3-pyqt6python3-dbus.mainloop.pyqt6libnotify-binpolicykit-1qttranslations6-l10nqtwayland6(if Wayland is used as display server instead of X11)- Recommended
- For SSH key storage one of these packages
python3-secretstoragepython3-keyring-kwalletpython3-gnomekeyring
- For diff-like comparing files between backup snapshots one of these
packages
kompare- or
meld
- Optional: Default icons
- The
oxygenicons should be offered as optional dependency since they are used as fallback in case of missing icons (mainly app and system-tray icons)
- The
- For SSH key storage one of these packages
-
Build and testing dependencies
- All runtime dependencies for CLI and GUI including the recommended
build-essentialgzipgettextpython3-pyfakefspylint
Remember that Back In Time does consist of two packages, which must be built and installed separately accordingly.
-
Command line tool
cd common./configure && make- Run unit tests via
make test sudo make install
-
Qt GUI
cd qt./configure && make- Run unit tests via
make test sudo make install
You can use optional arguments to ./configure for creating a Makefile.
See common/configure --help and qt/configure --help for details.
- Run
./makedeb.shin the repositories root directory. - Two
debfiles are built and places in the repositories parent directory. - Install the packages
sudo dpkg -i ../backintime-common-<version>.debsudo dpkg -i ../backintime-qt-<version>.deb
- https://www.contribution-guide.org
- https://mozillascience.github.io/working-open-workshop/contributing
Keep in mind as you contribute, that code, docs and other material submitted to the project are considered licensed under the same terms (see LICENSE) as the rest of the work.
March 2024