wireapp / wireapp/wire-server

Implement XMPP federation

Open
#631 34 comments 90 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Haskell
Stars
2.8k
Forks
334
Avg merge
1d 7h
Merged PRs (30d)
50

Description

I can't remember where or from who, but a few months ago I picked up a message that Wire wanted to implement federation between Wire servers.

I just want to give you guys a giant heads-up for the idea and meanwhile suggest using the XMPP protocol specifically for doing so. While it might seem a bit harder at first than just specifying your own custom protocol, XMPP is a very solid and extensible protocol with 20 years of R&D invested into it.

It's possible to cherry-pick extensions that make sense for Wire and there is a lot of tooling available for speaking XMPP ([1], [2], [3]) in Haskell.

As an added benefit, federating over XMPP allows all Wire users to chat with existing users on Jabber and to join existing public Jabber chat rooms. It would be an awesome step in the direction of an open federated chat network instead of a group of silo'd private solutions.

I'm sure if you have questions or doubts regarding this, there would be plenty of people with thorough knowledge on XMPP federation that are willing to help you out. ([1], [2], [3])

EDIT: some more thoughts can be found in this comment: https://github.com/wireapp/wire-server/issues/631#issuecomment-502490687

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the XMPP federation proposal and the additional thoughts linked in the issue, then review the Wire server architecture to identify relevant entry points. Done would require an agreed federation scope and implementation plan; the issue names no target files or tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
backend, distributed-systems, networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.