{"action":"created","issue":{"url":"https://api.github.com/repos/Tribler/tribler/issues/3649","repository_url":"https://api.github.com/repos/Tribler/tribler","labels_url":"https://api.github.com/repos/Tribler/tribler/issues/3649/labels{/name}","comments_url":"https://api.github.com/repos/Tribler/tribler/issues/3649/comments","events_url":"https://api.github.com/repos/Tribler/tribler/issues/3649/events","html_url":"https://github.com/Tribler/tribler/issues/3649","id":327030048,"number":3649,"title":"Content popularity","user":{"login":"xoriole","id":1442867,"avatar_url":"https://avatars2.githubusercontent.com/u/1442867?v=4","gravatar_id":"","url":"https://api.github.com/users/xoriole","html_url":"https://github.com/xoriole","followers_url":"https://api.github.com/users/xoriole/followers","following_url":"https://api.github.com/users/xoriole/following{/other_user}","gists_url":"https://api.github.com/users/xoriole/gists{/gist_id}","starred_url":"https://api.github.com/users/xoriole/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xoriole/subscriptions","organizations_url":"https://api.github.com/users/xoriole/orgs","repos_url":"https://api.github.com/users/xoriole/repos","events_url":"https://api.github.com/users/xoriole/events{/privacy}","received_events_url":"https://api.github.com/users/xoriole/received_events","type":"User","site_admin":false},"labels":[{"id":29695600,"url":"https://api.github.com/repos/Tribler/tribler/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"state":"open","locked":false,"assignee":{"login":"xoriole","id":1442867,"avatar_url":"https://avatars2.githubusercontent.com/u/1442867?v=4","gravatar_id":"","url":"https://api.github.com/users/xoriole","html_url":"https://github.com/xoriole","followers_url":"https://api.github.com/users/xoriole/followers","following_url":"https://api.github.com/users/xoriole/following{/other_user}","gists_url":"https://api.github.com/users/xoriole/gists{/gist_id}","starred_url":"https://api.github.com/users/xoriole/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xoriole/subscriptions","organizations_url":"https://api.github.com/users/xoriole/orgs","repos_url":"https://api.github.com/users/xoriole/repos","events_url":"https://api.github.com/users/xoriole/events{/privacy}","received_events_url":"https://api.github.com/users/xoriole/received_events","type":"User","site_admin":false},"assignees":[{"login":"xoriole","id":1442867,"avatar_url":"https://avatars2.githubusercontent.com/u/1442867?v=4","gravatar_id":"","url":"https://api.github.com/users/xoriole","html_url":"https://github.com/xoriole","followers_url":"https://api.github.com/users/xoriole/followers","following_url":"https://api.github.com/users/xoriole/following{/other_user}","gists_url":"https://api.github.com/users/xoriole/gists{/gist_id}","starred_url":"https://api.github.com/users/xoriole/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xoriole/subscriptions","organizations_url":"https://api.github.com/users/xoriole/orgs","repos_url":"https://api.github.com/users/xoriole/repos","events_url":"https://api.github.com/users/xoriole/events{/privacy}","received_events_url":"https://api.github.com/users/xoriole/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/Tribler/tribler/milestones/5","html_url":"https://github.com/Tribler/tribler/milestone/5","labels_url":"https://api.github.com/repos/Tribler/tribler/milestones/5/labels","id":281098,"number":5,"title":"V7.1: The token micro-economy","description":"Tor-like hidden services-like seeding into full swing\r\nend-to-end crypto\r\nCredit investments going live: #23.","creator":{"login":"synctext","id":325224,"avatar_url":"https://avatars0.githubusercontent.com/u/325224?v=4","gravatar_id":"","url":"https://api.github.com/users/synctext","html_url":"https://github.com/synctext","followers_url":"https://api.github.com/users/synctext/followers","following_url":"https://api.github.com/users/synctext/following{/other_user}","gists_url":"https://api.github.com/users/synctext/gists{/gist_id}","starred_url":"https://api.github.com/users/synctext/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/synctext/subscriptions","organizations_url":"https://api.github.com/users/synctext/orgs","repos_url":"https://api.github.com/users/synctext/repos","events_url":"https://api.github.com/users/synctext/events{/privacy}","received_events_url":"https://api.github.com/users/synctext/received_events","type":"User","site_admin":false},"open_issues":22,"closed_issues":175,"state":"open","created_at":"2013-03-05T13:43:28Z","updated_at":"2018-05-30T10:31:16Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2018-05-28T13:38:22Z","updated_at":"2018-05-30T11:43:57Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"**Content Popularity**\r\n\r\nWe have channels and torrents which comprise/represent content within Tribler. However, we do not yet have a mechanism to check if the content is popular, alive or even dead. This ticket is created as home for tracking development to address content popularity.\r\nParent issue #2783\r\n\r\nThe basic idea is to get a simple implementation operational first and incrementally build upon it, starting with torrent popularity.\r\n\r\n **Torrent popularity**\r\nCheck a set of torrents (max: 25) using torrent checker and gossip the popular results to a set of connected peers (max:25) regularly at a fixed interval of time.\r\n\r\n**Channel Popularity**\r\n*What are the indicators of a popular channel?*\r\n- Swarm size of comprising torrents\r\n- Votes on the channel\r\n- ...\r\n\r\nThese parameters can be used to derive a popularity index/score (very simple, initially) which can be used to rank the channels and disseminate the most popular channels to the peers regularly at a certain interval of time.\r\n\r\nIssue to address: *How to handle the conflicting response about the same torrent or channel from multiple peers?*\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/Tribler/tribler/issues/comments/393130728","html_url":"https://github.com/Tribler/tribler/issues/3649#issuecomment-393130728","issue_url":"https://api.github.com/repos/Tribler/tribler/issues/3649","id":393130728,"user":{"login":"ichorid","id":2509103,"avatar_url":"https://avatars1.githubusercontent.com/u/2509103?v=4","gravatar_id":"","url":"https://api.github.com/users/ichorid","html_url":"https://github.com/ichorid","followers_url":"https://api.github.com/users/ichorid/followers","following_url":"https://api.github.com/users/ichorid/following{/other_user}","gists_url":"https://api.github.com/users/ichorid/gists{/gist_id}","starred_url":"https://api.github.com/users/ichorid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ichorid/subscriptions","organizations_url":"https://api.github.com/users/ichorid/orgs","repos_url":"https://api.github.com/users/ichorid/repos","events_url":"https://api.github.com/users/ichorid/events{/privacy}","received_events_url":"https://api.github.com/users/ichorid/received_events","type":"User","site_admin":false},"created_at":"2018-05-30T11:43:57Z","updated_at":"2018-05-30T11:43:57Z","author_association":"CONTRIBUTOR","body":"One way to handle the problem of conflicting response is to do away with *absolute* measures of popularity, and instead use *relative* measures of popularity.\r\nFor example: \r\nNode1 makes popularity measurements for torrents A, B, C: A>B>C.\r\nNode2 does the same for torrents I,J,K: I>J>K.\r\nNode2 asks Node1 to provide some data on torrent popularity, and Node1 answers with \"A>B>C\".\r\nNode2 now has two partial orderings: \"I>J>K\", \"A>B>C\". It does not know, how A relates to K, so it does a minimal check itself, querying the number of seeds  for both K and A. That allows it to establish a complete ordering \"I>J>K>A>B>C\" in the case \"K>A\", or use some efficient sorting algorithm with minimum number of comparisons to handle the case where \"A>K\".\r\nThis mechanism allows Node2 to \"glue\" the orderings together. Moreover, one could do that in \"lazy\" mode, only doing it for the subset of torrents that user queried in the current view (e.g. search filter, channel view, etc.)\r\nThe conflicts like \"A>B vs B>A\" could be resolved the same way, by checking conflicting info immediately, and deciding for ourselves what is true.\r\n\r\nTo put it another way, when we do \"content popularity\", essentially we want to sort torrents according to some function. There are sorting algorithms that perform very well if the array to sort is composed of big chunks of already sorted data. We treat data from other nodes as this \"half-sorted\" data, and finish the sort ourselves, trying to do as little checks ourselves as possible.\r\n\r\nEssentially, we treat discrepancy in data provided to us by other peers as an error in sorting order that should be fixed by applying some sorting algorithm, with the real-world data getting the last word."}}
{"actor":{"display_login":"ichorid"}}