{"action":"created","issue":{"url":"https://api.github.com/repos/Tribler/tribler/issues/2131","repository_url":"https://api.github.com/repos/Tribler/tribler","labels_url":"https://api.github.com/repos/Tribler/tribler/issues/2131/labels{/name}","comments_url":"https://api.github.com/repos/Tribler/tribler/issues/2131/comments","events_url":"https://api.github.com/repos/Tribler/tribler/issues/2131/events","html_url":"https://github.com/Tribler/tribler/issues/2131","id":150842599,"number":2131,"title":"app-to-app communicator on Android","user":{"login":"synctext","id":325224,"avatar_url":"https://avatars.githubusercontent.com/u/325224?v=3","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},"labels":[{"url":"https://api.github.com/repos/Tribler/tribler/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/Tribler/tribler/labels/MSc-Thesis-Work","name":"MSc-Thesis-Work","color":"ed2cd6"},{"url":"https://api.github.com/repos/Tribler/tribler/labels/needs%20discussion","name":"needs discussion","color":"006b75"}],"state":"open","locked":false,"assignee":{"login":"Jaapp-","id":3542526,"avatar_url":"https://avatars.githubusercontent.com/u/3542526?v=3","gravatar_id":"","url":"https://api.github.com/users/Jaapp-","html_url":"https://github.com/Jaapp-","followers_url":"https://api.github.com/users/Jaapp-/followers","following_url":"https://api.github.com/users/Jaapp-/following{/other_user}","gists_url":"https://api.github.com/users/Jaapp-/gists{/gist_id}","starred_url":"https://api.github.com/users/Jaapp-/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Jaapp-/subscriptions","organizations_url":"https://api.github.com/users/Jaapp-/orgs","repos_url":"https://api.github.com/users/Jaapp-/repos","events_url":"https://api.github.com/users/Jaapp-/events{/privacy}","received_events_url":"https://api.github.com/users/Jaapp-/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/Tribler/tribler/milestones/19","html_url":"https://github.com/Tribler/tribler/milestones/Backlog","labels_url":"https://api.github.com/repos/Tribler/tribler/milestones/19/labels","id":951197,"number":19,"title":"Backlog","description":"","creator":{"login":"whirm","id":529494,"avatar_url":"https://avatars.githubusercontent.com/u/529494?v=3","gravatar_id":"","url":"https://api.github.com/users/whirm","html_url":"https://github.com/whirm","followers_url":"https://api.github.com/users/whirm/followers","following_url":"https://api.github.com/users/whirm/following{/other_user}","gists_url":"https://api.github.com/users/whirm/gists{/gist_id}","starred_url":"https://api.github.com/users/whirm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whirm/subscriptions","organizations_url":"https://api.github.com/users/whirm/orgs","repos_url":"https://api.github.com/users/whirm/repos","events_url":"https://api.github.com/users/whirm/events{/privacy}","received_events_url":"https://api.github.com/users/whirm/received_events","type":"User","site_admin":false},"open_issues":147,"closed_issues":47,"state":"open","created_at":"2015-01-26T12:02:36Z","updated_at":"2016-06-13T14:52:51Z","due_on":null,"closed_at":null},"comments":14,"created_at":"2016-04-25T12:31:37Z","updated_at":"2016-06-16T13:30:26Z","closed_at":null,"body":"Create a first app for automagic NAT puncturing and traversal on Android.\r\n\r\nThe app will connect to others which installed this app and try to establish a connection with them. This is the only functionality of this app: getting an UDP NAT puncture to others. Part of this functionality is discovering others and coordinating a puncture attempt. On this first screen of the app the currently discovered other app installs are shown. For each other user the status of the puncture is show in real-time. Builds upon the ideas of [this work](www.cs.ucr.edu/~zhiyunq/pub/sigcomm11_netpiculet.pdf).\r\n![image](https://cloud.githubusercontent.com/assets/325224/14783647/5c7851be-0af1-11e6-8561-1942820933b1.png)\r\n\r\n_Testing_ This app will be released on TUDelft Android account, source code on Github, and with Tweakers coverage we aim to obtain test users. \r\n\r\n_No-server-needed_ Only 1 app is needed, without any dedicated server software. TUDelft will provide two Nexus 6 test phones with two fixed wifi-based IPv4 numbers. These will run the dedicated app and serve as hard-coded servers running the client servers and facilitate peer discovery.\r\n\r\n_PEX_ PEX builds on the no-server-needed part to discover others. Simply use the Peer Exchange message to decentralise the peer discovery. Use a simple PEX implementation. Only [implement the ut_pex message](http://svn.tribler.org/abc/branches/boudewijn/beps/bep_0034.rst) without the added and dropped extras.\r\n\r\n_many ports_ One idea to evaluate is to open 60000 UDP listen ports from your app. This extreme approach would capture all incoming packets.\r\n\r\n_puncturing_ Implement the puncture-request message to conduct the actual NAT traversal with the help of another user. [Essential approach](http://dispersy.readthedocs.org/en/devel/system_overview.html#peer-discovery) description, see section [4 for another description](http://www.ds.ewi.tudelft.nl/fileadmin/pds/reports/2013/PDS-2013-002.pdf)  of this, plus [IETF draft](https://tools.ietf.org/html/draft-ietf-ppsp-peer-protocol-00#section-3.7)\r\n\r\nStarting point: https://github.com/MaStanford/AndroidSimpleNetworkInfo\r\n\r\nPossible sprints (2 weeks each):\r\n - [ ] Working app with 2 hard coded Android phones\r\n - [ ] Implement scalable peer discovery\r\n - [ ] Effective UDP puncture mechanism with green and red lights\r\n - [ ] Test with 20+ test users, polish, Tweakers promo, and release on Google Play"},"comment":{"url":"https://api.github.com/repos/Tribler/tribler/issues/comments/226485121","html_url":"https://github.com/Tribler/tribler/issues/2131#issuecomment-226485121","issue_url":"https://api.github.com/repos/Tribler/tribler/issues/2131","id":226485121,"user":{"login":"synctext","id":325224,"avatar_url":"https://avatars.githubusercontent.com/u/325224?v=3","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},"created_at":"2016-06-16T13:30:25Z","updated_at":"2016-06-16T13:30:25Z","body":"Fixes and polish:\r\n - 5 Second real-time update\r\n  - outgoing peers\r\n  - WAN address (not WAN vote) + \"local IP\"\r\n  - last ping to each peer\r\n - graceful handling of 4G to wifi switch.\r\n - permanent storage of the unique identifier. \r\n - Overwrite Peer-List duplicates upon arrival, only keep last incoming packet of same hash.\r\n - stability...."}}
{"actor":{"display_login":"synctext"}}