Decentralized Recommendation

Tribler forms a semantic P2P overlay to identify related content, facilitate search, and recommend content. Related: Search, Search and spam prevention, BuddyCast3, BuddyCast4, Similarity Function

Tribler supports recommendation of content to users by implementing a decentralized recommendation protocol, Buddycast3. Through its downloads the user builds up a download history of files. By exchanging these download histories with others the user builds a collection of a few hundred or more of such download histories. Tribler's recommender component uses this collection to find peers with high similarity to the user based on their download taste. We call such similar peers taste buddies. The recommender then recommends the files that a user's taste buddies has already seen but the user has not. In other words, Buddycast provides decentralized, user-based collaborative filtering. General overview of recommendation.


The Buddycast algorithm is based on an epidemic protocol and works as follows. Each peer maintains two lists: (1) its top-N most similar peers along with their current download histories, and (2) a list of random peers it learned about but does not have download histories of. Periodically, a peer connects to either (a) one of its taste buddies to exchange social networks and current download histories (exploitation), or (b) to a new peer, randomly chosen, to exchange this information (exploration). By using both exploitation and exploration, we keep track of what happens at our most similar peers and at the same time ensure that we will find new similar peers if they emerge.

Extensions to Buddycast have been made for moderation. Full details are given in a technical report on moderation, voting and vote fraud prevention (PDF file).


Within any P2P system there is tension between efficiency of the system and privacy. Within Tribler IP addresses are not shown and every user is referred to by a nickname. However, the download history of each nickname is publicly visible for exploration and discovery. To preserve privacy, the user interface and !Buddycast support the erase from profile functionality. The new !Buddycast4 version will :

  • Spread a counter with total amount of downloads per nickname
  • Transmit a maximum of 50 Bittorrent downloads from your download history
  • When removing a file from your download history, Buddycast will erase it from your profile
  • Use for efficiency reasons a timestamp when your profile was last changed