{"action":"created","issue":{"url":"https://api.github.com/repos/libp2p/go-libp2p/issues/425","repository_url":"https://api.github.com/repos/libp2p/go-libp2p","labels_url":"https://api.github.com/repos/libp2p/go-libp2p/issues/425/labels{/name}","comments_url":"https://api.github.com/repos/libp2p/go-libp2p/issues/425/comments","events_url":"https://api.github.com/repos/libp2p/go-libp2p/issues/425/events","html_url":"https://github.com/libp2p/go-libp2p/pull/425","id":360570614,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE1Nzg2NDcz","number":425,"title":"2018 Q4 OKR Planning","user":{"login":"diasdavid","id":1211152,"node_id":"MDQ6VXNlcjEyMTExNTI=","avatar_url":"https://avatars0.githubusercontent.com/u/1211152?v=4","gravatar_id":"","url":"https://api.github.com/users/diasdavid","html_url":"https://github.com/diasdavid","followers_url":"https://api.github.com/users/diasdavid/followers","following_url":"https://api.github.com/users/diasdavid/following{/other_user}","gists_url":"https://api.github.com/users/diasdavid/gists{/gist_id}","starred_url":"https://api.github.com/users/diasdavid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/diasdavid/subscriptions","organizations_url":"https://api.github.com/users/diasdavid/orgs","repos_url":"https://api.github.com/users/diasdavid/repos","events_url":"https://api.github.com/users/diasdavid/events{/privacy}","received_events_url":"https://api.github.com/users/diasdavid/received_events","type":"User","site_admin":false},"labels":[{"id":419430610,"node_id":"MDU6TGFiZWw0MTk0MzA2MTA=","url":"https://api.github.com/repos/libp2p/go-libp2p/labels/in%20progress","name":"in progress","color":"ededed","default":false}],"state":"open","locked":false,"assignee":{"login":"lgierth","id":19248,"node_id":"MDQ6VXNlcjE5MjQ4","avatar_url":"https://avatars0.githubusercontent.com/u/19248?v=4","gravatar_id":"","url":"https://api.github.com/users/lgierth","html_url":"https://github.com/lgierth","followers_url":"https://api.github.com/users/lgierth/followers","following_url":"https://api.github.com/users/lgierth/following{/other_user}","gists_url":"https://api.github.com/users/lgierth/gists{/gist_id}","starred_url":"https://api.github.com/users/lgierth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lgierth/subscriptions","organizations_url":"https://api.github.com/users/lgierth/orgs","repos_url":"https://api.github.com/users/lgierth/repos","events_url":"https://api.github.com/users/lgierth/events{/privacy}","received_events_url":"https://api.github.com/users/lgierth/received_events","type":"User","site_admin":false},"assignees":[{"login":"lgierth","id":19248,"node_id":"MDQ6VXNlcjE5MjQ4","avatar_url":"https://avatars0.githubusercontent.com/u/19248?v=4","gravatar_id":"","url":"https://api.github.com/users/lgierth","html_url":"https://github.com/lgierth","followers_url":"https://api.github.com/users/lgierth/followers","following_url":"https://api.github.com/users/lgierth/following{/other_user}","gists_url":"https://api.github.com/users/lgierth/gists{/gist_id}","starred_url":"https://api.github.com/users/lgierth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lgierth/subscriptions","organizations_url":"https://api.github.com/users/lgierth/orgs","repos_url":"https://api.github.com/users/lgierth/repos","events_url":"https://api.github.com/users/lgierth/events{/privacy}","received_events_url":"https://api.github.com/users/lgierth/received_events","type":"User","site_admin":false},{"login":"vyzo","id":36426,"node_id":"MDQ6VXNlcjM2NDI2","avatar_url":"https://avatars0.githubusercontent.com/u/36426?v=4","gravatar_id":"","url":"https://api.github.com/users/vyzo","html_url":"https://github.com/vyzo","followers_url":"https://api.github.com/users/vyzo/followers","following_url":"https://api.github.com/users/vyzo/following{/other_user}","gists_url":"https://api.github.com/users/vyzo/gists{/gist_id}","starred_url":"https://api.github.com/users/vyzo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vyzo/subscriptions","organizations_url":"https://api.github.com/users/vyzo/orgs","repos_url":"https://api.github.com/users/vyzo/repos","events_url":"https://api.github.com/users/vyzo/events{/privacy}","received_events_url":"https://api.github.com/users/vyzo/received_events","type":"User","site_admin":false},{"login":"Stebalien","id":310393,"node_id":"MDQ6VXNlcjMxMDM5Mw==","avatar_url":"https://avatars2.githubusercontent.com/u/310393?v=4","gravatar_id":"","url":"https://api.github.com/users/Stebalien","html_url":"https://github.com/Stebalien","followers_url":"https://api.github.com/users/Stebalien/followers","following_url":"https://api.github.com/users/Stebalien/following{/other_user}","gists_url":"https://api.github.com/users/Stebalien/gists{/gist_id}","starred_url":"https://api.github.com/users/Stebalien/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Stebalien/subscriptions","organizations_url":"https://api.github.com/users/Stebalien/orgs","repos_url":"https://api.github.com/users/Stebalien/repos","events_url":"https://api.github.com/users/Stebalien/events{/privacy}","received_events_url":"https://api.github.com/users/Stebalien/received_events","type":"User","site_admin":false},{"login":"raulk","id":1101242,"node_id":"MDQ6VXNlcjExMDEyNDI=","avatar_url":"https://avatars0.githubusercontent.com/u/1101242?v=4","gravatar_id":"","url":"https://api.github.com/users/raulk","html_url":"https://github.com/raulk","followers_url":"https://api.github.com/users/raulk/followers","following_url":"https://api.github.com/users/raulk/following{/other_user}","gists_url":"https://api.github.com/users/raulk/gists{/gist_id}","starred_url":"https://api.github.com/users/raulk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/raulk/subscriptions","organizations_url":"https://api.github.com/users/raulk/orgs","repos_url":"https://api.github.com/users/raulk/repos","events_url":"https://api.github.com/users/raulk/events{/privacy}","received_events_url":"https://api.github.com/users/raulk/received_events","type":"User","site_admin":false},{"login":"diasdavid","id":1211152,"node_id":"MDQ6VXNlcjEyMTExNTI=","avatar_url":"https://avatars0.githubusercontent.com/u/1211152?v=4","gravatar_id":"","url":"https://api.github.com/users/diasdavid","html_url":"https://github.com/diasdavid","followers_url":"https://api.github.com/users/diasdavid/followers","following_url":"https://api.github.com/users/diasdavid/following{/other_user}","gists_url":"https://api.github.com/users/diasdavid/gists{/gist_id}","starred_url":"https://api.github.com/users/diasdavid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/diasdavid/subscriptions","organizations_url":"https://api.github.com/users/diasdavid/orgs","repos_url":"https://api.github.com/users/diasdavid/repos","events_url":"https://api.github.com/users/diasdavid/events{/privacy}","received_events_url":"https://api.github.com/users/diasdavid/received_events","type":"User","site_admin":false},{"login":"whyrusleeping","id":1243164,"node_id":"MDQ6VXNlcjEyNDMxNjQ=","avatar_url":"https://avatars0.githubusercontent.com/u/1243164?v=4","gravatar_id":"","url":"https://api.github.com/users/whyrusleeping","html_url":"https://github.com/whyrusleeping","followers_url":"https://api.github.com/users/whyrusleeping/followers","following_url":"https://api.github.com/users/whyrusleeping/following{/other_user}","gists_url":"https://api.github.com/users/whyrusleeping/gists{/gist_id}","starred_url":"https://api.github.com/users/whyrusleeping/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whyrusleeping/subscriptions","organizations_url":"https://api.github.com/users/whyrusleeping/orgs","repos_url":"https://api.github.com/users/whyrusleeping/repos","events_url":"https://api.github.com/users/whyrusleeping/events{/privacy}","received_events_url":"https://api.github.com/users/whyrusleeping/received_events","type":"User","site_admin":false},{"login":"marten-seemann","id":1478487,"node_id":"MDQ6VXNlcjE0Nzg0ODc=","avatar_url":"https://avatars3.githubusercontent.com/u/1478487?v=4","gravatar_id":"","url":"https://api.github.com/users/marten-seemann","html_url":"https://github.com/marten-seemann","followers_url":"https://api.github.com/users/marten-seemann/followers","following_url":"https://api.github.com/users/marten-seemann/following{/other_user}","gists_url":"https://api.github.com/users/marten-seemann/gists{/gist_id}","starred_url":"https://api.github.com/users/marten-seemann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/marten-seemann/subscriptions","organizations_url":"https://api.github.com/users/marten-seemann/orgs","repos_url":"https://api.github.com/users/marten-seemann/repos","events_url":"https://api.github.com/users/marten-seemann/events{/privacy}","received_events_url":"https://api.github.com/users/marten-seemann/received_events","type":"User","site_admin":false}],"milestone":null,"comments":0,"created_at":"2018-09-15T19:52:48Z","updated_at":"2018-09-20T19:43:37Z","closed_at":null,"author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/libp2p/go-libp2p/pulls/425","html_url":"https://github.com/libp2p/go-libp2p/pull/425","diff_url":"https://github.com/libp2p/go-libp2p/pull/425.diff","patch_url":"https://github.com/libp2p/go-libp2p/pull/425.patch"},"body":"Ref: https://github.com/ipfs/pm/issues/698\r\n\r\nUrls:\r\n- [2018 Q3 Retrospective Document (shared with the whole Go Core Dev Team)](https://docs.google.com/document/d/15m28CgV8aksgHsS_MlQKJhTP0LtgYobIkOIuSXew4WE/edit#heading=h.7bczaod8nf6g). Please complete this ASAP.\r\n- [2018 OKR Spreadsheet](https://docs.google.com/spreadsheets/d/1HTXfgR5FyPTFhsTkFPRThkeMvHvCgJOaAs7BSl_vQ_0/edit#gid=2137336172)\r\n\r\nIt's time to do the OKR Planning for Q4 \\o/. This is the first time that the go-ipfs team is going to do it this way, you can find a lot of information at https://github.com/ipfs/pm/issues/698. Please make sure to read it to get the full context in how we are going to do this (Retrospective + Open OKR Planning)."},"comment":{"url":"https://api.github.com/repos/libp2p/go-libp2p/issues/comments/423308633","html_url":"https://github.com/libp2p/go-libp2p/pull/425#issuecomment-423308633","issue_url":"https://api.github.com/repos/libp2p/go-libp2p/issues/425","id":423308633,"node_id":"MDEyOklzc3VlQ29tbWVudDQyMzMwODYzMw==","user":{"login":"raulk","id":1101242,"node_id":"MDQ6VXNlcjExMDEyNDI=","avatar_url":"https://avatars0.githubusercontent.com/u/1101242?v=4","gravatar_id":"","url":"https://api.github.com/users/raulk","html_url":"https://github.com/raulk","followers_url":"https://api.github.com/users/raulk/followers","following_url":"https://api.github.com/users/raulk/following{/other_user}","gists_url":"https://api.github.com/users/raulk/gists{/gist_id}","starred_url":"https://api.github.com/users/raulk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/raulk/subscriptions","organizations_url":"https://api.github.com/users/raulk/orgs","repos_url":"https://api.github.com/users/raulk/repos","events_url":"https://api.github.com/users/raulk/events{/privacy}","received_events_url":"https://api.github.com/users/raulk/received_events","type":"User","site_admin":false},"created_at":"2018-09-20T19:43:37Z","updated_at":"2018-09-20T19:43:37Z","author_association":"CONTRIBUTOR","body":"In today's call we agreed to conduct the discussion for go-libp2p similar to [how js-libp2p is doing it](https://github.com/libp2p/js-libp2p/pull/247). Each of us posts what we want to focus on for Q4, why it's important, and what the outcome would be. If something needs doing, but you're not claiming it for yourself, state so.\r\n\r\n---\r\n\r\n## Ethereum 2.0 + libp2p\r\n\r\nEthereum is planning to be a major adopter of libp2p for sharding (Ethereum 2.0). Considerable research has gone into Gossipsub (with successful results), and current focus has shifted to is peer discovery simulations. The EF is developing a PoC on top of libp2p. The libp2p daemon is being relied on, so clients in other languages can create bindings to interact with libp2p (Java, Nim, etc). **The daemon should be a priority for Q4 (@vyzo, @bigs).** Moreover, the EF is funding a py-libp2p implementation through their Round 4 of developer grants. There's a lot going on, and there's a high confidence in choosing libp2p as their network layer; however, the decision is not formally made yet.\r\n\r\nSupporting the Ethereum Foundation, and in general the Ethereum ecosystem, as they continue evaluating libp2p should be a priority for Q4. Given my background in devp2p and Ethereum, I'm proposing to act as the point person, i.e. a bridge between both communities, facilitate discussions, review code, propose solutions, and support them where needed.\r\n\r\nEth2.0 Implementers Call #3 [9/13/2018]: https://www.youtube.com/watch?v=cp0LxJiyV3I\r\n\r\n## Connection tagging and connection manager\r\n\r\nSubsystems like DHT, pubsub, etc. tagging their important connections to prevent pruning was an objective for Q3. However, I only joined halfway through the quarter, so I'd like to take this up in Q4.\r\n\r\nHowever, for the connection manager to be truly useful, in my opinion it needs to be a bit more sophisticated. Some initial discussion here: [protocol weights in scoring algorithm](https://github.com/libp2p/go-libp2p-connmgr/issues/20); [batch vs. on-demand connection pruning](https://github.com/libp2p/go-libp2p-connmgr/issues/19).\r\n\r\nIn a broader sense, the purpose of the connection manager is to ensure an intelligent use of limited network-related resources (bandwidth, file descriptors, hard quotas, etc.) Some of the features we've discussed are:\r\n\r\n* temporary boosting allowances (e.g. for bursty protocols, e.g. Kademlia)\r\n* locking connections so they're protected from pruning.\r\n* polite, collaborative \"hey, i'm about to close this connection\" messages, giving the other party to ask for the connection to stay alive (if it's important for them)\r\n* polite \"backoff\" and \"go away\" messages\r\n* backpressure algorithms\r\n\r\nOn a whole, the idea is to evolve the connection manager into a [traffic shaping](https://en.wikipedia.org/wiki/Traffic_shaping) component, rather than a simple pruning mechanism. Part of this endeavour would be to write a spec.\r\n\r\n## Exploring alternative data structures for DHT\r\n\r\nThe [analysis: k-bucket underutilisation and excessive thrashing](https://github.com/libp2p/go-libp2p-kad-dht/issues/194) proved that the Kademlia routing table is not an efficient data structure for its purpose. While the bucket thrashing can be minimised by using a different heuristic, we are discarding lots of peers along the way regardless. Theoretically, strategically/selectively storing those peers can give us faster/indexed access to subtrees of the network, allowing us to bypass iterations of the Kademlia lookup (what I call _teleporting_).\r\n\r\nI've had follow-up discussions with @bigs and @jhiesey, and I'd like to research, develop, and test alternative data structures. An initial idea is a segmented heap, as posted here: https://github.com/libp2p/go-libp2p-kad-dht/issues/194#issuecomment-423191976.\r\n\r\nIdeally we'd finish Q4 with a way more efficient data structure that'll result in quicker DHT lookups."}}
{"actor":{"display_login":"raulk"}}