😊 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). 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
black
and 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 test
or you can usepytest
. - Try to create new unit tests if appropriated. Use Pythons regular
unittest
instead 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)rsync
cron-daemon
openssh-client
python3-keyring
python3-dbus
python3-packaging
- Recommended
sshfs
encfs
-
Runtime dependencies for the GUI
x11-utils
python3-pyqt5
python3-dbus.mainloop.pyqt5
libnotify-bin
policykit-1
qttranslations5-l10n
qtwayland5
(if Wayland is used as display server instead of X11)- Recommended
- For SSH key storage one of these packages
python3-secretstorage
python3-keyring-kwallet
python3-gnomekeyring
- For diff-like comparing files between backup snapshots one of these
packages
kompare
- or
meld
- Optional: Default icons
- The
oxygen
icons 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-essential
gzip
gettext
python3-pyfakefs
pylint
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.sh
in the repositories root directory. - Two
deb
files are built and places in the repositories parent directory. - Install the packages
sudo dpkg -i ../backintime-common-<version>.deb
sudo 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.
Sept 2023