RocketChat / Rocket.Chat

The communications platform that puts data protection first.
https://rocket.chat/
Other
40.65k stars 10.65k forks source link

Federation Protocol #601

Closed valentt closed 1 year ago

valentt commented 9 years ago

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 commented 9 years ago

This is very complex :smile: hehe

valentt commented 9 years ago

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 commented 9 years ago

You can always just decentralize MongoDB server.

engelgabriel commented 9 years ago

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

geekgonecrazy commented 9 years ago

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

GrahamJenkins commented 9 years ago

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 commented 9 years ago

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 commented 9 years ago

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

illicitonion commented 9 years ago

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 commented 9 years ago

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 commented 8 years ago

+1

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

engelgabriel commented 8 years ago

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 commented 8 years ago

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 commented 7 years ago

Take a look at:

mitar commented 7 years ago

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 commented 7 years ago

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 commented 7 years ago

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

kvingedal commented 6 years ago

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 commented 6 years ago

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

ShalokShalom commented 6 years ago

@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.

pierreozoux commented 5 years ago

@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 commented 5 years ago

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 commented 5 years ago

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 commented 4 years ago

federate with Matrix

any updates regarding that?

alansikora commented 4 years ago

@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 commented 4 years ago

@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 commented 4 years ago

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

Can you link to anything on this topic?

ShalokShalom commented 4 years ago

Idk about federation, but they have launched their p2p service

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

madguy02 commented 4 years ago

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 commented 2 years ago

23688

geekgonecrazy commented 2 years ago

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

engelgabriel commented 1 year ago

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.