Tribler is a social community that facilitates filesharing through a peer-to-peer (p2p) network. When the Tribler application program is started it will automatically start searching other users that have Tribler running on their computer. When a connection is established it starts exchanging information. First it exchanges personal information (such as your avatar picture, your friends list, download history, etc.) and information about files that are available in the network. These files can be personal, shared files, but also files that one has received from another person.
The information about the discovered files and persons is available in the Tribler program. By browsing through the files and persons each user can find their preferred files and users. The Tribler program helps you by giving extra information about each item (whether it is a file or a person) and also shows what other users think about it. When you find a person you like you can add him as a friend. An interesting file can be downloaded and will be available in your library. When you press download your computer will make an inventory of which computers actually have this file (or a part of it) and then will download the parts from the different computers.
Features
- Search box with suggestions
- Anti-spam features
- Video-on-demand support
- Fully distributed
What's New
Features
- Tags auto generation by @drew2a in #6718
- Local search for tags by @drew2a in #6617
- Remote search by tags by @drew2a in #6708
- Add docker support by @xoriole in #6715, #6773
Bugfixes
- Fix processing URL-escaped characters by @drew2a in #6738
- Make sorting by name case insensitive by @kozlovsky in #6726
- Remove allow_exit_node_checkbox by @drew2a in #6736
- Customise categories for different pages by @drew2a in #6554
- Add exist_ok=True to mkdir by @drew2a in #6560
- Replace core_traceback by last_core_output by @drew2a in #6567
- Fixes for Tribler logger by @kozlovsky in #6585
- Fix api_key encoding/decoding by @kozlovsky in #6608, #6611, #6613, #6647
- Fix key error on metainfo fetch by @xoriole in #6610
- Fixes for GUI startup sequence by @ichorid in #6596
- Fixes #6665 - Graph can now go higher than TB. New PB Definition added. by @Joybuke in #6666
- Feature/report endpoint errors by @ichorid in #6649
- Set the correct range for Y-axis of the token balance graph by @kozlovsky in #6668
- Update Russian translation by @adem4ik in #6710
- Fix missing XML declaration by @overflw in #6703
- Swapped 'cancel' and 'download' buttons by @devos50 in #6727
- Decrease show threshold for tags by @drew2a in #6742
- Fixes #6747: OSError "The filename, directory name, or volume label syntax is incorrect" in dragEnterEvent by @kozlovsky in #6748
- Fixes #6745: Missed dependency: PopularityComponent requires TorrentCheckerComponent to be active by @kozlovsky in #6746
- Fixes AttributeError on removing downloads by @xoriole in #6909
- Handle race condition when deleting lock file by @kozlovsky in #6776
- Fix Ubuntu 21.04+ startup issue by @xoriole in #6734
- Fixes #6777: suppress PermissionError in on_save_resume_data_alert by @kozlovsky in #6779
- Add null check to confirm_clicked_callback by @drew2a in #6798
- Handle OSError in TriblerWindow.clicked_force_shutdown() by @kozlovsky in #6816
- Handle ValueError "Data is not a bencoded string" in TorrentInfoEndpoint.get_torrent_info() by @kozlovsky in #6814
- Wrap Download.on_metadata_received_alert() with @check_handle decorator by @kozlovsky in #6818
- Fix a crash in the Events tab of the Debug pane by @kozlovsky in #6809
- Escape non-ASCII symbols when writing the tag value to the log by @kozlovsky in #6812
- Handle possible duplicates in random tags generated by tag_torrent by @kozlovsky in #6820
- Add missed arguments to RunTriblerArgsParser by @kozlovsky in #6804
- Replace get by select.limit in BandwidthDatabase.get_latest_transaction by @drew2a in #6821
- Add NPE check to handle_uri by @drew2a in #6829
- Add is_dir() check to add_directory_dialog by @drew2a in #6835
- Add UnicodeEncodeError to the except block by @drew2a in #6836
- Fix download progressbar paint issue by @xoriole in #6910
- Fix an error message that reports milliseconds as seconds by @kozlovsky in #6914
- Handle non-utf8 Tribler Core output in Tribler GUI by @kozlovsky in #6917
Code improvements
- Use ipv8 as an external dependency by @drew2a in #6757
- Add maybe_component by @drew2a in #6557
- Refactor/remove obsolete upgrades by @ichorid in #6558
- Run Upgrader in a GUI thread by @ichorid in #6559
- Remove unused methods by @devos50 in #6605
- Make notifier more generic by @drew2a in #6702
- Move discovery_booster to ipv8 component by @drew2a in #6719
- Move EVA protocol to ipv8 component by @drew2a in #6723
- Add session context manager by @drew2a in #6724
- Remove common package by @drew2a in #6755
- Statically typed notifier by @kozlovsky in #6728
- Enable origin tracking for coroutine objects by @kozlovsky in #6762
- Refactoring the folders structure by @drew2a in #6803
- Remove popularity community experiments by @drew2a in #6805
- Rename QtSingleApplication.activation_window() to tribler_window by @drew2a in #6830
- Remove pre-commit by @drew2a in #6837
- Refactor rest utils by @drew2a in #6838
- Fix build for release 7.12 by @kozlovsky in #6896
- Update Debian build by @xoriole in #6901
- Updated IPv8 pointer by @qstokkink in #6669
- Update issue templates by @drew2a in #6580
- [Snyk] Security upgrade pillow from 8.4.0 to 9.0.0 by @snyk-bot in #6705
- [Snyk] Security upgrade pillow from 9.0.0 to 9.0.1 by @snyk-bot in #6765
Documentation fixes
- Update development on linux by @drew2a in #6536
- Fixes #6624: specify the exact version of mistune library in doc/requirements.txt by @kozlovsky in #6625
- Specify exact version of MarkupSafe in doc requirements by @kozlovsky in #6781
- Add Faker and sentry as common dependency by @xoriole in #6656
- Added v7.11 download badge to README by @devos50 in #6768
- Fix broken link by @drew2a in #6796
- Add python 3.9 and python 3.9 badges by @drew2a in #6797
Test improvements
- Make --core and --gui-test-mode separate flags with all combinations possible by @kozlovsky in #6602
- Using SelectorEventLoop during tests by @devos50 in #6527
- Apply MockIPv8 key injection by @drew2a in #6544
- Added small delay after mouse click in GUI test by @devos50 in #6547
- Make CoreExceptionHandler scope-dependent by @drew2a in #6543
- Change mock type for encode_message by @drew2a in #6540
- Use in-memory SQLite DB for Tags in GUI test mode by @ichorid in #6574
- Fix and speedup test_drop_silent_peers by @ichorid in #6578
- Simplify GUI-Core startup sequence by @ichorid in #6573
- Improve tests for patch_import.py by @drew2a in #6588
- Replace random char generation by fake words by @drew2a in #6592
- Make sure generated tags have a valid length by @devos50 in #6615
- Remove spam in pytest output by @kozlovsky in #6620
- Fix gui tests stability by @kozlovsky in #6619
- Fix for #6603 by @drew2a in #6629
- Fixed channel subscribe GUI test by @devos50 in #6643
- Remove SOCKS component from GUI test mode requirements by @ichorid in #6651
- Fix #6653 Sentry test failures by @drew2a in #6694
- Add faker and sentry_sdk as common modules to mock during doc build by @xoriole in #6675
- Fix unstable test_channels_peers_mapping_drop_excess_peers by @kozlovsky in #6731
- Fix run_bandwidth_crawler script by @kozlovsky in #6730
- Fix tunnel experiments by @kozlovsky in #6732
- Fix unstable tests by @kozlovsky in #6763
- Add "no_parallel" pytest's mark by @drew2a in #6799
- Add no_parallel to pytest.ini by @drew2a in #6800
- For test run with '--no-parallel' argument, skip all "normal" tests by @drew2a in #6824
- Fix Tribler startup/shutdown and GUI tests stability by @kozlovsky in #6828
- Refactor add_fake_torrents_channels fixture by @drew2a in #6827
New Contributors
- @Joybuke made their first contribution in #6666
- @adem4ik made their first contribution in #6710