Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Federation Protocol #601

Closed
valentt opened this issue Aug 28, 2015 · 32 comments
Closed

Federation Protocol #601

valentt opened this issue Aug 28, 2015 · 32 comments

Comments

@valentt
Copy link

valentt commented Aug 28, 2015

Hi, first this as awesome chat, so far best I have used.

Have you considered creating Rocket.Chat so it can be decentralised but also federated with cluster of multiple Rocket.Chat servers ?

Use case:
Having branch offices offices around the world (or distributed islands of community wireless networks in our case) that each would run their own Rocket.Chat server but they would be part of one Rocket.Chat network so that any client connected to any servers sees all users and all rooms.

So if for some reason connectivity breaks (which happens more than we would like) clients at least have their own local server, and when connectivity is back then they join back with the rest of the Rocket.Chat network.

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

@rodrigok
Copy link
Member

This is very complex 😄 hehe

@valentt
Copy link
Author

valentt commented Aug 28, 2015

I would love to use Rocker.Chat instead of IRC and Jabber, and this is exactly how they are used. Probably needs a quite bit work on abstraction... and no, it definitely is not easy :)

@mitar
Copy link
Contributor

mitar commented Aug 28, 2015

You can always just decentralize MongoDB server.

@engelgabriel
Copy link
Member

Maybe implement the http://matrix.org/ spec?

@geekgonecrazy
Copy link
Contributor

This would be pretty cool. Might be good to take a look at this while working to make it play well in cluster / load balancing situations. #520

@marceloschmidt marceloschmidt added this to the Roadmap milestone Sep 21, 2015
@GrahamJenkins
Copy link

I'd like to add a sub feature request, it could be moved to a separate request depending on the maintainer's opinions.
I have a use case where several geographically oriented teams need to be able to manage their own teams/servers independently, however they want to share specific content with other teams/servers. If using Slack it is possible through integrations to use services such as sameroom.io or various other bridges, but it would be very helpful if it was possible to configure independent servers to sync/share defined content with other servers, or perhaps even a level of public sharing of specified content.
A feature like this would provide some functionality and ease of use similar to that of account-based tools such as skype, hangouts, etc, but still allow for the operation and administration of independent servers. I would be glad to discuss the potential use cases in more detail if that can clarify/help this request.

@engelgabriel
Copy link
Member

I understand your request @rendezvousIY , that's exactly what I believe we will be able to do if we implement this features. We plan to start taking a look at this after we release the 1.0

@engelgabriel
Copy link
Member

Hi @ara4n any thoughts on this one? Your input would be much appreciated.

@illicitonion
Copy link

Hi @engelgabriel! I work with @ara4n on matrix.org, and I've been taking a look around your Rocket.Chat world - it looks like Hubot is a great match for our node bridging library: https://github.com/matrix-org/matrix-appservice-bridge

We have a one-page example for a basic matrix-slack bridge https://github.com/matrix-org/matrix-appservice-bridge/blob/master/HOWTO.md - I imagine putting together a hubot script which sends every message it sees to a Matrix room, and which sends every Matrix message it sees to a Rocket.Chat room, would be pretty trivial.

If someone put together that bridge, chats could automatically become part of the federated Matrix world which would both open up to users of the systems people are writing Matrix bridges for (we have made usable progress on bridging Slack, IRC, Skype, and a few other things).

We'd love to work with you on this; I'd suggest you take a look at the one page HOWTO above, and see if you can get a quick Hubot script able to just send raw text messages both ways. From there, we can have a chat about where we may want to go.

Feel free to reply here, drop me an email (daniel@matrix.org), or come stop by a Matrix room (I just made #rocketchat:matrix.org which you can talk at by using https://matrix.org/blog/try-matrix-now/ ) if you need a hand with anything, or want to chat!

@engelgabriel
Copy link
Member

Hi @illicitonion

Thanks for the reply, I'll take a look at your links. I think it would be a nice first step, so lets do that, but my end goal would be to create a "native" capability via meteor package. :)

@ywecur
Copy link

ywecur commented Dec 12, 2015

+1

Would be awesome if you guys took a look at matrix.org

@engelgabriel
Copy link
Member

This is going to be big. We started the work on this, but had to deal with other priorities this week. We will resume next week.

Please join the discussion at https://demo.rocket.chat/channel/federation

Another source of inspiration for the work ahead of us:
https://github.com/matrix-org/matrix-appservice-irc/blob/master/HOWTO.md

@Sing-Li
Copy link
Member

Sing-Li commented Jan 31, 2016

Calling all early adopters .... Federate your Rocket.Chat tonight !!

Rocket.Chat federation is up and running thanks to the kind assistance of @ara4n and the friendly folks over at matrix.org !

Just add hubot-freddie and a Synapse Home Server:

https://www.npmjs.com/package/hubot-freddie

Please note that this is certainly Work-In-Progress - and is intended for early adopters ONLY.

You can track the action here at:

https://github.com/RocketChat/Rocket.Chat.Federation

Submit a PR - or star the project to cheer us on!

@engelgabriel
Copy link
Member

Take a look at:

@mitar
Copy link
Contributor

mitar commented Apr 5, 2017

Personally, I prefer orbit: https://github.com/orbitdb/orbit

It is build on top of IPFS, and this means that it is harder to attack the common transport layer, if it is used by many. See: http://mitar.tnode.com/post/146227562556/towards-layered-re-decentralized-web

But it is earlier in development than ssb.

@fabiomontefuscolo
Copy link
Contributor

fabiomontefuscolo commented Apr 12, 2017

My post is also related to #404

The XMPP protocol provides federated communication. I have my own XMPP server to talk with some rebel friends who reject WhatsApp, Telegram and other commercial solutions.

One server can have several users. Users in this server can talk with users from other server. Some implementations have feature like blacklist and white list, so you can define the boundaries of a cluster.

@childnode
Copy link

while I was looking for this and indeed was very confused because I thought rocket.chat is already based on matrix (but isn't?!):
aside the "official" bridge announced by @illicitonion another bridge out in the wild comes from @exul https://github.com/exul/matrix-rocketchat
also Google Summer of Code adresses this https://rocket.chat/docs/contributing/google-summer-of-code/

Rocket.Chat on Mesh Network

@engelgabriel engelgabriel changed the title Decentralised but federated cluster of multiple Rocket.Chat servers Federation Protocol Sep 20, 2017
@kvingedal
Copy link

kvingedal commented Jan 6, 2018

Following! I love rocket.chat and Matrix. If I was a developer I would be all over helping code this. I am starting to learn how to code for this very reason.

Our goal (10 years now) is to create networks of organizations that can organically link to other networks. For example in the old world of yahoo or google and even Facebook groups they are siloed groups of similar interest.. ultimately requiring them to merge. So if for example all the Save The Tee groups in San Francisco can link up in some way we can share information and bridge these groups. Then we link the save the tree groups in San Francisco to the save the tree groups in San Diego and so forth... this ultimately creates a Save The Trees group of California... which can link to other state networks and form a national network.

The goal of this process to is naturally break down silos and build ecosystems of communities so to speak without disturbing the autonomy of the original group. The eco systems link networks that need one another too. Those working to save the tree are also working with those helping the birds that live on the trees. If the trees are cut down that effects other systems such as the soil, rivers, aquatic life and everything down stream.

Networks of networks. Not sure if this makes sense? You have thousands of these networks that need to work together collectively. It would require us to join hundreds of groups without federated systems and approaches to bridge networks and groups :)

@HammyHavoc
Copy link
Contributor

@kvingedal Sounds similar to what Mastodon does, and is something I'm all for.

@ShalokShalom
Copy link

@kvingedal Nice idea. I participate in a couple of groups, who currently build their own solution.
I think it is slowly ready for one united solution, as you describe it.
How do you think could we solve the UI?
So, how to realize this:

"The goal of this process to is naturally break down silos and build ecosystems of communities so to speak without disturbing the autonomy of the original group."

I think its save to work with labels.

You create your own group and label it. So: Save the trees, save the birds.
Others can create the same. Then, there is one feed with all the "Save the trees" labels on it.
You can also choose multiple labels, so you see both, the "Save the trees" and all the "Save the birds" messages.

So it is flexible and easy.

@sampaiodiego sampaiodiego added Feature: Planned Planned Feature and removed Feature: Planned Planned Feature Feature: Request Requested Feature labels Mar 29, 2018
@pierreozoux
Copy link
Contributor

@Sing-Li Can we close this issue?
Also, it looks like it is matrix behind the scene, but I don't find it in the doc, nor in the code (probably didn't search enough).
Is it possible to federate with matrix too?
If yes, I'll take some time to improve the doc, and if you have some pointers, it would be amazing.
If not, is it planned? If yes where is the issue? If no issue, I still think we can close this one, and reopen one to track matrix support ;)

thanks!

@geekgonecrazy
Copy link
Contributor

Not currently using Matrix Protocol behind the scenes. So currently only possible between Rocket.Chat workspaces. My understanding is that we still plan to federate with Matrix.

I agree though we should close in favor of one tracking Matrix. I'm not sure if we have one. A quick search didn't yield a result

@reetp
Copy link

reetp commented Oct 22, 2019

I agree though we should close in favor of one tracking Matrix. I'm not sure if we have one. A quick search didn't yield a result

At least somewhere to keep all the info and links together.

@aWeinzierl
Copy link

federate with Matrix

any updates regarding that?

@alansikora
Copy link
Contributor

@aWeinzierl this is on our bucket list, but still not on the immediate plans. I will post a message in here when we get to this.

@StEvUgnIn
Copy link

StEvUgnIn commented Oct 11, 2020

@aWeinzierl this is on our bucket list, but still not on the immediate plans. I will post a message in here when we get to this.

Matrix does not have any IETF draft and I won't comment on their current state of decentralization.

@mitar
Copy link
Contributor

mitar commented Oct 12, 2020

I won't comment on their current state of decentralization.

Can you link to anything on this topic?

@ShalokShalom
Copy link

Idk about federation, but they have launched their p2p service

https://matrix.org/blog/2020/06/02/introducing-p-2-p-matrix/

@madguy02
Copy link
Contributor

Matrix and Rocket.Chat although serves the same purpose of async messaging, but are very different mission wise and hence architecture wise.

Federation Protocol of Matrix.org has gone through good amount of iterations and i think they are in a stable state now. Federation Protocol from Matrix is not gonna be a direct fit for Rocket.Chat... If we need federation for Rocket.Chat purposes, we might take some inspiration from the Federation Protocol (matrix) and develop it on our own. But if we are planning to use the Protocol without much changes then RC will have to go through good amount of changes architecture-wise before we can accommodate it.

I think @alansikora has done a good job in understanding the problem and producing a solution out quickly for people to try out (but this is no easy job)
But if we really want to build federation as a protocol for RC then that will require good research and a dedicated team to do so....

@ptman
Copy link

ptman commented May 27, 2022

#23688

@geekgonecrazy
Copy link
Contributor

Yeah: https://rocket.chat/press-releases/rocket-chat-leverages-matrix-protocol-for-decentralized-and-interoperable-communications

@engelgabriel
Copy link
Member

Closing this issue as Rocket.Chat is focused on fully adopting the Matrix.org protocol. We are planning further data model and architecture changes to fully embed the home server capabilities.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests