ergo icon indicating copy to clipboard operation
ergo copied to clipboard

s2s protocol / linking (or 'federation')

Open DanielOaks opened this issue 8 years ago • 10 comments

S2S linking can be useful, and working out a decent S2S protocol to do it is the best way to do things. Look at TS6/Insp and other suggestions to work something out, timestamping is good and I'd likely use that in any S2S proto we use.

DanielOaks avatar Apr 14 '16 20:04 DanielOaks

Investigating this with https://github.com/DanielOaks/dcmi/

DanielOaks avatar Sep 13 '16 12:09 DanielOaks

As a bit of an update, no progress on this as of yet. This is something that's likely to happen a fair while down the road as I really wanna explore alternate methods of linking servers together. If someone wants to experiment and try some stuff out, that's awesome! But something sorta pluggable along the lines of Insp's pluggable linking methods would be good for experimentation.

DanielOaks avatar Sep 25 '17 22:09 DanielOaks

I was wondering if a mesh network could be used to peform the linking of servers together I did spot this http://meshbird.com/ (I know it's node discovery probably isn't correct for irc but it's just more getting ideas on peforming the server linking)

Dreamwalker666 avatar Jan 18 '18 08:01 Dreamwalker666

Came across another peer2peer type network this is a library though https://github.com/weaveworks/mesh

I think it's an interesting idea to build on top of a fault tolerent network which can handle the routing of the messages.

Dreamwalker666 avatar Jan 19 '18 15:01 Dreamwalker666

Yeah, I have some rough thoughts about it around here.

I'd like something meshy, but I'm not sure anything existing is appropriate for the sorta CAP availability I'm looking to have (the sort that IRC has always had). This blog post is a good one for reference of the issues with traditional systems as applied directly to IRC, and what I'm looking to avoid.

DanielOaks avatar Jan 19 '18 20:01 DanielOaks

I know this is probably not what you have in mind, but s2s multi user chat in XMPP is actually quite similar to IRC and is a well proven and stable method.

Maybe enable Oragono to act as an XMPP server component (there is a stable API for it. That is for example how the excelled Biboumi XMPP to IRC gateway works: https://biboumi.louiz.org/ ) or include a cut-down s2s federation version of a xmpp server ( look here for a WIP Golang one: https://github.com/ortuman/jackal )?

That way IRC could be quite easily federated without reinventing the wheel :p

poVoq avatar Aug 25 '19 11:08 poVoq

I think XMPP federation and IRC federation solve somewhat different problems. As I understand it, XMPP is like e-mail: each user is associated with a particular server, so there's never any question about how to relay a message, it always goes to that user's authoritative server. (So, much like e-mail, the protocol itself doesn't address how to provide high availability.) In contrast, with IRC, users are associated with the network as a whole. So high availability is built into the concept of federation (if your server goes down, you expect to be able to connect transparently to a different server), but the server-to-server protocol and its implementations have to know more about the distributed state of the system.

slingamn avatar Sep 15 '19 00:09 slingamn

What if an inter-network protocol were created to let users on Libera join channels on irc.ergo.chat and be identified(*) as such, and vice versa?

(*) let's say the origin network 'must' warrant that the user is authenticated, that it's connecting on their behalf

awfulcooking avatar Sep 13 '21 01:09 awfulcooking

It'd probably be best to ask Libera about that. A lot of the reception we've seen to 'irc networks federating with each other intentionally' has been that it's a bit of a mis-feature, or something that most (especially the larger) networks aren't that interested in. That's why we've mostly focused on relaymsg and features to try and make network linking bots more easy, rather than a creating a cross-network federation protocol or something like that.

DanielOaks avatar Sep 13 '21 02:09 DanielOaks

Mom: "If $BIG_IRC_NETWORK asked you to jump off a cliff would you do it too?" ergo.chat:

https://user-images.githubusercontent.com/62954746/133017845-8fc67169-dd5c-4b1f-a270-9954ee0f2d18.mp4

awfulcooking avatar Sep 13 '21 03:09 awfulcooking

Why not implement every s2s protocol, so people can use ergo for linking otherwise incompatible servers?

hello-smile6 avatar Sep 26 '22 04:09 hello-smile6

Cool would be actually if you could link up with Rocket Chat: https://docs.rocket.chat/guides/administration/admin-panel/settings/irc-federation

poVoq avatar Sep 26 '22 04:09 poVoq

Cool would be actually if you could link up with Rocket Chat: https://docs.rocket.chat/guides/administration/admin-panel/settings/irc-federation

What s2s protocol does that use? (Are you on the IRC channel?)

hello-smile6 avatar Sep 26 '22 04:09 hello-smile6

This is no longer planned; see #1532 for current approaches.

slingamn avatar Apr 19 '23 18:04 slingamn