8abe8320d2
Motiviation: * Reproducing issues in CI is currently difficult * Predicting issues in CI is currently difficult if you are not on ubuntu 18.04 * Reproducing issues submitted from other distros is currently done by creating a VM of that distro and building qtox for it locally * Documentation for how to build on different distros is out of date * Issues on non-ubuntu distributions are not caught by CI * Cross compiling for windows locally is not trivial * Iterating when working with custom build scripts is slow, scripts don't necessarily support re-running without re-starting the docker container and re-building qtox again * Updating dependencies is a pain Changes: * docker-compose file has been added to the root of our repo. After `docker compose run --rm ubuntu` (or other supported distros), you are ready to compile and run qtox * Dependencies are owned by dependency install scripts in buildscripts/. This allows us to use the same exact dependencies in our OSX/windows/linux scripts * New docker images have been added for a variety of distributions. These are now run in CI in a variety of configurations * Docker images are cached in CI so rebuild time for the majority of jobs is quite quick * Build scripts have been trimmed to leverage state of docker containers. * Windows build script no longer installs anything, dependencies are now managed by the windows_builder docker images * Build scripts should now be easily re-runnable. Usage is now `docker compose run --rm <image>` and then run the scripts * All artifacts are now uploaded to github after build, this means we can take an appimage/flatpak/exe/dmg for any given PR and try it out without having to build it ourselves Notes: * Docker image size is quite important. We have a maximum of 5GB cache space on github actions. The majority of the linux distro docker images cache at ~300-400MB, which gives us room to test ~6 distros after accounting for the sizes of flatpak/windows docker images * Docker layer ordering is relatively intentional. Approximate order should be that large dependencies that change infrequently should be farther up. This lowers the amount of rebuilding we have to do when dependencies are updated * download_xxx.sh scripts are the cleanest way I could find to implement a shared dependency map between osx scripts and docker containers. Although it would be nice to have a single dependency mapping file, splitting it into individual scripts allows us to only rebuild some docker layers when dependencies are updated. * Github actions are split between docker image building and docker image use. This allows us to re-use the same docker images for multiple jobs, but only build it once * Unfortunately I could not find a way to de-duplicate the stitching between jobs, so we have a lot of copy pasta in that area |
||
---|---|---|
.circleci | ||
.github | ||
.travis | ||
appimage | ||
audio | ||
buildscripts | ||
cmake | ||
doc | ||
flatpak | ||
img | ||
osx | ||
res | ||
security/apparmor | ||
smileys | ||
src | ||
test | ||
themes | ||
tools | ||
translations | ||
util | ||
windows | ||
.clang-format | ||
.clog.toml | ||
.gitattributes | ||
.gitignore | ||
.travis.yml | ||
.weblate | ||
bootstrap-osx.sh | ||
bootstrap.sh | ||
CHANGELOG.md | ||
CMakeLists.txt | ||
CONTRIBUTING.md | ||
docker-compose.yml | ||
doxygen.conf | ||
INSTALL.fa.md | ||
INSTALL.md | ||
io.github.qtox.qTox.desktop | ||
LICENSE | ||
MAINTAINING.md | ||
merge-pr.sh | ||
OSX-Migrater.sh | ||
README.md | ||
res.qrc | ||
shell.nix | ||
simple_make.sh | ||
test-pr.sh | ||
verify-commit-messages.sh |
qTox is a chat, voice, video, and file transfer instant messaging client using the encrypted peer-to-peer Tox protocol.
User Manual | Install/Build | Roadmap | Report bugs | Jenkins builds | Mailing list | IRC: #qtox@libera.chat
Windows | Linux | OS X | FreeBSD |
---|---|---|---|
64 bit release | Arch, Debian, Fedora, Gentoo, openSUSE, Ubuntu | Latest release | Package & Port |
32 bit release | AppImage, Flatpak | Building instructions | |
64 bit, 32 bit nightly | From Source, Flatpak nightly, AppImage nightly | Latest nightly |
Bold options are recommended.
Builds other than installer/packages don't receive updates automatically, so make sure you get back to this site and regularly download the latest version of qTox.
Help us
If you're wondering how could you help, fear not, there are plenty of ways 😄
Some of them are:
- Spread the good word about qTox to make it more popular 😄
- Have an opinion? Make sure to voice it in the issues that need it 😉
- Fixing easy issues or issues that need help. Make sure to read Contributing first though 😉
- Testing and reporting bugs
- Translating, it's easy
- Reviewing and testing pull requests – you don't need to be able to code to do that 😉
- Take a task from our Roadmap below
Roadmap
Currently qTox is under a feature freeze to clean up our codebase and tools. During this time we want to prepare qTox for upcoming new features of toxcore.
The next steps are:
- move all toxcore abstractions into their own subproject
- write basic tests for this Core
- format the code base
- rework our TravisCI setup for faster PR checks
- rethink our Issue tracker
The current state is tracked in the Code cleanup project.
Screenshots
Note: The screenshots may not always be up to date, but they should give a good idea of the general look and features.
Features
- One to one chat with friends
- Group chats
- File transfers, with previewing of images
- Audio calls, including group calls
- Video calls
- ToxMe and Tox URI support
- Translations in over 30 languages
- Avatars
- Faux offline messages
- History
- Screenshots
- Emoticons
- Auto-updates on Windows and packages on Linux
- And many more options!
Organizational stuff
Happens in both IRC channel #qtox@libera.chat and on qTox-dev mailing list. If you are interested in participating, join the channel and subscribe to the mailing list.
There are IRC logs available.
GPG fingerprints
List of GPG fingerprints used by qTox developers to sign commits, merges, tags, and possibly other stuff.
Active qTox maintainers:
7EB3 39FE 8817 47E7 01B7 D472 EBE3 6E66 A842 9B99 - Anthony Bilinski
3103 9166 FA90 2CA5 0D05 D608 5AF9 F2E2 9107 C727 – Diadlo
CA92 21C5 389B 7C50 AA5F 7793 52A5 0775 BE13 DF17 - noavarice
DA26 2CC9 3C0E 1E52 5AD2 1C85 9677 5D45 4B8E BF44 – sudden6
141C 880E 8BA2 5B19 8D0F 850F 7C13 2143 C1A3 A7D4 – tox-user
2880 C860 D95C 909D 3DA4 5C68 7E08 6DD6 6126 3264 – tux3
Past qTox maintainers:
C7A2 552D 0B25 0F98 3827 742C 1332 03A3 AC39 9151 – initramfs
BA78 83E2 2F9D 3594 5BA3 3760 5313 7C30 33F0 9008 – zetok
F365 8D0A 04A5 76A4 1072 FC0D 296F 0B76 4741 106C – agilob
1157 616B BD86 0C53 9926 F813 9591 A163 FF9B E04C – antis81
1D29 8BC7 25B7 BE82 65BA EAB9 3DB8 E053 15C2 20AA – Dubslow
Windows updates, managed by tux3
:
AED3 1134 9C23 A123 E5C4 AA4B 139C A045 3DA2 D773