{"action":"created","issue":{"url":"https://api.github.com/repos/weechat/weechat/issues/385","labels_url":"https://api.github.com/repos/weechat/weechat/issues/385/labels{/name}","comments_url":"https://api.github.com/repos/weechat/weechat/issues/385/comments","events_url":"https://api.github.com/repos/weechat/weechat/issues/385/events","html_url":"https://github.com/weechat/weechat/issues/385","id":66799447,"number":385,"title":"RFC: enhancement: native RobustIRC support","user":{"login":"stapelberg","id":55506,"avatar_url":"https://avatars.githubusercontent.com/u/55506?v=3","gravatar_id":"","url":"https://api.github.com/users/stapelberg","html_url":"https://github.com/stapelberg","followers_url":"https://api.github.com/users/stapelberg/followers","following_url":"https://api.github.com/users/stapelberg/following{/other_user}","gists_url":"https://api.github.com/users/stapelberg/gists{/gist_id}","starred_url":"https://api.github.com/users/stapelberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stapelberg/subscriptions","organizations_url":"https://api.github.com/users/stapelberg/orgs","repos_url":"https://api.github.com/users/stapelberg/repos","events_url":"https://api.github.com/users/stapelberg/events{/privacy}","received_events_url":"https://api.github.com/users/stapelberg/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/weechat/weechat/labels/enhancement","name":"enhancement","color":"409de5"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":13,"created_at":"2015-04-07T07:02:03Z","updated_at":"2015-04-08T09:54:13Z","closed_at":null,"body":"I’m one of the developers of http://robustirc.net/. See http://robustirc.net/docs.html for more details, but in a nutshell, it’s an IRC network written on top of https://raftconsensus.github.io/ which doesn’t suffer from netsplits. To not be affected by network issues between the client and the IRC servers, clients should use the RobustSession protocol which wraps IRC in a connection-independent HTTPS/JSON-based transport, see http://robustirc.net/docs/robustsession.html for details.\r\n\r\nCurrently, we offer a program called the RobustIRC bridge, which you can configure as a proxy server in WeeChat. The bridge then does the conversion (bridging) from IRC to IRC in RobustSession.\r\n\r\nI intend to submit a pull request for WeeChat to talk RobustSession natively, i.e. without the bridge. Would such a pull request be accepted?\r\n\r\nThank you."},"comment":{"url":"https://api.github.com/repos/weechat/weechat/issues/comments/90866370","html_url":"https://github.com/weechat/weechat/issues/385#issuecomment-90866370","issue_url":"https://api.github.com/repos/weechat/weechat/issues/385","id":90866370,"user":{"login":"stapelberg","id":55506,"avatar_url":"https://avatars.githubusercontent.com/u/55506?v=3","gravatar_id":"","url":"https://api.github.com/users/stapelberg","html_url":"https://github.com/stapelberg","followers_url":"https://api.github.com/users/stapelberg/followers","following_url":"https://api.github.com/users/stapelberg/following{/other_user}","gists_url":"https://api.github.com/users/stapelberg/gists{/gist_id}","starred_url":"https://api.github.com/users/stapelberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stapelberg/subscriptions","organizations_url":"https://api.github.com/users/stapelberg/orgs","repos_url":"https://api.github.com/users/stapelberg/repos","events_url":"https://api.github.com/users/stapelberg/events{/privacy}","received_events_url":"https://api.github.com/users/stapelberg/received_events","type":"User","site_admin":false},"created_at":"2015-04-08T09:54:13Z","updated_at":"2015-04-08T09:54:13Z","body":"> Why is RobustSession necessary at all for improving robustness?\r\n\r\nSo that individual TCP connection failures are irrelevant.\r\n\r\n> Why the specific composition of HTTP and JSON?\r\n\r\nBecause HTTP and JSON are very widely available building blocks.\r\n\r\n> Also, why the necessity for one complete HTTP GET request per IRC frame?\r\n\r\nThat’s not how it works. The HTTP GET is long-running and a single IRC message is sent as an HTTP chunk. In practice, a single HTTP GET will transport hundreds of IRC messages.\r\n\r\n> What if there are multiple events in the same timeslice?\r\n\r\nWhat do you mean by timeslice?\r\n\r\n> How does RobustIRC server handle actively hostile nodes w.r.t. raft consensus?\r\n\r\nIt doesn’t. You need to protect your network from actively malicious nodes, raft doesn’t protect you against that.\r\n\r\nLet me know if any of my explanations were unclear and I’ll try to be more verbose (ideally you’d ask a more specific question).\r\n"}}