# Project If you want to create a fork and use an external account (Github, Google) drop us a message at the Gajim support [group chat](xmpp:gajim@conference.gajim.org?join) so we can give you the necessary rights ## Versioning ┌────── Major (Will not change unless we switch GTK version) │ ┌───── Minor (Changes when new features are introduced │ │ ┌──── Micro (Used for hotfixes and small changes) │ │ │ ┌─── Only used while developing │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ 1.3.3-dev1 ## Branches Currently there is only one stable/development branch - master. The master branch must always be in a releasable state. Development for bigger changes need to happen in feature branches or forks. Previously the project maintained multiple versions of Gajim in different stable branches, but from Gajim 1.4.0 on this approach was changed to lower the maintenance burden and release faster. # Commit Messages If you are not familiar with Git please read the [HowTo](https://dev.gajim.org/gajim/gajim/wikis/development/howtogit) A good article regarding [good commit messages](https://chris.beams.io/posts/git-commit/) Every commit message must be prefixed with one of the following tags: Changelog relevant - feat (a new feature was added) - fix (something was fixed) - perf (performance related changes) - imprv (improvements) - change (existing functionality was changed) Prefixes for development - new (new code, but the end user will not notice) - ci (ci related changes) - cq (code quality changes e.g. formatting, typing, codestyle) - cfix (code fixes which should not show up in the changelog) - refactor (code was changed, but the end user will not notice) - chore (reoccuring tasks which need to be done) - release (only used for release commits) - revert (used when a commit needs to be reverted) - other Further the first letter after the tag must be upper case Example: `feat: New Button which does something` # Use pre-commit Execute the following inside the repository dir $ pip install pre-commit $ pre-commit install Now pre-commit will run various checks before code can be committed. To update to the newest versions $ pre-commit autoupdate # Man Pages Man pages are written in markdown and converted with pandoc While developing this command is useful to preview the manpage $ pandoc gajim.1.md -s -t man | /usr/bin/man -l - To convert the markdown $ pandoc gajim.1.md -s -t man -o gajim.1